diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0ab452e1..19b3a7d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -192,7 +192,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v3.6.0 with: - node-version: 16.x + node-version: 18.x - name: Download a Build Artifact uses: actions/download-artifact@v3.0.2 @@ -203,12 +203,20 @@ jobs: - name: Extract Build run: | mkdir -p win - tar -xzf $env:GITHUB_WORKSPACE\drop\wiki-js.tar.gz -C $env:GITHUB_WORKSPACE\win --exclude=node_modules + tar -xzf $env:GITHUB_WORKSPACE\drop\wiki-js.tar.gz -C $env:GITHUB_WORKSPACE\win + Copy-Item win\node_modules\extract-files\package.json patch-extractfile.json -Force + Remove-Item -Path win\node_modules -Force -Recurse - name: Install Dependencies - run: yarn --production --frozen-lockfile --non-interactive + run: | + yarn --production --frozen-lockfile --non-interactive + yarn patch-package working-directory: win + - name: Fix patched packages + run: | + Copy-Item patch-extractfile.json win\node_modules\extract-files\package.json -Force + - name: Create Bundle run: tar -czf wiki-js-windows.tar.gz -C $env:GITHUB_WORKSPACE\win . diff --git a/.nvmrc b/.nvmrc index 0c6886ca..860cc500 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v12.16.3 +v18.17.1 diff --git a/README.md b/README.md index 4263a36b..fc835933 100644 --- a/README.md +++ b/README.md @@ -85,11 +85,6 @@ Support this project by becoming a sponsor. Your name will show up in the Contri - - - - - @@ -99,6 +94,11 @@ Support this project by becoming a sponsor. Your name will show up in the Contri + + + + - - - -
+ + + + Alexander Casassovici
(@alexksso) @@ -119,6 +119,13 @@ Support this project by becoming a sponsor. Your name will show up in the Contri
+ + + +
Jay Daley
(@JayDaley) @@ -129,8 +136,6 @@ Support this project by becoming a sponsor. Your name will show up in the Contri Oleksii
(@idokka)
@@ -141,12 +146,7 @@ Support this project by becoming a sponsor. Your name will show up in the Contri - - - - + @@ -187,11 +187,11 @@ Support this project by becoming a sponsor. Your name will show up in the Contri - MaFarine ([@MaFarine](https://github.com/MaFarine)) - Marcilio Leite Neto ([@marclneto](https://github.com/marclneto)) - Mattias Johnson ([@mattiasJohnson](https://github.com/mattiasJohnson)) +- Max Ricketts-Uy ([@MaxRickettsUy](https://github.com/MaxRickettsUy)) - -- Max Ricketts-Uy ([@MaxRickettsUy](https://github.com/MaxRickettsUy)) + - Mickael Asseline ([@PAPAMICA](https://github.com/PAPAMICA)) - Mitchell Rowton ([@mrowton](https://github.com/mrowton)) - M. Scott Ford ([@mscottford](https://github.com/mscottford)) @@ -211,10 +211,13 @@ Support this project by becoming a sponsor. Your name will show up in the Contri - Tyler Denman ([@tylerguy](https://github.com/tylerguy)) - Victor Bilgin ([@vbilgin](https://github.com/vbilgin)) - VMO Solutions ([@vmosolutions](https://github.com/vmosolutions)) +- Yu Yongwoo ([@uyu423](https://github.com/uyu423)) - ameyrakheja ([@ameyrakheja](https://github.com/ameyrakheja)) - aniketpanjwani ([@aniketpanjwani](https://github.com/aniketpanjwani)) - aytaa ([@aytaa](https://github.com/aytaa)) +- cesar ([@cesarnr21](https://github.com/cesarnr21)) - chaee ([@chaee](https://github.com/chaee)) +- lwileczek ([@lwileczek](https://github.com/lwileczek)) - magicpotato ([@fortheday](https://github.com/fortheday)) - motoacs ([@motoacs](https://github.com/motoacs)) - muzian666 ([@muzian666](https://github.com/muzian666)) @@ -397,6 +400,7 @@ Thank you to all our patrons! 🙏 [[Become a patron](https://www.patreon.com/re
+- Aeternum - Al Romano - Alex Balabanov - Alex Milanov @@ -421,11 +425,11 @@ Thank you to all our patrons! 🙏 [[Become a patron](https://www.patreon.com/re - Ian - Imari Childress - Iskander Callos -- Josh Stewart +- Josh Stewart - Justin Dunsworth - Keir - Loïc CRAMPON diff --git a/dev/build-arm/Dockerfile b/dev/build-arm/Dockerfile index a82adb5b..01138056 100644 --- a/dev/build-arm/Dockerfile +++ b/dev/build-arm/Dockerfile @@ -1,20 +1,22 @@ # ========================= # --- BUILD NPM MODULES --- # ========================= -FROM node:16-alpine AS build +FROM node:18-alpine AS build RUN apk add yarn g++ make cmake python3 --no-cache WORKDIR /wiki COPY ./package.json ./package.json +COPY ./patches ./patches RUN yarn --production --frozen-lockfile --non-interactive --network-timeout 100000 +RUN yarn patch-package # =============== # --- Release --- # =============== -FROM node:16-alpine +FROM node:18-alpine LABEL maintainer="requarks.io" RUN apk add bash curl git openssh gnupg sqlite --no-cache && \ diff --git a/dev/build/Dockerfile b/dev/build/Dockerfile index a2f807f6..adc5bfc7 100644 --- a/dev/build/Dockerfile +++ b/dev/build/Dockerfile @@ -1,7 +1,7 @@ # ==================== # --- Build Assets --- # ==================== -FROM node:16-alpine AS assets +FROM node:18-alpine AS assets RUN apk add yarn g++ make cmake python3 --no-cache @@ -9,6 +9,7 @@ WORKDIR /wiki COPY ./client ./client COPY ./dev ./dev +COPY ./patches ./patches COPY ./package.json ./package.json COPY ./.babelrc ./.babelrc COPY ./.eslintignore ./.eslintignore @@ -19,11 +20,12 @@ RUN yarn --frozen-lockfile --non-interactive RUN yarn build RUN rm -rf /wiki/node_modules RUN yarn --production --frozen-lockfile --non-interactive +RUN yarn patch-package # =============== # --- Release --- # =============== -FROM node:16-alpine +FROM node:18-alpine LABEL maintainer="requarks.io" RUN apk add bash curl git openssh gnupg sqlite --no-cache && \ diff --git a/dev/containers/Dockerfile b/dev/containers/Dockerfile index 34e5c016..36a777f8 100644 --- a/dev/containers/Dockerfile +++ b/dev/containers/Dockerfile @@ -1,7 +1,7 @@ # -- DEV DOCKERFILE -- # -- DO NOT USE IN PRODUCTION! -- -FROM node:14 +FROM node:18 LABEL maintainer "requarks.io" RUN apt-get update && \ diff --git a/dev/containers/docker-compose.yml b/dev/containers/docker-compose.yml index f5b3ac81..147d81ae 100644 --- a/dev/containers/docker-compose.yml +++ b/dev/containers/docker-compose.yml @@ -5,7 +5,7 @@ version: "3" services: db: container_name: wiki-db - image: postgres:9-alpine + image: postgres:15-alpine environment: POSTGRES_DB: wiki POSTGRES_PASSWORD: wikijsrocks diff --git a/dev/examples/docker-compose.yml b/dev/examples/docker-compose.yml index 28009b07..f35290fb 100644 --- a/dev/examples/docker-compose.yml +++ b/dev/examples/docker-compose.yml @@ -2,7 +2,7 @@ version: "3" services: db: - image: postgres:11-alpine + image: postgres:15-alpine environment: POSTGRES_DB: wiki POSTGRES_PASSWORD: wikijsrocks diff --git a/package.json b/package.json index ed85a91e..96ab140f 100644 --- a/package.json +++ b/package.json @@ -7,11 +7,12 @@ "dev": true, "scripts": { "start": "node server", - "dev": "node dev", - "build": "webpack --profile --config dev/webpack/webpack.prod.js", - "watch": "webpack --config dev/webpack/webpack.dev.js", + "dev": "NODE_OPTIONS=--openssl-legacy-provider node dev", + "build": "NODE_OPTIONS=--openssl-legacy-provider webpack --profile --config dev/webpack/webpack.prod.js", + "watch": "NODE_OPTIONS=--openssl-legacy-provider webpack --config dev/webpack/webpack.dev.js", "test": "eslint --format codeframe --ext .js,.vue . && pug-lint server/views && jest", - "cypress:open": "cypress open" + "cypress:open": "cypress open", + "postinstall": "patch-package" }, "repository": { "type": "git", @@ -117,6 +118,7 @@ "markdown-it-mark": "3.0.1", "markdown-it-mathjax": "2.0.0", "markdown-it-multimd-table": "4.0.3", + "markdown-it-pivot-table": "1.0.5", "markdown-it-sub": "1.0.0", "markdown-it-sup": "1.0.0", "markdown-it-task-lists": "2.1.1", @@ -154,12 +156,14 @@ "passport-saml": "3.2.4", "passport-slack-oauth2": "1.1.1", "passport-twitch-strategy": "2.2.0", + "patch-package": "8.0.0", "pem-jwk": "2.0.0", "pg": "8.9.0", "pg-hstore": "2.3.4", "pg-pubsub": "0.5.0", "pg-query-stream": "4.3.0", "pg-tsquery": "8.4.1", + "postinstall-postinstall": "2.1.0", "pug": "3.0.2", "punycode": "2.3.0", "qr-image": "3.2.0", diff --git a/patches/extract-files+9.0.0.patch b/patches/extract-files+9.0.0.patch new file mode 100644 index 00000000..68197308 --- /dev/null +++ b/patches/extract-files+9.0.0.patch @@ -0,0 +1,14 @@ +diff --git a/node_modules/extract-files/package.json b/node_modules/extract-files/package.json +index 636fa03..1b75f79 100644 +--- a/node_modules/extract-files/package.json ++++ b/node_modules/extract-files/package.json +@@ -34,6 +34,9 @@ + "import": "./public/index.mjs", + "require": "./public/index.js" + }, ++ "./public/extractFiles": "./public/extractFiles.js", ++ "./public/isExtractableFile": "./public/isExtractableFile.js", ++ "./public/ReactNativeFile": "./public/ReactNativeFile.js", + "./public/": "./public/", + "./package": "./package.json", + "./package.json": "./package.json" diff --git a/server/index.js b/server/index.js index 7cdb4f80..923680e5 100644 --- a/server/index.js +++ b/server/index.js @@ -11,7 +11,7 @@ const { gte } = require('semver') // ---------------------------------------- // Check Node.js version // ---------------------------------------- -if (gte(process.version, '18.0.0')) { +if (gte(process.version, '21.0.0')) { console.error('You\'re using an unsupported Node.js version. Please read the requirements.') process.exit(1) } diff --git a/server/models/users.js b/server/models/users.js index facb158a..33f6b24f 100644 --- a/server/models/users.js +++ b/server/models/users.js @@ -866,7 +866,7 @@ module.exports = class User extends Model { } const usr = await WIKI.models.users.query().findById(context.req.user.id).select('providerKey') const provider = _.find(WIKI.auth.strategies, ['key', usr.providerKey]) - return provider.logout ? provider.logout(provider.config) : '/' + return provider.logout ? provider.logout(provider.config, context) : '/' } static async getGuestUser () { diff --git a/server/modules/authentication/keycloak/authentication.js b/server/modules/authentication/keycloak/authentication.js index ce9a00c5..34ceb5ea 100644 --- a/server/modules/authentication/keycloak/authentication.js +++ b/server/modules/authentication/keycloak/authentication.js @@ -21,7 +21,7 @@ module.exports = { clientSecret: conf.clientSecret, callbackURL: conf.callbackURL, passReqToCallback: true - }, async (req, accessToken, refreshToken, profile, cb) => { + }, async (req, accessToken, refreshToken, results, profile, cb) => { let displayName = profile.username if (_.isString(profile.fullName) && profile.fullName.length > 0) { displayName = profile.fullName @@ -36,6 +36,7 @@ module.exports = { picture: '' } }) + req.session.keycloak_id_token = results.id_token cb(null, user) } catch (err) { cb(err, null) @@ -43,11 +44,22 @@ module.exports = { }) ) }, - logout (conf) { + logout (conf, context) { if (!conf.logoutUpstream) { return '/' } else if (conf.logoutURL && conf.logoutURL.length > 5) { - return `${conf.logoutURL}?redirect_uri=${encodeURIComponent(WIKI.config.host)}` + const idToken = context.req.session.keycloak_id_token + const redirURL = encodeURIComponent(WIKI.config.host) + if (conf.logoutUpstreamRedirectLegacy) { + // keycloak < 18 + return `${conf.logoutURL}?redirect_uri=${redirURL}` + } else if (idToken) { + // keycloak 18+ + return `${conf.logoutURL}?post_logout_redirect_uri=${redirURL}&id_token_hint=${idToken}` + } else { + // fall back to no redirect if keycloak_id_token isn't available + return conf.logoutURL + } } else { WIKI.logger.warn('Keycloak logout URL is not configured!') return '/' diff --git a/server/modules/authentication/keycloak/definition.yml b/server/modules/authentication/keycloak/definition.yml index d4ab044c..97453b84 100644 --- a/server/modules/authentication/keycloak/definition.yml +++ b/server/modules/authentication/keycloak/definition.yml @@ -57,4 +57,9 @@ props: title: Logout Endpoint URL hint: e.g. https://KEYCLOAK-HOST/auth/realms/YOUR-REALM/protocol/openid-connect/logout order: 9 + logoutUpstreamRedirectLegacy: + type: Boolean + title: Legacy Logout Redirect + hint: Pass the legacy 'redirect_uri' parameter to the logout endpoint. Leave disabled for Keycloak 18 and above. + order: 10 diff --git a/server/modules/authentication/saml/authentication.js b/server/modules/authentication/saml/authentication.js index 6eeef27a..13248907 100644 --- a/server/modules/authentication/saml/authentication.js +++ b/server/modules/authentication/saml/authentication.js @@ -56,6 +56,26 @@ module.exports = { picture: _.get(profile, conf.mappingPicture, '') } }) + + // map users provider groups to wiki groups with the same name, and remove any groups that don't match + // Code copied from the LDAP implementation with a slight variation on the field we extract the value from + // In SAML v2 groups come in profile.attributes and can be 1 string or an array of strings + if (conf.mapGroups) { + const maybeArrayOfGroups = _.get(profile.attributes, conf.mappingGroups) + const groups = (maybeArrayOfGroups && !_.isArray(maybeArrayOfGroups)) ? [maybeArrayOfGroups] : maybeArrayOfGroups + + if (groups && _.isArray(groups)) { + const currentGroups = (await user.$relatedQuery('groups').select('groups.id')).map(g => g.id) + const expectedGroups = Object.values(WIKI.auth.groups).filter(g => groups.includes(g.name)).map(g => g.id) + for (const groupId of _.difference(expectedGroups, currentGroups)) { + await user.$relatedQuery('groups').relate(groupId) + } + for (const groupId of _.difference(currentGroups, expectedGroups)) { + await user.$relatedQuery('groups').unrelate().where('groupId', groupId) + } + } + } + cb(null, user) } catch (err) { cb(err, null) diff --git a/server/modules/authentication/saml/definition.yml b/server/modules/authentication/saml/definition.yml index bfb24d15..c39dd731 100644 --- a/server/modules/authentication/saml/definition.yml +++ b/server/modules/authentication/saml/definition.yml @@ -162,3 +162,15 @@ props: default: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/picture' hint: The field storing the user avatar picture. Can be a variable name or a URI-formatted string. order: 43 + mapGroups: + type: Boolean + title: Map Groups + hint: Map groups matching names from the provider user groups. User Groups Field Mapping must also be defined for this to work. Note this will remove any groups the user has that doesn't match any group from the provider. + default: false + order: 44 + mappingGroups: + title: User Groups Field Mapping + type: String + default: 'memberOf' + hint: The field storing the user groups attribute (when Map Groups is enabled). Can be a variable name or a URI-formatted string. + order: 45 diff --git a/server/modules/rendering/html-image-prefetch/definition.yml b/server/modules/rendering/html-image-prefetch/definition.yml index bf7a65df..4a4d2b14 100644 --- a/server/modules/rendering/html-image-prefetch/definition.yml +++ b/server/modules/rendering/html-image-prefetch/definition.yml @@ -1,6 +1,6 @@ key: htmlImagePrefetch title: Image Prefetch -description: Prefetch remotely rendered images (korki/plantuml) +description: Prefetch remotely rendered images (kroki/plantuml) author: requarks.io icon: mdi-cloud-download-outline enabledDefault: false diff --git a/server/modules/rendering/markdown-pivot-table/definition.yml b/server/modules/rendering/markdown-pivot-table/definition.yml new file mode 100644 index 00000000..415c9087 --- /dev/null +++ b/server/modules/rendering/markdown-pivot-table/definition.yml @@ -0,0 +1,8 @@ +key: markdownPivotTable +title: Pivot Table +description: Add pivot table support +author: jaeseopark +icon: mdi-table +enabledDefault: false +dependsOn: markdownCore +props: {} diff --git a/server/modules/rendering/markdown-pivot-table/renderer.js b/server/modules/rendering/markdown-pivot-table/renderer.js new file mode 100644 index 00000000..8e4cb246 --- /dev/null +++ b/server/modules/rendering/markdown-pivot-table/renderer.js @@ -0,0 +1,7 @@ +const pivotTable = require('markdown-it-pivot-table') + +module.exports = { + init (md) { + md.use(pivotTable) + } +} diff --git a/yarn.lock b/yarn.lock index 19181d2b..d7003475 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4352,6 +4352,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + abab@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" @@ -6355,6 +6360,14 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -6540,6 +6553,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.7.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -6922,6 +6940,11 @@ component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@^1.3.0: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +component-props@*: + version "1.1.1" + resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944" + integrity sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q== + compose-function@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" @@ -7302,6 +7325,15 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -9886,6 +9918,13 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -10090,6 +10129,16 @@ fs-extra@^8.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" @@ -10586,6 +10635,13 @@ graphql@15.3.0, "graphql@>=0.9.4 <0.11", graphql@^0.10.0, graphql@^0.10.3, graph resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.3.0.tgz#3ad2b0caab0d110e3be4a5a9b2aa281e362b5278" integrity sha512-GTCJtzJmkFLWRfFJuoo9RWWa/FfamUHgiFosxi/X1Ani4AVWbeyBenZTNX6dM+7WSbbFfTo/25eh0LLkwHMw2w== +group-by@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/group-by/-/group-by-0.0.1.tgz#857620575f6714786f8d86bb19fd13e188dd68a4" + integrity sha512-qHyGGbMxDq0vkOvSmHdGHtF8dSah48xQ0aw3T8QYgr6Mcsrh6Ib/JKqfCuPkrsZCdL0fJyteqQa5TJWv6kpqDA== + dependencies: + to-function "*" + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -11731,7 +11787,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -12348,6 +12404,13 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stable-stringify@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== + dependencies: + jsonify "^0.0.1" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -12411,6 +12474,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + jsonwebtoken@9.0.0, jsonwebtoken@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" @@ -12497,6 +12565,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + klaw@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" @@ -13115,6 +13190,15 @@ markdown-it-multimd-table@4.0.3: dependencies: markdown-it "^11.0.0" +markdown-it-pivot-table@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/markdown-it-pivot-table/-/markdown-it-pivot-table-1.0.5.tgz#53a9f5032d3ef1e5e9f7a8f94495b8ce113a6ac8" + integrity sha512-LJzfG7BuyW6STQ1pFpnoNHPlf3qfVqWVUqV9zJWwENCyEH0aSgGqnE5bcfZ5rc4aG9z1XTu7d4kppxhQBqlRag== + dependencies: + group-by "^0.0.1" + nd-table "^1.2.2" + string-math "^1.2.2" + markdown-it-sub@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz#375fd6026eae7ddcb012497f6411195ea1e3afe8" @@ -13427,6 +13511,11 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -13774,6 +13863,11 @@ ncp@~2.0.0: resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= +nd-table@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/nd-table/-/nd-table-1.2.2.tgz#9bfcf424fdd865544b27dd6761a8ab65810e3168" + integrity sha512-T/ALZyo4g15iRJ9TK7mo9Ny0CQvYcDGSZ8k9/6/CpGIisfITm91skQzXYas2ALyhIafxV4bmcL2gzCFh1cJCpQ== + needle@^2.2.1: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" @@ -14379,6 +14473,14 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" @@ -14447,7 +14549,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -14901,6 +15003,27 @@ passport@^0.6.0: pause "0.0.1" utils-merge "^1.0.1" +patch-package@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" @@ -16259,6 +16382,11 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" +postinstall-postinstall@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" @@ -17823,6 +17951,13 @@ semver@^7.3.5, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -18438,6 +18573,11 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-math@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/string-math/-/string-math-1.2.2.tgz#c6a9362fac81476092f6f920e5379df00313c1e3" + integrity sha512-rfRZpMZbIy+0pepaW8iDCR+iW+GONxyi0jXfdyW4MgpFATH/Vlz+d3vt8UMu/a1RjA9xiejBDFayvTXzs/ROTw== + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -19036,6 +19176,13 @@ tiny-emitter@^2.0.0: resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -19063,6 +19210,13 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-function@*: + version "2.0.6" + resolved "https://registry.yarnpkg.com/to-function/-/to-function-2.0.6.tgz#7d56cd9c3b92fa8dbd7b22e83d51924de740ebc5" + integrity sha512-LWfUmW851x5T8+78Nl82CA2j6w0trhoFj4rpS6pFUMgfUMUySDAKPgTvQkUqlWuH3Lihlk5sPyDHSVwmKDSc5Q== + dependencies: + component-props "*" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -19476,6 +19630,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unixify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" @@ -20586,6 +20745,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"