From 6189b44b31a5b605b3dcd74b25454f79f1560a73 Mon Sep 17 00:00:00 2001 From: mattia rossi Date: Thu, 16 Nov 2023 08:54:06 +0100 Subject: [PATCH 01/27] Add graphile-export methods to allow correct export of a schema using the plugin --- .eslintrc.js | 3 +- package.json | 2 + ...nnectionArgFilterForwardRelationsPlugin.ts | 80 +++++----- ...nnectionArgFilterLogicalOperatorsPlugin.ts | 50 +++--- src/PgConnectionArgFilterPlugin.ts | 56 ++++--- src/utils.ts | 92 +++++------ yarn.lock | 148 +++++++++++++++++- 7 files changed, 303 insertions(+), 128 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 6921c77..b1bfc14 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -6,10 +6,11 @@ module.exports = { es6: true, "jest/globals": true, }, - plugins: ["@typescript-eslint", "jest"], + plugins: ["@typescript-eslint", "jest", "graphile-export"], extends: [ "eslint:recommended", "plugin:@typescript-eslint/recommended", + "plugin:graphile-export/recommended", "plugin:jest/recommended", "prettier", ], diff --git a/package.json b/package.json index 6acb76f..dc3213f 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "url": "https://github.com/graphile-contrib/postgraphile-plugin-connection-filter/issues" }, "dependencies": { + "eslint-plugin-graphile-export": "^0.0.2-beta.3", + "graphile-export": "^0.0.2-beta.4", "tslib": "^2.5.0" }, "devDependencies": { diff --git a/src/PgConnectionArgFilterForwardRelationsPlugin.ts b/src/PgConnectionArgFilterForwardRelationsPlugin.ts index e747d26..e18b700 100644 --- a/src/PgConnectionArgFilterForwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterForwardRelationsPlugin.ts @@ -112,24 +112,28 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `Filter by the object’s \`${fieldName}\` relation.`, type: ForeignTableFilterType, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "object"); - const $subQuery = $where.existsPlan({ - tableExpression: foreignTableExpression, - alias: foreignTable.name, - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - fieldArgs.apply($subQuery); - }, + applyPlan: build.EXPORTABLE( + () => + function ($where: PgConditionStep, fieldArgs) { + //assertAllowed(fieldArgs, "object"); + const $subQuery = $where.existsPlan({ + tableExpression: foreignTableExpression, + alias: foreignTable.name, + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + fieldArgs.apply($subQuery); + }, + [] + ), }) ), }, @@ -154,24 +158,28 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `A related \`${fieldName}\` exists.`, type: GraphQLBoolean, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "scalar"); - const $subQuery = $where.existsPlan({ - tableExpression: foreignTableExpression, - alias: foreignTable.name, - $equals: fieldArgs.get(), - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - }, + applyPlan: build.EXPORTABLE( + () => + function ($where: PgConditionStep, fieldArgs) { + //assertAllowed(fieldArgs, "scalar"); + const $subQuery = $where.existsPlan({ + tableExpression: foreignTableExpression, + alias: foreignTable.name, + $equals: fieldArgs.get(), + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + }, + [] + ), }) ), }, diff --git a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts index 4edf625..1687756 100644 --- a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts @@ -39,13 +39,17 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin { description: `Checks for all expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "list"); - const $and = $where.andPlan(); - // No need for this more correct form, easier to read if it's flatter. - // fieldArgs.apply(() => $and.andPlan()); - fieldArgs.apply($and); - }, + applyPlan: build.EXPORTABLE( + () => + function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "list"); + const $and = $where.andPlan(); + // No need for this more correct form, easier to read if it's flatter. + // fieldArgs.apply(() => $and.andPlan()); + fieldArgs.apply($and); + }, + [] + ), } ), or: fieldWithHooks( @@ -56,12 +60,16 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin { description: `Checks for any expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "list"); - const $or = $where.orPlan(); - // Every entry is added to the `$or`, but the entries themselves should use an `and`. - fieldArgs.apply(() => $or.andPlan()); - }, + applyPlan: build.EXPORTABLE( + () => + function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "list"); + const $or = $where.orPlan(); + // Every entry is added to the `$or`, but the entries themselves should use an `and`. + fieldArgs.apply(() => $or.andPlan()); + }, + [] + ), } ), not: fieldWithHooks( @@ -72,12 +80,16 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin { description: `Negates the expression.`, type: Self, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "object"); - const $not = $where.notPlan(); - const $and = $not.andPlan(); - fieldArgs.apply($and); - }, + applyPlan: build.EXPORTABLE( + () => + function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "object"); + const $not = $where.notPlan(); + const $and = $not.andPlan(); + fieldArgs.apply($and); + }, + [] + ), } ), }; diff --git a/src/PgConnectionArgFilterPlugin.ts b/src/PgConnectionArgFilterPlugin.ts index 2c56e5e..96abb59 100644 --- a/src/PgConnectionArgFilterPlugin.ts +++ b/src/PgConnectionArgFilterPlugin.ts @@ -7,7 +7,7 @@ import type { } from "graphql"; import { OperatorsCategory } from "./interfaces"; -const { version } = require("../package.json"); +const { version } = require("../package.json"); // eslint-disable-line type AnyCodec = PgCodec; @@ -444,33 +444,37 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { return args; } - const assertAllowed = (fieldArgs: FieldArgs) => { - const $raw = fieldArgs.getRaw(); - if ( - !connectionFilterAllowEmptyObjectInput && - "evalIsEmpty" in $raw && - $raw.evalIsEmpty() - ) { - throw Object.assign( - new Error( - "Empty objects are forbidden in filter argument input." - ), - { - //TODO: mark this error as safe + const assertAllowed = build.EXPORTABLE( + () => + function (fieldArgs: FieldArgs) { + const $raw = fieldArgs.getRaw(); + if ( + !connectionFilterAllowEmptyObjectInput && + "evalIsEmpty" in $raw && + $raw.evalIsEmpty() + ) { + throw Object.assign( + new Error( + "Empty objects are forbidden in filter argument input." + ), + { + //TODO: mark this error as safe + } + ); } - ); - } - if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { - throw Object.assign( - new Error( - "Null literals are forbidden in filter argument input." - ), - { - //TODO: mark this error as safe + if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { + throw Object.assign( + new Error( + "Null literals are forbidden in filter argument input." + ), + { + //TODO: mark this error as safe + } + ); } - ); - } - }; + }, + [] + ); const attributeCodec = resource?.parameters && !resource?.codec.attributes diff --git a/src/utils.ts b/src/utils.ts index c4ddef6..9c71c24 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -7,6 +7,7 @@ import type { import type { FieldArgs } from "grafast"; import type { GraphileBuild } from "graphile-build"; import type {} from "graphile-build-pg"; +import { EXPORTABLE } from "graphile-export"; export function isComputedScalarAttributeResource( s: PgResource @@ -61,55 +62,56 @@ export function makeAssertAllowed(options: GraphileBuild.SchemaOptions) { connectionFilterAllowNullInput, connectionFilterAllowEmptyObjectInput, } = options; - const assertAllowed = ( - fieldArgs: FieldArgs, - mode: "list" | "object" | "scalar" - ) => { - const $raw = fieldArgs.getRaw(); - if ( - mode === "object" && - !connectionFilterAllowEmptyObjectInput && - "evalIsEmpty" in $raw && - $raw.evalIsEmpty() - ) { - throw Object.assign( - new Error("Empty objects are forbidden in filter argument input."), - { - //TODO: mark this error as safe + const assertAllowed = EXPORTABLE( + (connectionFilterAllowEmptyObjectInput, connectionFilterAllowNullInput) => + function (fieldArgs: FieldArgs, mode: "list" | "object" | "scalar") { + const $raw = fieldArgs.getRaw(); + if ( + mode === "object" && + !connectionFilterAllowEmptyObjectInput && + "evalIsEmpty" in $raw && + $raw.evalIsEmpty() + ) { + throw Object.assign( + new Error("Empty objects are forbidden in filter argument input."), + { + //TODO: mark this error as safe + } + ); } - ); - } - if ( - mode === "list" && - !connectionFilterAllowEmptyObjectInput && - "evalLength" in $raw - ) { - const l = $raw.evalLength(); - if (l != null) { - for (let i = 0; i < l; i++) { - const $entry = $raw.at(i); - if ("evalIsEmpty" in $entry && $entry.evalIsEmpty()) { - throw Object.assign( - new Error( - "Empty objects are forbidden in filter argument input." - ), - { - //TODO: mark this error as safe + if ( + mode === "list" && + !connectionFilterAllowEmptyObjectInput && + "evalLength" in $raw + ) { + const l = $raw.evalLength(); + if (l != null) { + for (let i = 0; i < l; i++) { + const $entry = $raw.at(i); + if ("evalIsEmpty" in $entry && $entry.evalIsEmpty()) { + throw Object.assign( + new Error( + "Empty objects are forbidden in filter argument input." + ), + { + //TODO: mark this error as safe + } + ); } - ); + } } } - } - } - // For all modes, check null - if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { - throw Object.assign( - new Error("Null literals are forbidden in filter argument input."), - { - //TODO: mark this error as safe + // For all modes, check null + if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { + throw Object.assign( + new Error("Null literals are forbidden in filter argument input."), + { + //TODO: mark this error as safe + } + ); } - ); - } - }; + }, + [connectionFilterAllowEmptyObjectInput, connectionFilterAllowNullInput] + ); return assertAllowed; } diff --git a/yarn.lock b/yarn.lock index 502f9c2..fbb3fb8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,6 +17,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.20.0": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" @@ -53,6 +61,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.22.10", "@babel/generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e" + integrity sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg== + dependencies: + "@babel/types" "^7.23.3" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" @@ -68,6 +86,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-function-name@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" @@ -76,6 +99,14 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -83,6 +114,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" @@ -123,16 +161,33 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -156,11 +211,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== +"@babel/parser@^7.22.14", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" + integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -268,6 +337,15 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/template@^7.22.15", "@babel/template@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" @@ -284,6 +362,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.22.11": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" + integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.3" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.3" + "@babel/types" "^7.23.3" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" @@ -293,6 +387,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.11", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" + integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -756,6 +859,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== +"@types/node@^20.5.7": + version "20.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298" + integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw== + dependencies: + undici-types "~5.26.4" + "@types/pg@^8.6.2": version "8.6.6" resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.6.tgz#21cdf873a3e345a6e78f394677e3b3b1b543cb80" @@ -1096,7 +1206,7 @@ caniuse-lite@^1.0.30001400: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz#502c93dbd2f493bee73a408fe98e98fb1dad10b2" integrity sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1295,6 +1405,13 @@ eslint-config-prettier@8.8.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== +eslint-plugin-graphile-export@^0.0.2-beta.3: + version "0.0.2-beta.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-graphile-export/-/eslint-plugin-graphile-export-0.0.2-beta.3.tgz#17c898ef9722dbbab4d05a47aa31cc145ff513b5" + integrity sha512-BcYuek+HUtpiwRlxf488FwxbUUapD2E4oaTPmDWu/9sNCjzTxGfg4IO5epD+HqkJh++WvtCthGe3/8zCVQqZyA== + dependencies: + tslib "^2.6.2" + eslint-plugin-jest@27.2.1: version "27.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz#b85b4adf41c682ea29f1f01c8b11ccc39b5c672c" @@ -1698,6 +1815,20 @@ graphile-config@^0.0.1-beta.1: tslib "^2.5.0" yargs "^17.4.1" +graphile-export@^0.0.2-beta.4: + version "0.0.2-beta.4" + resolved "https://registry.yarnpkg.com/graphile-export/-/graphile-export-0.0.2-beta.4.tgz#a7a68805342317587ed0e5453a46f4bf2755f6c8" + integrity sha512-GsN82nuMnOB+kaGr1xiZ+S9Uwwx78m04sc+36JiJOPQi6MMCx13Er5M31yq3kwHzA6TpbcreHS0YLlkPQeTAwQ== + dependencies: + "@babel/generator" "^7.22.10" + "@babel/parser" "^7.22.14" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.11" + "@babel/types" "^7.22.11" + "@types/node" "^20.5.7" + prettier "^3.0.3" + tslib "^2.6.2" + graphile-utils@^5.0.0-beta.1: version "5.0.0-beta.1" resolved "https://registry.yarnpkg.com/graphile-utils/-/graphile-utils-5.0.0-beta.1.tgz#2584dbe3d3ca690091b01b09be3067c8b6a38a43" @@ -2789,6 +2920,11 @@ prettier@2.8.7: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== +prettier@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" + integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== + pretty-format@^29.0.0, pretty-format@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" @@ -3104,6 +3240,11 @@ tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -3138,6 +3279,11 @@ typescript@^5.0.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + update-browserslist-db@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" From ed8c5d7c7ede9b58344632d9d8a3a382a76f615a Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 08:39:29 +0000 Subject: [PATCH 02/27] Upgrade ESLint/etc --- package.json | 16 +- yarn.lock | 1070 ++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 970 insertions(+), 116 deletions(-) diff --git a/package.json b/package.json index dc3213f..73cdb6c 100644 --- a/package.json +++ b/package.json @@ -30,14 +30,20 @@ "tslib": "^2.5.0" }, "devDependencies": { + "@babel/eslint-parser": "^7.22.11", "@dataplan/pg": "^0.0.1-beta.1", "@tsconfig/node16": "^1.0.3", "@types/jest": "29.5.0", - "@typescript-eslint/eslint-plugin": "5.59.0", - "@typescript-eslint/parser": "5.59.0", - "eslint": "8.38.0", - "eslint-config-prettier": "8.8.0", - "eslint-plugin-jest": "27.2.1", + "@typescript-eslint/eslint-plugin": "^6.5.0", + "@typescript-eslint/parser": "^6.5.0", + "@typescript-eslint/typescript-estree": "^6.5.0", + "eslint": "^8.48.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-simple-import-sort": "^10.0.0", + "eslint-plugin-tsdoc": "^0.2.17", + "eslint_d": "^12.2.1", "grafast": "^0.0.1-beta.1", "grafserv": "^0.0.1-beta.1", "graphile-build": "^5.0.0-beta.1", diff --git a/yarn.lock b/yarn.lock index fbb3fb8..9d70bb4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@ampproject/remapping@^2.1.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" @@ -51,6 +56,15 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/eslint-parser@^7.22.11": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz#7bf0db1c53b54da0c8a12627373554a0828479ca" + integrity sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + "@babel/generator@^7.20.5", "@babel/generator@^7.21.4", "@babel/generator@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" @@ -424,26 +438,26 @@ postgres-range "^1.1.1" tslib "^2.5.0" -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" - integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" - integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.1" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -451,10 +465,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892" - integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g== +"@eslint/js@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" + integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== "@graphile/lru@^5.0.0-beta.1": version "5.0.0-beta.1" @@ -463,12 +477,12 @@ dependencies: tslib "^2.5.0" -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -477,10 +491,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -730,6 +744,28 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@microsoft/tsdoc-config@0.16.2": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz#b786bb4ead00d54f53839a458ce626c8548d3adf" + integrity sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw== + dependencies: + "@microsoft/tsdoc" "0.14.2" + ajv "~6.12.6" + jju "~1.4.0" + resolve "~1.19.0" + +"@microsoft/tsdoc@0.14.2": + version "0.14.2" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb" + integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -849,11 +885,21 @@ expect "^29.0.0" pretty-format "^29.0.0" +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/node@*", "@types/node@^18.15.5": version "18.15.11" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" @@ -890,6 +936,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== +"@types/semver@^7.5.0": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" + integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" @@ -907,30 +958,32 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@5.59.0": - version "5.59.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.0.tgz#c0e10eeb936debe5d1c3433cf36206a95befefd0" - integrity sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw== +"@typescript-eslint/eslint-plugin@^6.5.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz#52aae65174ff526576351f9ccd41cea01001463f" + integrity sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w== dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.0" - "@typescript-eslint/type-utils" "5.59.0" - "@typescript-eslint/utils" "5.59.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.11.0" + "@typescript-eslint/type-utils" "6.11.0" + "@typescript-eslint/utils" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@5.59.0": - version "5.59.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.0.tgz#0ad7cd019346cc5d150363f64869eca10ca9977c" - integrity sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w== - dependencies: - "@typescript-eslint/scope-manager" "5.59.0" - "@typescript-eslint/types" "5.59.0" - "@typescript-eslint/typescript-estree" "5.59.0" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.5.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.11.0.tgz#9640d9595d905f3be4f278bf515130e6129b202e" + integrity sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ== + dependencies: + "@typescript-eslint/scope-manager" "6.11.0" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/typescript-estree" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.59.0": @@ -941,21 +994,34 @@ "@typescript-eslint/types" "5.59.0" "@typescript-eslint/visitor-keys" "5.59.0" -"@typescript-eslint/type-utils@5.59.0": - version "5.59.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.0.tgz#8e8d1420fc2265989fa3a0d897bde37f3851e8c9" - integrity sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA== +"@typescript-eslint/scope-manager@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz#621f603537c89f4d105733d949aa4d55eee5cea8" + integrity sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A== dependencies: - "@typescript-eslint/typescript-estree" "5.59.0" - "@typescript-eslint/utils" "5.59.0" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" + +"@typescript-eslint/type-utils@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz#d0b8b1ab6c26b974dbf91de1ebc5b11fea24e0d1" + integrity sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA== + dependencies: + "@typescript-eslint/typescript-estree" "6.11.0" + "@typescript-eslint/utils" "6.11.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.0.tgz#3fcdac7dbf923ec5251545acdd9f1d42d7c4fe32" integrity sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA== +"@typescript-eslint/types@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.11.0.tgz#8ad3aa000cbf4bdc4dcceed96e9b577f15e0bf53" + integrity sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA== + "@typescript-eslint/typescript-estree@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz#8869156ee1dcfc5a95be3ed0e2809969ea28e965" @@ -969,7 +1035,33 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.59.0", "@typescript-eslint/utils@^5.10.0": +"@typescript-eslint/typescript-estree@6.11.0", "@typescript-eslint/typescript-estree@^6.5.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz#7b52c12a623bf7f8ec7f8a79901b9f98eb5c7990" + integrity sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ== + dependencies: + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.11.0.tgz#11374f59ef4cea50857b1303477c08aafa2ca604" + integrity sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.11.0" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/typescript-estree" "6.11.0" + semver "^7.5.4" + +"@typescript-eslint/utils@^5.10.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.0.tgz#063d066b3bc4850c18872649ed0da9ee72d833d5" integrity sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA== @@ -991,17 +1083,30 @@ "@typescript-eslint/types" "5.59.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz#d991538788923f92ec40d44389e7075b359f3458" + integrity sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ== + dependencies: + "@typescript-eslint/types" "6.11.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.8.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4, ajv@~6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1062,11 +1167,79 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + babel-jest@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" @@ -1186,6 +1359,15 @@ buffer-writer@2.0.0: resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1296,6 +1478,13 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +core_d@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/core_d/-/core_d-5.0.1.tgz#695c9c9baa483d7321db47a452887738048a1822" + integrity sha512-37lZyhJY1hzgFbfU4LzY4zL09QPwPfV2W/3YBOtN7mkdvVaeP1OVnDZI6zxggtlPwG/BuE5wIr0xptlVJk5EPA== + dependencies: + supports-color "^8.1.0" + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -1305,6 +1494,13 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -1327,6 +1523,24 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -1344,6 +1558,13 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1380,6 +1601,76 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1400,10 +1691,26 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" - integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" eslint-plugin-graphile-export@^0.0.2-beta.3: version "0.0.2-beta.3" @@ -1412,14 +1719,50 @@ eslint-plugin-graphile-export@^0.0.2-beta.3: dependencies: tslib "^2.6.2" -eslint-plugin-jest@27.2.1: - version "27.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz#b85b4adf41c682ea29f1f01c8b11ccc39b5c672c" - integrity sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg== +eslint-plugin-import@^2.28.1: + version "2.29.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-jest@^27.2.3: + version "27.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz#e5c0cf735b3c8cad0ef9db5b565b2fc99f5e55ed" + integrity sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng== dependencies: "@typescript-eslint/utils" "^5.10.0" -eslint-scope@^5.1.1: +eslint-plugin-simple-import-sort@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz#cc4ceaa81ba73252427062705b64321946f61351" + integrity sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw== + +eslint-plugin-tsdoc@^0.2.17: + version "0.2.17" + resolved "https://registry.yarnpkg.com/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz#27789495bbd8778abbf92db1707fec2ed3dfe281" + integrity sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA== + dependencies: + "@microsoft/tsdoc" "0.14.2" + "@microsoft/tsdoc-config" "0.16.2" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -1427,40 +1770,51 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: version "3.4.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== -eslint@8.38.0: - version "8.38.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.38.0.tgz#a62c6f36e548a5574dd35728ac3c6209bd1e2f1a" - integrity sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg== +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.12.0, eslint@^8.48.0: + version "8.53.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" + integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.38.0" - "@humanwhocodes/config-array" "^0.11.8" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.53.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.4.0" - espree "^9.5.1" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -1468,32 +1822,39 @@ eslint@8.38.0: find-up "^5.0.0" glob-parent "^6.0.2" globals "^13.19.0" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" - integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== +eslint_d@^12.2.1: + version "12.2.1" + resolved "https://registry.yarnpkg.com/eslint_d/-/eslint_d-12.2.1.tgz#e5faf55acdc74d0e6e4f13ade464421f1f8e4152" + integrity sha512-qOJ9cTi5AaH5bOgEoCkv41DJ637mHgzffbOLojwU4wadwC6qbR+OxVJRvVzH0v2XYmQOvw4eiJK7ivrr5SvzsA== dependencies: - acorn "^8.8.0" + core_d "^5.0.1" + eslint "^8.12.0" + nanolru "^1.0.0" + optionator "^0.9.1" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.0" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0: version "4.0.1" @@ -1653,6 +2014,13 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1668,6 +2036,26 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -1678,6 +2066,16 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -1688,6 +2086,14 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -1726,6 +2132,13 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -1738,6 +2151,13 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -1766,10 +2186,10 @@ grafserv@^0.0.1-beta.1: ruru "^2.0.0-beta.1" tslib "^2.5.0" -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== graphile-build-pg@5.0.0-beta.1, graphile-build-pg@^5.0.0-beta.1: version "5.0.0-beta.1" @@ -1848,6 +2268,11 @@ graphql@16.1.0-experimental-stream-defer.6, graphql@^16.1.0-experimental-stream- resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.1.0-experimental-stream-defer.6.tgz#8f00e27b11cf2c71ddec0350c663270cd3230659" integrity sha512-qNedUtVDai94Ptxz7IXHoQR/GU27cuC/SfAU2CogIEfOflr7tW52GTnAF9SDa2i8gneowK0Ye5vyeQUJpGRvAQ== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1858,6 +2283,30 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1865,6 +2314,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -1889,7 +2345,12 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== -import-fresh@^3.0.0, import-fresh@^3.2.1: +ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -1923,16 +2384,61 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.1.0, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-core-module@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" @@ -1940,6 +2446,13 @@ is-core-module@^2.9.0: dependencies: has "^1.0.3" +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1962,6 +2475,18 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1972,11 +2497,59 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2390,10 +2963,10 @@ jest@29.5.0: import-local "^3.0.2" jest-cli "^29.5.0" -js-sdsl@^4.1.4: - version "4.2.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" - integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== +jju@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== js-tokens@^4.0.0: version "4.0.0" @@ -2435,6 +3008,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 sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + json5@^2.2.1, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -2616,6 +3196,11 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -2626,10 +3211,10 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== +nanolru@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/nanolru/-/nanolru-1.0.0.tgz#0a5679cd4e4578c4ca3741e610b71c4c9b5afaf8" + integrity sha512-GyQkE8M32pULhQk7Sko5raoIbPalAk90ICG+An4fq6fCsFHsP6fB2K46WGXVdoJpy4SGMnZ/EKbo123fZJomWg== natural-compare@^1.4.0: version "1.4.0" @@ -2658,6 +3243,54 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2684,6 +3317,18 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -2754,7 +3399,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.7: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -2962,6 +3607,15 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3003,6 +3657,23 @@ resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@~1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -3033,11 +3704,30 @@ ruru@^2.0.0-beta.1: tslib "^2.5.0" yargs "^17.6.2" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + semver@7.x, semver@^7.3.5, semver@^7.3.7: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" @@ -3055,6 +3745,37 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.4: + 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" + +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3067,6 +3788,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -3129,6 +3859,33 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -3136,6 +3893,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -3146,7 +3908,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -3165,7 +3927,7 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: +supports-color@^8.0.0, supports-color@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -3216,6 +3978,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + ts-jest@29.1.0: version "29.1.0" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.0.tgz#4a9db4104a49b76d2b368ea775b6c9535c603891" @@ -3230,6 +3997,16 @@ ts-jest@29.1.0: semver "7.x" yargs-parser "^21.0.1" +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -3274,11 +4051,60 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typescript@^5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" @@ -3315,6 +4141,28 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" From 0f7112f5e1c06e42382486c095d10219e0f09901 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 08:41:15 +0000 Subject: [PATCH 03/27] Sync eslint config with crystal repo --- .eslintrc.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index b1bfc14..d4f95d8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,20 +1,35 @@ module.exports = { root: true, - parser: "@typescript-eslint/parser", + parser: "@babel/eslint-parser", + parserOptions: { + sourceType: "module", + }, env: { + jest: true, node: true, es6: true, "jest/globals": true, }, - plugins: ["@typescript-eslint", "jest", "graphile-export"], + plugins: [ + "@typescript-eslint", + "jest", + //"tsdoc", + //"simple-import-sort", + //"import", + "graphile-export", + ], extends: [ "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", + // "plugin:import/errors", + // "plugin:import/typescript", "plugin:graphile-export/recommended", "plugin:jest/recommended", "prettier", ], rules: { "jest/expect-expect": ["off"], + "@typescript-eslint/no-var-requires": ["off"], }, }; From 9742e7781bf0ae7b9547768f848073f500e4b80c Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 08:44:11 +0000 Subject: [PATCH 04/27] More sync with crystal --- babel.config.js | 31 ++ package.json | 6 + yarn.lock | 1115 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 1129 insertions(+), 23 deletions(-) create mode 100644 babel.config.js diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..a677332 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,31 @@ +// Babel config, used by Jest +module.exports = { + plugins: ["@babel/plugin-transform-modules-commonjs"], + presets: [ + [ + "@babel/env", + { + targets: { + node: "16.12", + }, + }, + ], + "@babel/preset-typescript", + ], + env: { + test: { + plugins: ["babel-plugin-transform-import-meta"], + presets: [ + [ + "@babel/env", + { + targets: { + node: "current", + }, + }, + ], + "@babel/preset-typescript", + ], + }, + }, +}; diff --git a/package.json b/package.json index 73cdb6c..65b31dd 100644 --- a/package.json +++ b/package.json @@ -31,12 +31,18 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.22.11", + "@babel/plugin-transform-modules-commonjs": "^7.22.11", + "@babel/plugin-transform-runtime": "^7.22.10", + "@babel/preset-env": "^7.22.14", + "@babel/preset-typescript": "^7.22.11", "@dataplan/pg": "^0.0.1-beta.1", "@tsconfig/node16": "^1.0.3", "@types/jest": "29.5.0", "@typescript-eslint/eslint-plugin": "^6.5.0", "@typescript-eslint/parser": "^6.5.0", "@typescript-eslint/typescript-estree": "^6.5.0", + "babel-jest": "^29.6.4", + "babel-plugin-transform-import-meta": "^2.2.1", "eslint": "^8.48.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.1", diff --git a/yarn.lock b/yarn.lock index 9d70bb4..77ce24b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,6 +35,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" + integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== + "@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" @@ -85,6 +90,20 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-compilation-targets@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" @@ -95,12 +114,58 @@ browserslist "^4.21.3" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-environment-visitor@^7.22.20": +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== @@ -113,7 +178,7 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" -"@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -135,6 +200,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" @@ -142,6 +214,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-transforms@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" @@ -156,11 +235,52 @@ "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.2" +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" @@ -168,6 +288,20 @@ dependencies: "@babel/types" "^7.20.2" +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" @@ -207,6 +341,20 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + "@babel/helpers@^7.20.5": version "7.20.6" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763" @@ -244,6 +392,35 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098" + integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -258,14 +435,49 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -279,6 +491,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" @@ -286,7 +505,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -300,7 +519,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -328,13 +547,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-syntax-typescript@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript@^7.7.2": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" @@ -342,6 +575,542 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz#9df2627bad7f434ed13eef3e61b2b65cafd4885b" + integrity sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz#e99a3ff08f58edd28a8ed82481df76925a4ffca7" + integrity sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz#56f2371c7e5bf6ff964d84c5dc4d4db5536b5159" + integrity sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" + integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.15" + +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz#82625924da9ed5fb11a428efb02e43bc9a3ab13e" + integrity sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz#dcd066d995f6ac6077e5a4ccb68322a01e23ac49" + integrity sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559" + integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz#489724ab7d3918a4329afb4172b2fd2cf3c8d245" + integrity sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz#3a406d6083feb9487083bca6d2334a3c9b6c4808" + integrity sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.22.11", "@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" + integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz#8a613d514b521b640344ed7c56afeff52f9413f8" + integrity sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz#2f8da42b75ba89e5cfcd677afd0856d52c0c2e68" + integrity sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz#509373753b5f7202fe1940e92fd075bd7874955f" + integrity sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" + +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + +"@babel/plugin-transform-optional-catch-binding@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz#362c0b545ee9e5b0fa9d9e6fe77acf9d4c480027" + integrity sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz#92fc83f54aa3adc34288933fa27e54c13113f4be" + integrity sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz#5cd34a2ce6f2d008cc8f91d8dcc29e2c41466da6" + integrity sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.22.10": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.3.tgz#0aa7485862b0b5cb0559c1a5ec08b4923743ee3b" + integrity sha512-XcQ3X58CKBdBnnZpPaQjgVMePsXtSZzHoku70q9tUAQp02ggPQNM04BF3RvlW1GSM/McbSOQAzEK4MXbS7/JFg== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.3.tgz#ce806e6cb485d468c48c4f717696719678ab0138" + integrity sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" + +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.22.14": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" + integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.3" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.3" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.3" + "@babel/plugin-transform-classes" "^7.23.3" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.3" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.3" + "@babel/plugin-transform-for-of" "^7.23.3" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.3" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" + "@babel/plugin-transform-numeric-separator" "^7.23.3" + "@babel/plugin-transform-object-rest-spread" "^7.23.3" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.3" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.3" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.22.11": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.8.4": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" @@ -351,7 +1120,7 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/template@^7.22.15", "@babel/template@^7.22.5": +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.4.4": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -401,7 +1170,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.22.11", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3": +"@babel/types@^7.22.11", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.4.4": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== @@ -642,6 +1411,13 @@ dependencies: "@sinclair/typebox" "^0.25.16" +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + "@jest/source-map@^29.4.3": version "29.4.3" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" @@ -692,6 +1468,27 @@ slash "^3.0.0" write-file-atomic "^4.0.2" +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + "@jest/types@^29.5.0": version "29.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" @@ -704,6 +1501,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -726,6 +1535,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" @@ -736,6 +1550,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" @@ -744,6 +1563,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.18": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@microsoft/tsdoc-config@0.16.2": version "0.16.2" resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz#b786bb4ead00d54f53839a458ce626c8548d3adf" @@ -792,6 +1619,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + "@sinonjs/commons@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" @@ -1253,6 +2085,19 @@ babel-jest@^29.5.0: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^29.6.4: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -1274,6 +2119,48 @@ babel-plugin-jest-hoist@^29.5.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.3" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" + +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.3" + +babel-plugin-transform-import-meta@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.2.1.tgz#eb5b79019ff0a9157b94d8280955121189a2964b" + integrity sha512-AxNh27Pcg8Kt112RGa3Vod2QS2YXKKJ6+nSvRtv7qQTJAdx0MZa4UHZ4lnxHUWA2MNbLuZQv5FVab4P1CoLOWw== + dependencies: + "@babel/template" "^7.4.4" + tslib "^2.4.0" + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -1300,6 +2187,14 @@ babel-preset-jest@^29.5.0: babel-plugin-jest-hoist "^29.5.0" babel-preset-current-node-syntax "^1.0.0" +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1330,6 +2225,16 @@ browserslist@^4.21.3: node-releases "^2.0.6" update-browserslist-db "^1.0.9" +browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -1388,6 +2293,11 @@ caniuse-lite@^1.0.30001400: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz#502c93dbd2f493bee73a408fe98e98fb1dad10b2" integrity sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA== +caniuse-lite@^1.0.30001541: + version "1.0.30001562" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001562.tgz#9d16c5fd7e9c592c4cd5e304bc0f75b0008b2759" + integrity sha512-kfte3Hym//51EdX4239i+Rmp20EsLIYGdPkERegTgU19hQWCRhsRFGKHTliUlsry53tv17K7n077Kqa0WJU4ng== + chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1478,6 +2388,13 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" + integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== + dependencies: + browserslist "^4.22.1" + core_d@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/core_d/-/core_d-5.0.1.tgz#695c9c9baa483d7321db47a452887738048a1822" @@ -1584,6 +2501,11 @@ electron-to-chromium@^1.4.251: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== +electron-to-chromium@^1.4.535: + version "1.4.585" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.585.tgz#7b3cb6846bb5cc10a8d5904c351a9b8aaa76ea90" + integrity sha512-B4yBlX0azdA3rVMxpYwLQfDpdwOgcnLCkpvSOd68iFmeedo+WYjaBJS3/W58LVD8CB2nf+o7C4K9xz1l09RkWg== + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -2746,6 +3668,25 @@ jest-haste-map@^29.5.0: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-leak-detector@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" @@ -2798,6 +3739,11 @@ jest-regex-util@^29.4.3: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + jest-resolve-dependencies@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" @@ -2917,6 +3863,18 @@ jest-util@^29.0.0, jest-util@^29.5.0: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" @@ -2953,6 +3911,16 @@ jest-worker@^29.5.0: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" @@ -2993,6 +3961,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -3090,6 +4063,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -3140,6 +4118,13 @@ lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -3226,6 +4211,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -3607,6 +4597,30 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" @@ -3616,6 +4630,25 @@ regexp.prototype.flags@^1.5.1: define-properties "^1.2.0" set-function-name "^2.0.0" +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3648,6 +4681,15 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== +resolve@^1.14.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^1.20.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" @@ -3657,15 +4699,6 @@ resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - resolve@~1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" @@ -4012,16 +5045,16 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.4.0, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslib@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -4110,6 +5143,37 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-browserslist-db@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" @@ -4212,6 +5276,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From 62868829384e98c82d59bd0c68b21a66bce0374a Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 08:44:30 +0000 Subject: [PATCH 05/27] Dedupe --- yarn.lock | 504 +++++------------------------------------------------- 1 file changed, 40 insertions(+), 464 deletions(-) diff --git a/yarn.lock b/yarn.lock index 77ce24b..5079824 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,14 +15,7 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.22.13": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.22.13": version "7.22.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== @@ -30,11 +23,6 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.20.0": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" - integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== - "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" @@ -70,17 +58,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.20.5", "@babel/generator@^7.21.4", "@babel/generator@^7.7.2": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" - integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== - dependencies: - "@babel/types" "^7.21.4" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.22.10", "@babel/generator@^7.23.3": +"@babel/generator@^7.20.5", "@babel/generator@^7.22.10", "@babel/generator@^7.23.3", "@babel/generator@^7.7.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e" integrity sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg== @@ -104,17 +82,7 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": +"@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== @@ -160,24 +128,11 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - "@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" @@ -186,13 +141,6 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -207,13 +155,6 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" @@ -221,21 +162,7 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" - integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - -"@babel/helper-module-transforms@^7.23.3": +"@babel/helper-module-transforms@^7.20.2", "@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== @@ -253,12 +180,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== @@ -281,13 +203,6 @@ "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== - dependencies: - "@babel/types" "^7.20.2" - "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -302,13 +217,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -316,31 +224,16 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - "@babel/helper-string-parser@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - "@babel/helper-validator-option@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" @@ -364,15 +257,6 @@ "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/highlight@^7.22.13": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" @@ -382,12 +266,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" - integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== - -"@babel/parser@^7.22.14", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.5", "@babel/parser@^7.22.14", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== @@ -491,20 +370,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.23.3": +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -561,20 +433,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.23.3": +"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" @@ -1111,16 +976,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.4.4": +"@babel/template@^7.18.10", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3", "@babel/template@^7.4.4": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -1129,23 +985,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.7.2": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" - integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.4" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.4" - "@babel/types" "^7.21.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.22.11": +"@babel/traverse@^7.20.5", "@babel/traverse@^7.22.11", "@babel/traverse@^7.7.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== @@ -1161,16 +1001,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" - integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.11", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.20.5", "@babel/types@^7.22.11", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== @@ -1404,14 +1235,7 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== - dependencies: - "@sinclair/typebox" "^0.25.16" - -"@jest/schemas@^29.6.3": +"@jest/schemas@^29.4.3", "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== @@ -1447,28 +1271,7 @@ jest-haste-map "^29.5.0" slash "^3.0.0" -"@jest/transform@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" - integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.5.0" - "@jridgewell/trace-mapping" "^0.3.15" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" - jest-regex-util "^29.4.3" - jest-util "^29.5.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/transform@^29.7.0": +"@jest/transform@^29.5.0", "@jest/transform@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== @@ -1489,19 +1292,7 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" - integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== - dependencies: - "@jest/schemas" "^29.4.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jest/types@^29.6.3": +"@jest/types@^29.5.0", "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== @@ -1530,11 +1321,6 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -1545,25 +1331,12 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.14": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.18": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.20" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== @@ -1614,11 +1387,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -1717,33 +1485,28 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.12": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/node@*", "@types/node@^18.15.5": - version "18.15.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" - integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== - -"@types/node@^20.5.7": +"@types/node@*", "@types/node@^20.5.7": version "20.9.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298" integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw== dependencies: undici-types "~5.26.4" +"@types/node@^18.15.5": + version "18.15.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" + integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== + "@types/pg@^8.6.2": version "8.6.6" resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.6.tgz#21cdf873a3e345a6e78f394677e3b3b1b543cb80" @@ -1763,12 +1526,7 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== -"@types/semver@^7.3.12", "@types/semver@^7.3.9": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== - -"@types/semver@^7.5.0": +"@types/semver@^7.3.12", "@types/semver@^7.3.9", "@types/semver@^7.5.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== @@ -2072,20 +1830,7 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -babel-jest@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" - integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== - dependencies: - "@jest/transform" "^29.5.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.5.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-jest@^29.6.4: +babel-jest@^29.5.0, babel-jest@^29.6.4: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== @@ -2109,16 +1854,6 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" - integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - babel-plugin-jest-hoist@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" @@ -2179,14 +1914,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" - integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== - dependencies: - babel-plugin-jest-hoist "^29.5.0" - babel-preset-current-node-syntax "^1.0.0" - babel-preset-jest@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" @@ -2215,16 +1942,6 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.3: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - browserslist@^4.21.9, browserslist@^4.22.1: version "4.22.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" @@ -2288,17 +2005,12 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001400: - version "1.0.30001435" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz#502c93dbd2f493bee73a408fe98e98fb1dad10b2" - integrity sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA== - caniuse-lite@^1.0.30001541: version "1.0.30001562" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001562.tgz#9d16c5fd7e9c592c4cd5e304bc0f75b0008b2759" integrity sha512-kfte3Hym//51EdX4239i+Rmp20EsLIYGdPkERegTgU19hQWCRhsRFGKHTliUlsry53tv17K7n077Kqa0WJU4ng== -chalk@^2.0.0, chalk@^2.4.2: +chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2496,11 +2208,6 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== - electron-to-chromium@^1.4.535: version "1.4.585" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.585.tgz#7b3cb6846bb5cc10a8d5904c351a9b8aaa76ea90" @@ -2705,12 +2412,7 @@ eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" - integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== - -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -2953,11 +2655,6 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" @@ -3229,13 +2926,6 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - hasown@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" @@ -3262,12 +2952,7 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ignore@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" - integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== - -ignore@^5.2.4: +ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -3361,13 +3046,6 @@ is-core-module@^2.1.0, is-core-module@^2.13.0, is-core-module@^2.13.1: dependencies: hasown "^2.0.0" -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -3649,26 +3327,7 @@ jest-get-type@^29.4.3: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== -jest-haste-map@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" - integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== - dependencies: - "@jest/types" "^29.5.0" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.4.3" - jest-util "^29.5.0" - jest-worker "^29.5.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-haste-map@^29.7.0: +jest-haste-map@^29.5.0, jest-haste-map@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== @@ -3734,12 +3393,7 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" - integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== - -jest-regex-util@^29.6.3: +jest-regex-util@^29.4.3, jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== @@ -3851,19 +3505,7 @@ jest-snapshot@^29.5.0: pretty-format "^29.5.0" semver "^7.3.5" -jest-util@^29.0.0, jest-util@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" - integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== - dependencies: - "@jest/types" "^29.5.0" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-util@^29.7.0: +jest-util@^29.0.0, jest-util@^29.5.0, jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== @@ -3901,17 +3543,7 @@ jest-watcher@^29.5.0: jest-util "^29.5.0" string-length "^4.0.1" -jest-worker@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" - integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== - dependencies: - "@types/node" "*" - jest-util "^29.5.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.7.0: +jest-worker@^29.5.0, jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -4216,11 +3848,6 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -4295,19 +3922,7 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -optionator@^0.9.3: +optionator@^0.9.1, optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== @@ -4681,7 +4296,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.14.2, resolve@^1.22.4: +resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -4690,15 +4305,6 @@ resolve@^1.14.2, resolve@^1.22.4: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.20.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - resolve@~1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" @@ -4761,10 +4367,10 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -semver@7.x, semver@^7.3.5, semver@^7.3.7: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== +semver@7.x, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: + 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" @@ -4773,23 +4379,11 @@ semver@^5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^6.3.1: +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.4: - 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" - set-function-length@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" @@ -5045,16 +4639,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.4.0, tslib@^2.6.2: +tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tslib@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -5174,14 +4763,6 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -5234,11 +4815,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" From 56bc0bc66430ba76bbf2d67d26112efceda268d8 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:34:47 +0000 Subject: [PATCH 06/27] Use @typescript-eslint/parser for TypeScript files --- .eslintrc.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index d4f95d8..49096e9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -32,4 +32,11 @@ module.exports = { "jest/expect-expect": ["off"], "@typescript-eslint/no-var-requires": ["off"], }, + overrides: [ + // Rules for TypeScript only + { + files: ["*.ts", "*.tsx"], + parser: "@typescript-eslint/parser", + }, + ], }; From 7c28725c7ee9356aa9307adb7ad68aefc6023bb4 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:38:41 +0000 Subject: [PATCH 07/27] Configure some more lint rules --- .eslintrc.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index 49096e9..8f49f19 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -30,7 +30,18 @@ module.exports = { ], rules: { "jest/expect-expect": ["off"], + "no-fallthrough": ["error", { allowEmptyCase: true }], "@typescript-eslint/no-var-requires": ["off"], + "@typescript-eslint/no-explicit-any": ["off"], + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + args: "after-used", + ignoreRestSiblings: true, + }, + ], }, overrides: [ // Rules for TypeScript only From bbaa4cecc36813125157be3953f46ab0589486ff Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:39:05 +0000 Subject: [PATCH 08/27] Lint autofixes --- ...nnectionArgFilterForwardRelationsPlugin.ts | 15 ++++---- src/PgConnectionArgFilterOperatorsPlugin.ts | 38 +++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/PgConnectionArgFilterForwardRelationsPlugin.ts b/src/PgConnectionArgFilterForwardRelationsPlugin.ts index e18b700..0546800 100644 --- a/src/PgConnectionArgFilterForwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterForwardRelationsPlugin.ts @@ -38,6 +38,7 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin graphql: { GraphQLBoolean }, sql, options: { pgIgnoreReferentialIntegrity }, + EXPORTABLE, } = build; const { fieldWithHooks, @@ -112,9 +113,8 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `Filter by the object’s \`${fieldName}\` relation.`, type: ForeignTableFilterType, - applyPlan: build.EXPORTABLE( - () => - function ($where: PgConditionStep, fieldArgs) { + applyPlan: EXPORTABLE( + (foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { //assertAllowed(fieldArgs, "object"); const $subQuery = $where.existsPlan({ tableExpression: foreignTableExpression, @@ -132,7 +132,7 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin }); fieldArgs.apply($subQuery); }, - [] + [foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] ), }) ), @@ -158,9 +158,8 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `A related \`${fieldName}\` exists.`, type: GraphQLBoolean, - applyPlan: build.EXPORTABLE( - () => - function ($where: PgConditionStep, fieldArgs) { + applyPlan: EXPORTABLE( + (foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { //assertAllowed(fieldArgs, "scalar"); const $subQuery = $where.existsPlan({ tableExpression: foreignTableExpression, @@ -178,7 +177,7 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin ); }); }, - [] + [foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] ), }) ), diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index f68c361..27c6b70 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -389,7 +389,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { const hstoreOperators: { [fieldName: string]: OperatorSpec } = { contains: { description: "Contains the specified KeyValueHash.", - resolve: (i, v) => sql`${i} @> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} @> ${v}`, [sql]), }, containsKey: { description: "Contains the specified key.", @@ -412,13 +412,13 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, containedBy: { description: "Contained by the specified KeyValueHash.", - resolve: (i, v) => sql`${i} <@ ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} <@ ${v}`, [sql]), }, }; const jsonbOperators: { [fieldName: string]: OperatorSpec } = { contains: { description: "Contains the specified JSON.", - resolve: (i, v) => sql`${i} @> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} @> ${v}`, [sql]), }, containsKey: { description: "Contains the specified key.", @@ -439,31 +439,31 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, containedBy: { description: "Contained by the specified JSON.", - resolve: (i, v) => sql`${i} <@ ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} <@ ${v}`, [sql]), }, }; const inetOperators: { [fieldName: string]: OperatorSpec } = { contains: { description: "Contains the specified internet address.", - resolve: (i, v) => sql`${i} >> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} >> ${v}`, [sql]), }, containsOrEqualTo: { description: "Contains or equal to the specified internet address.", - resolve: (i, v) => sql`${i} >>= ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} >>= ${v}`, [sql]), }, containedBy: { description: "Contained by the specified internet address.", - resolve: (i, v) => sql`${i} << ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} << ${v}`, [sql]), }, containedByOrEqualTo: { description: "Contained by or equal to the specified internet address.", - resolve: (i, v) => sql`${i} <<= ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} <<= ${v}`, [sql]), }, containsOrContainedBy: { description: "Contains or contained by the specified internet address.", - resolve: (i, v) => sql`${i} && ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} && ${v}`, [sql]), }, }; @@ -579,7 +579,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { ...sortOperators, contains: { description: "Contains the specified range.", - resolve: (i, v) => sql`${i} @> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} @> ${v}`, [sql]), }, containsElement: { description: "Contains the specified value.", @@ -596,31 +596,31 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, containedBy: { description: "Contained by the specified range.", - resolve: (i, v) => sql`${i} <@ ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} <@ ${v}`, [sql]), }, overlaps: { description: "Overlaps the specified range.", - resolve: (i, v) => sql`${i} && ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} && ${v}`, [sql]), }, strictlyLeftOf: { description: "Strictly left of the specified range.", - resolve: (i, v) => sql`${i} << ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} << ${v}`, [sql]), }, strictlyRightOf: { description: "Strictly right of the specified range.", - resolve: (i, v) => sql`${i} >> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} >> ${v}`, [sql]), }, notExtendsRightOf: { description: "Does not extend right of the specified range.", - resolve: (i, v) => sql`${i} &< ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} &< ${v}`, [sql]), }, notExtendsLeftOf: { description: "Does not extend left of the specified range.", - resolve: (i, v) => sql`${i} &> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} &> ${v}`, [sql]), }, adjacentTo: { description: "Adjacent to the specified range.", - resolve: (i, v) => sql`${i} -|- ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} -|- ${v}`, [sql]), }, }; @@ -716,7 +716,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { let rangeLike = true; let enumLike = true; for (const codec of pgCodecs) { - let underlyingType = codec.domainOfCodec ?? codec; + const underlyingType = codec.domainOfCodec ?? codec; if (!underlyingType.arrayOfCodec) { arrayLike = false; } @@ -928,7 +928,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { if (!codecGraphQLType) { return memo; } - let type = resolveType + const type = resolveType ? resolveType(codecGraphQLType) : codecGraphQLType; From 2097e0bdfcf905b47b57abaef82c937ad9c119ad Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:41:17 +0000 Subject: [PATCH 09/27] Tweak lint rules --- .eslintrc.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 8f49f19..e965025 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -33,8 +33,10 @@ module.exports = { "no-fallthrough": ["error", { allowEmptyCase: true }], "@typescript-eslint/no-var-requires": ["off"], "@typescript-eslint/no-explicit-any": ["off"], + // We need this for our `GraphileBuild`/`GraphileConfig`/etc namespaces + "@typescript-eslint/no-namespace": "off", "@typescript-eslint/no-unused-vars": [ - "error", + "warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_", From 40d1a0cf00196bfc3e019c0817a2e04356a1eed5 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:41:49 +0000 Subject: [PATCH 10/27] Lint fix --- src/PgConnectionArgFilterOperatorsPlugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index 27c6b70..15e6c52 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -1046,7 +1046,7 @@ export function makeApplyPlanFromOperatorSpec( return ($where, fieldArgs) => { if (!$where.extensions?.pgFilterAttribute) { throw new Error( - `Planning error: expected 'pgFilterAttribute' to be present on the \$where plan's extensions; your extensions to \`postgraphile-plugin-connection-filter\` does not implement the required interfaces.` + `Planning error: expected 'pgFilterAttribute' to be present on the $where plan's extensions; your extensions to \`postgraphile-plugin-connection-filter\` does not implement the required interfaces.` ); } const $input = fieldArgs.getRaw(); From ea6d806fe5de3eba61e950faaa2c4b83589ccf53 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:43:48 +0000 Subject: [PATCH 11/27] build.EXPORTABLE -> EXPORTABLE --- src/PgConnectionArgFilterLogicalOperatorsPlugin.ts | 7 ++++--- src/PgConnectionArgFilterPlugin.ts | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts index 1687756..dd4aa77 100644 --- a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts @@ -14,6 +14,7 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin const { extend, graphql: { GraphQLList, GraphQLNonNull }, + EXPORTABLE, } = build; const { fieldWithHooks, @@ -39,7 +40,7 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin { description: `Checks for all expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), - applyPlan: build.EXPORTABLE( + applyPlan: EXPORTABLE( () => function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "list"); @@ -60,7 +61,7 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin { description: `Checks for any expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), - applyPlan: build.EXPORTABLE( + applyPlan: EXPORTABLE( () => function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "list"); @@ -80,7 +81,7 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin { description: `Negates the expression.`, type: Self, - applyPlan: build.EXPORTABLE( + applyPlan: EXPORTABLE( () => function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "object"); diff --git a/src/PgConnectionArgFilterPlugin.ts b/src/PgConnectionArgFilterPlugin.ts index 96abb59..61a7560 100644 --- a/src/PgConnectionArgFilterPlugin.ts +++ b/src/PgConnectionArgFilterPlugin.ts @@ -386,6 +386,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { connectionFilterAllowNullInput, connectionFilterAllowEmptyObjectInput, }, + EXPORTABLE, } = build; const { scope: { @@ -444,7 +445,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { return args; } - const assertAllowed = build.EXPORTABLE( + const assertAllowed = EXPORTABLE( () => function (fieldArgs: FieldArgs) { const $raw = fieldArgs.getRaw(); From 65f14b66318a83abedf63da840780662c478e640 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:44:03 +0000 Subject: [PATCH 12/27] More autofixes --- ...PgConnectionArgFilterLogicalOperatorsPlugin.ts | 15 ++++++--------- src/PgConnectionArgFilterPlugin.ts | 5 ++--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts index dd4aa77..0520a85 100644 --- a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts @@ -41,15 +41,14 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin description: `Checks for all expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), applyPlan: EXPORTABLE( - () => - function ($where: PgConditionStep, fieldArgs) { + (assertAllowed) => function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "list"); const $and = $where.andPlan(); // No need for this more correct form, easier to read if it's flatter. // fieldArgs.apply(() => $and.andPlan()); fieldArgs.apply($and); }, - [] + [assertAllowed] ), } ), @@ -62,14 +61,13 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin description: `Checks for any expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), applyPlan: EXPORTABLE( - () => - function ($where: PgConditionStep, fieldArgs) { + (assertAllowed) => function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "list"); const $or = $where.orPlan(); // Every entry is added to the `$or`, but the entries themselves should use an `and`. fieldArgs.apply(() => $or.andPlan()); }, - [] + [assertAllowed] ), } ), @@ -82,14 +80,13 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin description: `Negates the expression.`, type: Self, applyPlan: EXPORTABLE( - () => - function ($where: PgConditionStep, fieldArgs) { + (assertAllowed) => function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "object"); const $not = $where.notPlan(); const $and = $not.andPlan(); fieldArgs.apply($and); }, - [] + [assertAllowed] ), } ), diff --git a/src/PgConnectionArgFilterPlugin.ts b/src/PgConnectionArgFilterPlugin.ts index 61a7560..fc8952b 100644 --- a/src/PgConnectionArgFilterPlugin.ts +++ b/src/PgConnectionArgFilterPlugin.ts @@ -446,8 +446,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { } const assertAllowed = EXPORTABLE( - () => - function (fieldArgs: FieldArgs) { + (connectionFilterAllowEmptyObjectInput, connectionFilterAllowNullInput) => function (fieldArgs: FieldArgs) { const $raw = fieldArgs.getRaw(); if ( !connectionFilterAllowEmptyObjectInput && @@ -474,7 +473,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { ); } }, - [] + [connectionFilterAllowEmptyObjectInput, connectionFilterAllowNullInput] ); const attributeCodec = From 0a6b0115e1a8f07aa7bb629b77bd795f32949b20 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:45:38 +0000 Subject: [PATCH 13/27] Import EXPORTABLE --- src/PgConnectionArgFilterOperatorsPlugin.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index 15e6c52..1ba1923 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -29,6 +29,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { connectionFilterAllowedOperators, connectionFilterOperatorNames, }, + EXPORTABLE, } = build; const { From cf662fa78f0faf4da074c55e34c9dc08288acd9d Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Nov 2023 09:50:16 +0000 Subject: [PATCH 14/27] Uncomment assertAllowed --- src/PgConnectionArgFilterForwardRelationsPlugin.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/PgConnectionArgFilterForwardRelationsPlugin.ts b/src/PgConnectionArgFilterForwardRelationsPlugin.ts index 0546800..5cbdc02 100644 --- a/src/PgConnectionArgFilterForwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterForwardRelationsPlugin.ts @@ -114,8 +114,8 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin description: `Filter by the object’s \`${fieldName}\` relation.`, type: ForeignTableFilterType, applyPlan: EXPORTABLE( - (foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { - //assertAllowed(fieldArgs, "object"); + (assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "object"); const $subQuery = $where.existsPlan({ tableExpression: foreignTableExpression, alias: foreignTable.name, @@ -132,7 +132,7 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin }); fieldArgs.apply($subQuery); }, - [foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] + [assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] ), }) ), @@ -159,8 +159,8 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin description: `A related \`${fieldName}\` exists.`, type: GraphQLBoolean, applyPlan: EXPORTABLE( - (foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { - //assertAllowed(fieldArgs, "scalar"); + (assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "scalar"); const $subQuery = $where.existsPlan({ tableExpression: foreignTableExpression, alias: foreignTable.name, @@ -177,7 +177,7 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin ); }); }, - [foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] + [assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] ), }) ), From 73190960155771b4f5b123d14955983874657f39 Mon Sep 17 00:00:00 2001 From: mattia rossi Date: Thu, 16 Nov 2023 17:26:57 +0100 Subject: [PATCH 15/27] Add EXPORTABLE decorator to function calls, to fix schema export capability --- src/PgConnectionArgFilterAttributesPlugin.ts | 80 ++- ...nectionArgFilterBackwardRelationsPlugin.ts | 394 +++++++---- ...ectionArgFilterComputedAttributesPlugin.ts | 39 +- ...nnectionArgFilterForwardRelationsPlugin.ts | 38 +- ...nnectionArgFilterLogicalOperatorsPlugin.ts | 9 +- src/PgConnectionArgFilterOperatorsPlugin.ts | 661 ++++++++++++------ src/PgConnectionArgFilterPlugin.ts | 122 ++-- 7 files changed, 855 insertions(+), 488 deletions(-) diff --git a/src/PgConnectionArgFilterAttributesPlugin.ts b/src/PgConnectionArgFilterAttributesPlugin.ts index bef0eb0..510d396 100644 --- a/src/PgConnectionArgFilterAttributesPlugin.ts +++ b/src/PgConnectionArgFilterAttributesPlugin.ts @@ -18,6 +18,7 @@ export const PgConnectionArgFilterAttributesPlugin: GraphileConfig.Plugin = { inflection, connectionFilterOperatorsDigest, dataplanPg: { PgConditionStep }, + EXPORTABLE, } = build; const { fieldWithHooks, @@ -65,39 +66,56 @@ export const PgConnectionArgFilterAttributesPlugin: GraphileConfig.Plugin = { () => ({ description: `Filter by the object’s \`${fieldName}\` field.`, type: OperatorsType, - applyPlan($where: PgConditionStep, fieldArgs) { - const $raw = fieldArgs.getRaw(); - if ($raw.evalIs(undefined)) { - return; - } - if ( - !connectionFilterAllowEmptyObjectInput && - "evalIsEmpty" in $raw && - $raw.evalIsEmpty() - ) { - throw Object.assign( - new Error( - "Empty objects are forbidden in filter argument input." - ), - { - //TODO: mark this error as safe + applyPlan: EXPORTABLE( + ( + PgConditionStep, + colSpec, + connectionFilterAllowEmptyObjectInput, + connectionFilterAllowNullInput + ) => + function ($where: PgConditionStep, fieldArgs: any) { + const $raw = fieldArgs.getRaw(); + if ($raw.evalIs(undefined)) { + return; } - ); - } - if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { - throw Object.assign( - new Error( - "Null literals are forbidden in filter argument input." - ), - { - //TODO: mark this error as safe + if ( + !connectionFilterAllowEmptyObjectInput && + "evalIsEmpty" in $raw && + $raw.evalIsEmpty() + ) { + throw Object.assign( + new Error( + "Empty objects are forbidden in filter argument input." + ), + { + //TODO: mark this error as safe + } + ); } - ); - } - const $col = new PgConditionStep($where); - $col.extensions.pgFilterAttribute = colSpec; - fieldArgs.apply($col); - }, + if ( + !connectionFilterAllowNullInput && + $raw.evalIs(null) + ) { + throw Object.assign( + new Error( + "Null literals are forbidden in filter argument input." + ), + { + //TODO: mark this error as safe + } + ); + } + const $col = new PgConditionStep($where); + $col.extensions.pgFilterAttribute = colSpec; + fieldArgs.apply($col); + }, + [ + PgConditionStep, + colSpec, + connectionFilterAllowEmptyObjectInput, + connectionFilterAllowNullInput, + ] + ), }) ), }, diff --git a/src/PgConnectionArgFilterBackwardRelationsPlugin.ts b/src/PgConnectionArgFilterBackwardRelationsPlugin.ts index 166c7cb..8611aeb 100644 --- a/src/PgConnectionArgFilterBackwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterBackwardRelationsPlugin.ts @@ -116,6 +116,7 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin inflection, sql, graphql: { GraphQLBoolean }, + EXPORTABLE, } = build; const { fieldWithHooks, @@ -357,18 +358,37 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `Filter by the object’s \`${fieldName}\` relation.`, type: FilterManyType, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "object"); - // $where.alias represents source; we need a condition that references the relational target - const $rel = $where.andPlan(); - $rel.extensions.pgFilterRelation = { - tableExpression: foreignTableExpression, - alias: foreignTable.name, + applyPlan: EXPORTABLE( + ( + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes + ) => + function ( + $where: PgConditionStep, + fieldArgs + ) { + assertAllowed(fieldArgs, "object"); + // $where.alias represents source; we need a condition that references the relational target + const $rel = $where.andPlan(); + $rel.extensions.pgFilterRelation = { + tableExpression: foreignTableExpression, + alias: foreignTable.name, + localAttributes, + remoteAttributes, + }; + fieldArgs.apply($rel); + }, + [ + assertAllowed, + foreignTable, + foreignTableExpression, localAttributes, remoteAttributes, - }; - fieldArgs.apply($rel); - }, + ] + ), }) ), }, @@ -395,24 +415,45 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin // and in PgConnectionArgFilterForwardRelationsPlugin // are very very similar. We should extract them to a // helper function. - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "scalar"); - const $subQuery = $where.existsPlan({ - tableExpression: foreignTableExpression, - alias: foreignTable.name, - $equals: fieldArgs.get(), - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - }, + applyPlan: EXPORTABLE( + ( + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql + ) => + function ( + $where: PgConditionStep, + fieldArgs + ) { + assertAllowed(fieldArgs, "scalar"); + const $subQuery = $where.existsPlan({ + tableExpression: foreignTableExpression, + alias: foreignTable.name, + $equals: fieldArgs.get(), + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + }, + [ + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql, + ] + ), }) ), }, @@ -440,24 +481,42 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `Filter by the object’s \`${fieldName}\` relation.`, type: ForeignTableFilterType, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "object"); - const $subQuery = $where.existsPlan({ - tableExpression: foreignTableExpression, - alias: foreignTable.name, - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - fieldArgs.apply($subQuery); - }, + applyPlan: EXPORTABLE( + ( + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql + ) => + function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "object"); + const $subQuery = $where.existsPlan({ + tableExpression: foreignTableExpression, + alias: foreignTable.name, + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + fieldArgs.apply($subQuery); + }, + [ + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql, + ] + ), }) ), }, @@ -480,24 +539,45 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `A related \`${fieldName}\` exists.`, type: GraphQLBoolean, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "scalar"); - const $subQuery = $where.existsPlan({ - tableExpression: foreignTableExpression, - alias: foreignTable.name, - $equals: fieldArgs.get(), - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - }, + applyPlan: EXPORTABLE( + ( + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql + ) => + function ( + $where: PgConditionStep, + fieldArgs + ) { + assertAllowed(fieldArgs, "scalar"); + const $subQuery = $where.existsPlan({ + tableExpression: foreignTableExpression, + alias: foreignTable.name, + $equals: fieldArgs.get(), + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + }, + [ + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql, + ] + ), }) ), }, @@ -525,35 +605,39 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `Every related \`${foreignTableTypeName}\` matches the filter criteria. All fields are combined with a logical ‘and.’`, type: FilterType, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "object"); - if (!$where.extensions.pgFilterRelation) { - throw new Error( - `Invalid use of filter, 'pgFilterRelation' expected` - ); - } - const { - localAttributes, - remoteAttributes, - tableExpression, - alias, - } = $where.extensions.pgFilterRelation; - const $subQuery = $where.notPlan().existsPlan({ - tableExpression, - alias, - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - fieldArgs.apply($subQuery.notPlan().andPlan()); - }, + applyPlan: EXPORTABLE( + (assertAllowed, sql) => + function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "object"); + if (!$where.extensions.pgFilterRelation) { + throw new Error( + `Invalid use of filter, 'pgFilterRelation' expected` + ); + } + const { + localAttributes, + remoteAttributes, + tableExpression, + alias, + } = $where.extensions.pgFilterRelation; + const $subQuery = $where.notPlan().existsPlan({ + tableExpression, + alias, + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + fieldArgs.apply($subQuery.notPlan().andPlan()); + }, + [assertAllowed, sql] + ), }) ), some: fieldWithHooks( @@ -564,35 +648,39 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `Some related \`${foreignTableTypeName}\` matches the filter criteria. All fields are combined with a logical ‘and.’`, type: FilterType, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "object"); - if (!$where.extensions.pgFilterRelation) { - throw new Error( - `Invalid use of filter, 'pgFilterRelation' expected` - ); - } - const { - localAttributes, - remoteAttributes, - tableExpression, - alias, - } = $where.extensions.pgFilterRelation; - const $subQuery = $where.existsPlan({ - tableExpression, - alias, - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - fieldArgs.apply($subQuery); - }, + applyPlan: EXPORTABLE( + (assertAllowed, sql) => + function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "object"); + if (!$where.extensions.pgFilterRelation) { + throw new Error( + `Invalid use of filter, 'pgFilterRelation' expected` + ); + } + const { + localAttributes, + remoteAttributes, + tableExpression, + alias, + } = $where.extensions.pgFilterRelation; + const $subQuery = $where.existsPlan({ + tableExpression, + alias, + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + fieldArgs.apply($subQuery); + }, + [assertAllowed, sql] + ), }) ), none: fieldWithHooks( @@ -603,35 +691,39 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin () => ({ description: `No related \`${foreignTableTypeName}\` matches the filter criteria. All fields are combined with a logical ‘and.’`, type: FilterType, - applyPlan($where: PgConditionStep, fieldArgs) { - assertAllowed(fieldArgs, "object"); - if (!$where.extensions.pgFilterRelation) { - throw new Error( - `Invalid use of filter, 'pgFilterRelation' expected` - ); - } - const { - localAttributes, - remoteAttributes, - tableExpression, - alias, - } = $where.extensions.pgFilterRelation; - const $subQuery = $where.notPlan().existsPlan({ - tableExpression, - alias, - }); - localAttributes.forEach((localAttribute, i) => { - const remoteAttribute = remoteAttributes[i]; - $subQuery.where( - sql`${$where.alias}.${sql.identifier( - localAttribute as string - )} = ${$subQuery.alias}.${sql.identifier( - remoteAttribute as string - )}` - ); - }); - fieldArgs.apply($subQuery); - }, + applyPlan: EXPORTABLE( + (assertAllowed, sql) => + function ($where: PgConditionStep, fieldArgs) { + assertAllowed(fieldArgs, "object"); + if (!$where.extensions.pgFilterRelation) { + throw new Error( + `Invalid use of filter, 'pgFilterRelation' expected` + ); + } + const { + localAttributes, + remoteAttributes, + tableExpression, + alias, + } = $where.extensions.pgFilterRelation; + const $subQuery = $where.notPlan().existsPlan({ + tableExpression, + alias, + }); + localAttributes.forEach((localAttribute, i) => { + const remoteAttribute = remoteAttributes[i]; + $subQuery.where( + sql`${$where.alias}.${sql.identifier( + localAttribute as string + )} = ${$subQuery.alias}.${sql.identifier( + remoteAttribute as string + )}` + ); + }); + fieldArgs.apply($subQuery); + }, + [assertAllowed, sql] + ), }) ), }; diff --git a/src/PgConnectionArgFilterComputedAttributesPlugin.ts b/src/PgConnectionArgFilterComputedAttributesPlugin.ts index 0fc37d4..15dfdd6 100644 --- a/src/PgConnectionArgFilterComputedAttributesPlugin.ts +++ b/src/PgConnectionArgFilterComputedAttributesPlugin.ts @@ -3,6 +3,7 @@ import { getComputedAttributeResources, isComputedScalarAttributeResource, } from "./utils"; +import { EXPORTABLE } from "graphile-build"; const { version } = require("../package.json"); @@ -126,22 +127,28 @@ export const PgConnectionArgFilterComputedAttributesPlugin: GraphileConfig.Plugi { description: `Filter by the object’s \`${fieldName}\` field.`, type: OperatorsType, - applyPlan($where: PgConditionStep, fieldArgs) { - if ( - typeof computedAttributeResource.from !== "function" - ) { - throw new Error(`Unexpected...`); - } - const expression = computedAttributeResource.from({ - placeholder: $where.alias, - }); - const $col = new PgConditionStep($where); - $col.extensions.pgFilterAttribute = { - codec: functionResultCodec, - expression, - }; - fieldArgs.apply($col); - }, + applyPlan: EXPORTABLE( + (PgConditionStep, computedAttributeResource, functionResultCodec) => function ( + $where: PgConditionStep, + fieldArgs: any + ) { + if ( + typeof computedAttributeResource.from !== "function" + ) { + throw new Error(`Unexpected...`); + } + const expression = computedAttributeResource.from({ + placeholder: $where.alias, + }); + const $col = new PgConditionStep($where); + $col.extensions.pgFilterAttribute = { + codec: functionResultCodec, + expression, + }; + fieldArgs.apply($col); + }, + [PgConditionStep, computedAttributeResource, functionResultCodec] + ), } ), }, diff --git a/src/PgConnectionArgFilterForwardRelationsPlugin.ts b/src/PgConnectionArgFilterForwardRelationsPlugin.ts index 5cbdc02..a99ad2a 100644 --- a/src/PgConnectionArgFilterForwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterForwardRelationsPlugin.ts @@ -114,7 +114,15 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin description: `Filter by the object’s \`${fieldName}\` relation.`, type: ForeignTableFilterType, applyPlan: EXPORTABLE( - (assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { + ( + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql + ) => + function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "object"); const $subQuery = $where.existsPlan({ tableExpression: foreignTableExpression, @@ -132,7 +140,14 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin }); fieldArgs.apply($subQuery); }, - [assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] + [ + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql, + ] ), }) ), @@ -159,7 +174,15 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin description: `A related \`${fieldName}\` exists.`, type: GraphQLBoolean, applyPlan: EXPORTABLE( - (assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql) => function ($where: PgConditionStep, fieldArgs) { + ( + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql + ) => + function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "scalar"); const $subQuery = $where.existsPlan({ tableExpression: foreignTableExpression, @@ -177,7 +200,14 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin ); }); }, - [assertAllowed, foreignTable, foreignTableExpression, localAttributes, remoteAttributes, sql] + [ + assertAllowed, + foreignTable, + foreignTableExpression, + localAttributes, + remoteAttributes, + sql, + ] ), }) ), diff --git a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts index 0520a85..c21656b 100644 --- a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts @@ -41,7 +41,8 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin description: `Checks for all expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), applyPlan: EXPORTABLE( - (assertAllowed) => function ($where: PgConditionStep, fieldArgs) { + (assertAllowed) => + function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "list"); const $and = $where.andPlan(); // No need for this more correct form, easier to read if it's flatter. @@ -61,7 +62,8 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin description: `Checks for any expressions in this list.`, type: new GraphQLList(new GraphQLNonNull(Self)), applyPlan: EXPORTABLE( - (assertAllowed) => function ($where: PgConditionStep, fieldArgs) { + (assertAllowed) => + function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "list"); const $or = $where.orPlan(); // Every entry is added to the `$or`, but the entries themselves should use an `and`. @@ -80,7 +82,8 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin description: `Negates the expression.`, type: Self, applyPlan: EXPORTABLE( - (assertAllowed) => function ($where: PgConditionStep, fieldArgs) { + (assertAllowed) => + function ($where: PgConditionStep, fieldArgs) { assertAllowed(fieldArgs, "object"); const $not = $where.notPlan(); const $and = $not.andPlan(); diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index 1ba1923..5c1d4a5 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -75,116 +75,162 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { TYPES.bpchar, ]; const forceTextTypesInsensitive = [TYPES.char, TYPES.bpchar]; - const resolveDomains = ( - c: PgCodec - ): PgCodec => { - return c.domainOfCodec ? resolveDomains(c.domainOfCodec) : c; - }; + const resolveDomains = EXPORTABLE( + () => + function ( + c: PgCodec + ): PgCodec { + return c.domainOfCodec ? resolveDomains(c.domainOfCodec) : c; + }, + [] + ); - const resolveArrayInputCodecSensitive = ( - c: PgCodec - ) => { - if (forceTextTypesSensitive.includes(resolveDomains(c))) { - return listOfCodec(TYPES.text, { - extensions: { listItemNonNull: true }, - }); - } else { - return listOfCodec(c, { extensions: { listItemNonNull: true } }); - } - }; + const resolveArrayInputCodecSensitive = EXPORTABLE( + (TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains) => + function (c: PgCodec) { + if (forceTextTypesSensitive.includes(resolveDomains(c))) { + return listOfCodec(TYPES.text, { + extensions: { listItemNonNull: true }, + }); + } else { + return listOfCodec(c, { + extensions: { listItemNonNull: true }, + }); + } + }, + [TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains] + ); - const resolveArrayItemInputCodecSensitive = ( - c: PgCodec - ) => { - if (c.arrayOfCodec) { - if ( - forceTextTypesSensitive.includes(resolveDomains(c.arrayOfCodec)) - ) { - return TYPES.text; - } - return c.arrayOfCodec; - } else { - throw new Error(`Expected array codec`); - } - }; - const resolveInputCodecSensitive = ( - c: PgCodec - ) => { - if (c.arrayOfCodec) { - if ( - forceTextTypesSensitive.includes(resolveDomains(c.arrayOfCodec)) + const resolveArrayItemInputCodecSensitive = EXPORTABLE( + (TYPES, forceTextTypesSensitive, resolveDomains) => + function (c: PgCodec) { + if (c.arrayOfCodec) { + if ( + forceTextTypesSensitive.includes( + resolveDomains(c.arrayOfCodec) + ) + ) { + return TYPES.text; + } + return c.arrayOfCodec; + } else { + throw new Error(`Expected array codec`); + } + }, + [TYPES, forceTextTypesSensitive, resolveDomains] + ); + const resolveInputCodecSensitive = EXPORTABLE( + (TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains) => + function (c: PgCodec) { + if (c.arrayOfCodec) { + if ( + forceTextTypesSensitive.includes( + resolveDomains(c.arrayOfCodec) + ) + ) { + return listOfCodec(TYPES.text, { + extensions: { + listItemNonNull: c.extensions?.listItemNonNull, + }, + }); + } + return c; + } else { + if (forceTextTypesSensitive.includes(resolveDomains(c))) { + return TYPES.text; + } + return c; + } + }, + [TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains] + ); + const resolveSqlIdentifierSensitive = EXPORTABLE( + (TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains, sql) => + function ( + identifier: SQL, + c: PgCodec ) { - return listOfCodec(TYPES.text, { - extensions: { listItemNonNull: c.extensions?.listItemNonNull }, - }); - } - return c; - } else { - if (forceTextTypesSensitive.includes(resolveDomains(c))) { - return TYPES.text; - } - return c; - } - }; - const resolveSqlIdentifierSensitive = ( - identifier: SQL, - c: PgCodec - ) => { - if ( - c.arrayOfCodec && - forceTextTypesSensitive.includes(resolveDomains(c.arrayOfCodec)) - ) { - return [ - sql`(${identifier})::text[]`, - listOfCodec(TYPES.text, { - extensions: { listItemNonNull: c.extensions?.listItemNonNull }, - }), - ] as const; - } else if (forceTextTypesSensitive.includes(resolveDomains(c))) { - return [sql`(${identifier})::text`, TYPES.text] as const; - } else { - return [identifier, c] as const; - } - }; - const resolveInputCodecInsensitive = ( - c: PgCodec - ) => { - if (c.arrayOfCodec) { - if ( - forceTextTypesInsensitive.includes(resolveDomains(c.arrayOfCodec)) + if ( + c.arrayOfCodec && + forceTextTypesSensitive.includes(resolveDomains(c.arrayOfCodec)) + ) { + return [ + sql`(${identifier})::text[]`, + listOfCodec(TYPES.text, { + extensions: { + listItemNonNull: c.extensions?.listItemNonNull, + }, + }), + ] as const; + } else if (forceTextTypesSensitive.includes(resolveDomains(c))) { + return [sql`(${identifier})::text`, TYPES.text] as const; + } else { + return [identifier, c] as const; + } + }, + [TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains, sql] + ); + const resolveInputCodecInsensitive = EXPORTABLE( + (TYPES, forceTextTypesInsensitive, listOfCodec, resolveDomains) => + function (c: PgCodec) { + if (c.arrayOfCodec) { + if ( + forceTextTypesInsensitive.includes( + resolveDomains(c.arrayOfCodec) + ) + ) { + return listOfCodec(TYPES.text, { + extensions: { + listItemNonNull: c.extensions?.listItemNonNull, + }, + }); + } + return c; + } else { + if (forceTextTypesInsensitive.includes(resolveDomains(c))) { + return TYPES.text; + } + return c; + } + }, + [TYPES, forceTextTypesInsensitive, listOfCodec, resolveDomains] + ); + const resolveSqlIdentifierInsensitive = EXPORTABLE( + ( + TYPES, + forceTextTypesInsensitive, + listOfCodec, + resolveDomains, + sql + ) => + function ( + identifier: SQL, + c: PgCodec ) { - return listOfCodec(TYPES.text, { - extensions: { listItemNonNull: c.extensions?.listItemNonNull }, - }); - } - return c; - } else { - if (forceTextTypesInsensitive.includes(resolveDomains(c))) { - return TYPES.text; - } - return c; - } - }; - const resolveSqlIdentifierInsensitive = ( - identifier: SQL, - c: PgCodec - ) => { - if ( - c.arrayOfCodec && - forceTextTypesInsensitive.includes(resolveDomains(c.arrayOfCodec)) - ) { - return [ - sql`(${identifier})::text[]`, - listOfCodec(TYPES.text, { - extensions: { listItemNonNull: c.extensions?.listItemNonNull }, - }), - ] as const; - } else if (forceTextTypesInsensitive.includes(resolveDomains(c))) { - return [sql`(${identifier})::text`, TYPES.text] as const; - } else { - return [identifier, c] as const; - } - }; + if ( + c.arrayOfCodec && + forceTextTypesInsensitive.includes( + resolveDomains(c.arrayOfCodec) + ) + ) { + return [ + sql`(${identifier})::text[]`, + listOfCodec(TYPES.text, { + extensions: { + listItemNonNull: c.extensions?.listItemNonNull, + }, + }), + ] as const; + } else if ( + forceTextTypesInsensitive.includes(resolveDomains(c)) + ) { + return [sql`(${identifier})::text`, TYPES.text] as const; + } else { + return [identifier, c] as const; + } + }, + [TYPES, forceTextTypesInsensitive, listOfCodec, resolveDomains, sql] + ); const standardOperators: { [fieldName: string]: OperatorSpec } = { isNull: { @@ -267,22 +313,52 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { { includes: { description: "Contains the specified string (case-sensitive).", - resolveInput: (input) => `%${escapeLikeWildcards(input)}%`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, - resolve: (i, v) => sql`${i} LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${i} LIKE ${v}`; + }, + [sql] + ), }, notIncludes: { description: "Does not contain the specified string (case-sensitive).", - resolveInput: (input) => `%${escapeLikeWildcards(input)}%`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, - resolve: (i, v) => sql`${i} NOT LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${i} NOT LIKE ${v}`; + }, + [sql] + ), }, includesInsensitive: { description: "Contains the specified string (case-insensitive).", - resolveInput: (input) => `%${escapeLikeWildcards(input)}%`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolve: (i, v) => sql`${i} ILIKE ${v}`, resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, @@ -297,7 +373,13 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, startsWith: { description: "Starts with the specified string (case-sensitive).", - resolveInput: (input) => `${escapeLikeWildcards(input)}%`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} LIKE ${v}`, @@ -305,7 +387,13 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { notStartsWith: { description: "Does not start with the specified string (case-sensitive).", - resolveInput: (input) => `${escapeLikeWildcards(input)}%`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} NOT LIKE ${v}`, @@ -313,7 +401,13 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { startsWithInsensitive: { description: "Starts with the specified string (case-insensitive).", - resolveInput: (input) => `${escapeLikeWildcards(input)}%`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolve: (i, v) => sql`${i} ILIKE ${v}`, resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, @@ -328,7 +422,13 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, endsWith: { description: "Ends with the specified string (case-sensitive).", - resolveInput: (input) => `%${escapeLikeWildcards(input)}`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} LIKE ${v}`, @@ -336,14 +436,26 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { notEndsWith: { description: "Does not end with the specified string (case-sensitive).", - resolveInput: (input) => `%${escapeLikeWildcards(input)}`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} NOT LIKE ${v}`, }, endsWithInsensitive: { description: "Ends with the specified string (case-insensitive).", - resolveInput: (input) => `%${escapeLikeWildcards(input)}`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolve: (i, v) => sql`${i} ILIKE ${v}`, resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, @@ -351,7 +463,13 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { notEndsWithInsensitive: { description: "Does not end with the specified string (case-insensitive).", - resolveInput: (input) => `%${escapeLikeWildcards(input)}`, + resolveInput: EXPORTABLE( + (escapeLikeWildcards) => + function (input) { + return `%${escapeLikeWildcards(input)}%`; + }, + [escapeLikeWildcards] + ), resolve: (i, v) => sql`${i} NOT ILIKE ${v}`, resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, @@ -514,50 +632,66 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { resolveDomains(codec) === TYPES.citext ? ([sourceAlias, codec] as const) // already case-insensitive, so no need to call `lower()` : ([sql`lower(${sourceAlias}::text)`, TYPES.text] as const); - const resolveSqlValue = ( - $placeholderable: PlaceholderableStep, - $input: InputStep, - inputCodec: PgCodec - ) => { - if (name === "in" || name === "notIn") { - const sqlList = $placeholderable.placeholder($input, inputCodec); - if (inputCodec.arrayOfCodec === TYPES.citext) { - // already case-insensitive, so no need to call `lower()` - return sqlList; - } else { - // This is being used in an `= ANY(subquery)` syntax, so no - // need to array_agg it. See - // https://www.postgresql.org/docs/current/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME - return sql`(select lower(t) from unnest(${sqlList}) t)`; - } - } else { - const sqlValue = $placeholderable.placeholder($input, inputCodec); - if (inputCodec === TYPES.citext) { - // already case-insensitive, so no need to call `lower()` - return sqlValue; - } else { - return sql`lower(${sqlValue})`; - } - } - }; + const resolveSqlValue = EXPORTABLE( + (TYPES, name, sql) => + function ( + $placeholderable: PlaceholderableStep, + $input: InputStep, + inputCodec: PgCodec + ) { + if (name === "in" || name === "notIn") { + const sqlList = $placeholderable.placeholder( + $input, + inputCodec + ); + if (inputCodec.arrayOfCodec === TYPES.citext) { + // already case-insensitive, so no need to call `lower()` + return sqlList; + } else { + // This is being used in an `= ANY(subquery)` syntax, so no + // need to array_agg it. See + // https://www.postgresql.org/docs/current/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME + return sql`(select lower(t) from unnest(${sqlList}) t)`; + } + } else { + const sqlValue = $placeholderable.placeholder( + $input, + inputCodec + ); + if (inputCodec === TYPES.citext) { + // already case-insensitive, so no need to call `lower()` + return sqlValue; + } else { + return sql`lower(${sqlValue})`; + } + } + }, + [TYPES, name, sql] + ); - const resolveInputCodec = ( - inputCodec: PgCodec - ) => { - if (name === "in" || name === "notIn") { - const t = - resolveDomains(inputCodec) === TYPES.citext - ? inputCodec - : TYPES.text; - return listOfCodec(t, { extensions: { listItemNonNull: true } }); - } else { - const t = - resolveDomains(inputCodec) === TYPES.citext - ? inputCodec - : TYPES.text; - return t; - } - }; + const resolveInputCodec = EXPORTABLE( + (TYPES, listOfCodec, name, resolveDomains) => + function ( + inputCodec: PgCodec + ) { + if (name === "in" || name === "notIn") { + const t = + resolveDomains(inputCodec) === TYPES.citext + ? inputCodec + : TYPES.text; + return listOfCodec(t, { + extensions: { listItemNonNull: true }, + }); + } else { + const t = + resolveDomains(inputCodec) === TYPES.citext + ? inputCodec + : TYPES.text; + return t; + } + }, + [TYPES, listOfCodec, name, resolveDomains] + ); insensitiveOperators[`${name}Insensitive`] = { ...spec, @@ -593,7 +727,13 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { ); } }, - resolve: (i, v) => sql`${i} @> ${v}`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${i} @> ${v}`; + }, + [sql] + ), }, containedBy: { description: "Contained by the specified range.", @@ -638,51 +778,105 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { description: "Contains the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: (i, v) => sql`${i} @> ${v}`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${i} @> ${v}`; + }, + [sql] + ), }, containedBy: { description: "Contained by the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: (i, v) => sql`${i} <@ ${v}`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${i} <@ ${v}`; + }, + [sql] + ), }, overlaps: { description: "Overlaps the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: (i, v) => sql`${i} && ${v}`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${i} && ${v}`; + }, + [sql] + ), }, anyEqualTo: { description: "Any array item is equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} = ANY (${i})`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${v} = ANY (${i})`; + }, + [sql] + ), }, anyNotEqualTo: { description: "Any array item is not equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} <> ANY (${i})`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${v} <> ANY (${i})`; + }, + [sql] + ), }, anyLessThan: { description: "Any array item is less than the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} > ANY (${i})`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${v} > ANY (${i})`; + }, + [sql] + ), }, anyLessThanOrEqualTo: { description: "Any array item is less than or equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} >= ANY (${i})`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${v} >= ANY (${i})`; + }, + [sql] + ), }, anyGreaterThan: { description: "Any array item is greater than the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} < ANY (${i})`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${v} < ANY (${i})`; + }, + [sql] + ), }, anyGreaterThanOrEqualTo: { description: "Any array item is greater than or equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} <= ANY (${i})`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql`${v} <= ANY (${i})`; + }, + [sql] + ), }, }; @@ -960,7 +1154,11 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { Object.create(null) as GrafastInputFieldConfigMap ); - return extend(fields, operatorFields, ""); + return EXPORTABLE( + (extend, fields, operatorFields) => + extend(fields, operatorFields, ""), + [extend, fields, operatorFields] + ); }, }, }, @@ -1012,6 +1210,7 @@ export function makeApplyPlanFromOperatorSpec( sql, grafast: { lambda }, dataplanPg: { TYPES }, + EXPORTABLE, } = build; const { description, @@ -1044,67 +1243,91 @@ export function makeApplyPlanFromOperatorSpec( options: { connectionFilterAllowNullInput }, } = build; - return ($where, fieldArgs) => { - if (!$where.extensions?.pgFilterAttribute) { - throw new Error( - `Planning error: expected 'pgFilterAttribute' to be present on the $where plan's extensions; your extensions to \`postgraphile-plugin-connection-filter\` does not implement the required interfaces.` - ); - } - const $input = fieldArgs.getRaw(); - if ($input.evalIs(undefined)) { - return; - } - const { attributeName, attribute, codec, expression } = - $where.extensions.pgFilterAttribute; + return EXPORTABLE( + ( + connectionFilterAllowNullInput, + lambda, + resolve, + resolveInput, + resolveInputCodec, + resolveSqlIdentifier, + resolveSqlValue, + sql + ) => + function ($where, fieldArgs) { + if (!$where.extensions?.pgFilterAttribute) { + throw new Error( + `Planning error: expected 'pgFilterAttribute' to be present on the $where plan's extensions; your extensions to \`postgraphile-plugin-connection-filter\` does not implement the required interfaces.` + ); + } + const $input = fieldArgs.getRaw(); + if ($input.evalIs(undefined)) { + return; + } + const { attributeName, attribute, codec, expression } = + $where.extensions.pgFilterAttribute; - const sourceAlias = attribute - ? attribute.expression - ? attribute.expression($where.alias) - : sql`${$where.alias}.${sql.identifier(attributeName)}` - : expression - ? expression - : $where.alias; - const sourceCodec = codec ?? attribute.codec; + const sourceAlias = attribute + ? attribute.expression + ? attribute.expression($where.alias) + : sql`${$where.alias}.${sql.identifier(attributeName)}` + : expression + ? expression + : $where.alias; + const sourceCodec = codec ?? attribute.codec; - const [sqlIdentifier, identifierCodec] = resolveSqlIdentifier - ? resolveSqlIdentifier(sourceAlias, sourceCodec) - : /* + const [sqlIdentifier, identifierCodec] = resolveSqlIdentifier + ? resolveSqlIdentifier(sourceAlias, sourceCodec) + : /* : attribute.codec === TYPES.citext ? sql.query`${sourceAlias}::text` // cast attribute to text for case-sensitive matching : attribute.codec.arrayOfCodec === TYPES.citext ? sql.query`${sourceAlias}::text[]` // cast attribute to text[] for case-sensitive matching */ - [sourceAlias, sourceCodec]; + [sourceAlias, sourceCodec]; - if (connectionFilterAllowNullInput && $input.evalIs(null)) { - // Don't add a filter - return; - } - if (!connectionFilterAllowNullInput && $input.evalIs(null)) { - // Forbidden - throw Object.assign( - new Error("Null literals are forbidden in filter argument input."), - { - //TODO: mark this error as safe + if (connectionFilterAllowNullInput && $input.evalIs(null)) { + // Don't add a filter + return; } - ); - } - const $resolvedInput = resolveInput ? lambda($input, resolveInput) : $input; - const inputCodec = resolveInputCodec - ? resolveInputCodec(codec ?? attribute.codec) - : codec ?? attribute.codec; + if (!connectionFilterAllowNullInput && $input.evalIs(null)) { + // Forbidden + throw Object.assign( + new Error("Null literals are forbidden in filter argument input."), + { + //TODO: mark this error as safe + } + ); + } + const $resolvedInput = resolveInput + ? lambda($input, resolveInput) + : $input; + const inputCodec = resolveInputCodec + ? resolveInputCodec(codec ?? attribute.codec) + : codec ?? attribute.codec; - const sqlValue = resolveSqlValue - ? resolveSqlValue($where, $input, inputCodec) - : /* + const sqlValue = resolveSqlValue + ? resolveSqlValue($where, $input, inputCodec) + : /* : attribute.codec === TYPES.citext ? $where.placeholder($resolvedInput, TYPES.text) // cast input to text : attribute.codec.arrayOfCodec === TYPES.citext ? $where.placeholder($resolvedInput, listOfCodec(TYPES.citext as any)) // cast input to text[] */ - $where.placeholder($resolvedInput, inputCodec); + $where.placeholder($resolvedInput, inputCodec); - const fragment = resolve(sqlIdentifier, sqlValue, $input, $where); - $where.where(fragment); - }; + const fragment = resolve(sqlIdentifier, sqlValue, $input, $where); + $where.where(fragment); + }, + [ + connectionFilterAllowNullInput, + lambda, + resolve, + resolveInput, + resolveInputCodec, + resolveSqlIdentifier, + resolveSqlValue, + sql, + ] + ); } diff --git a/src/PgConnectionArgFilterPlugin.ts b/src/PgConnectionArgFilterPlugin.ts index fc8952b..79beef3 100644 --- a/src/PgConnectionArgFilterPlugin.ts +++ b/src/PgConnectionArgFilterPlugin.ts @@ -6,6 +6,8 @@ import type { GraphQLNamedType, } from "graphql"; import { OperatorsCategory } from "./interfaces"; +import { makeAssertAllowed } from "./utils"; +import { EXPORTABLE } from "graphile-export"; const { version } = require("../package.json"); // eslint-disable-line @@ -229,15 +231,19 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { }; }; - build.escapeLikeWildcards = (input) => { - if ("string" !== typeof input) { - throw new Error( - "Non-string input was provided to escapeLikeWildcards" - ); - } else { - return input.split("%").join("\\%").split("_").join("\\_"); - } - }; + build.escapeLikeWildcards = EXPORTABLE( + () => + function (input) { + if ("string" !== typeof input) { + throw new Error( + "Non-string input was provided to escapeLikeWildcards" + ); + } else { + return input.split("%").join("\\%").split("_").join("\\_"); + } + }, + [] + ); return build; }, @@ -445,36 +451,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { return args; } - const assertAllowed = EXPORTABLE( - (connectionFilterAllowEmptyObjectInput, connectionFilterAllowNullInput) => function (fieldArgs: FieldArgs) { - const $raw = fieldArgs.getRaw(); - if ( - !connectionFilterAllowEmptyObjectInput && - "evalIsEmpty" in $raw && - $raw.evalIsEmpty() - ) { - throw Object.assign( - new Error( - "Empty objects are forbidden in filter argument input." - ), - { - //TODO: mark this error as safe - } - ); - } - if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { - throw Object.assign( - new Error( - "Null literals are forbidden in filter argument input." - ), - { - //TODO: mark this error as safe - } - ); - } - }, - [connectionFilterAllowEmptyObjectInput, connectionFilterAllowNullInput] - ); + const assertAllowed = makeAssertAllowed(build.options); const attributeCodec = resource?.parameters && !resource?.codec.attributes @@ -491,33 +468,50 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { autoApplyAfterParentPlan: true, ...(isPgFieldConnection ? { - applyPlan( - _, - $connection: ConnectionStep, - fieldArgs - ) { - assertAllowed(fieldArgs); - const $pgSelect = $connection.getSubplan(); - const $where = $pgSelect.wherePlan(); - if (attributeCodec) { - $where.extensions.pgFilterAttribute = { - codec: attributeCodec, - }; - } - fieldArgs.apply($where); - }, + applyPlan: EXPORTABLE( + (assertAllowed, attributeCodec) => + function ( + _: any, + $connection: ConnectionStep< + any, + any, + any, + PgSelectStep + >, + fieldArgs: any + ) { + assertAllowed(fieldArgs, "object"); + const $pgSelect = $connection.getSubplan(); + const $where = $pgSelect.wherePlan(); + if (attributeCodec) { + $where.extensions.pgFilterAttribute = { + codec: attributeCodec, + }; + } + fieldArgs.apply($where); + }, + [assertAllowed, attributeCodec] + ), } : { - applyPlan(_, $pgSelect: PgSelectStep, fieldArgs) { - assertAllowed(fieldArgs); - const $where = $pgSelect.wherePlan(); - if (attributeCodec) { - $where.extensions.pgFilterAttribute = { - codec: attributeCodec, - }; - } - fieldArgs.apply($where); - }, + applyPlan: EXPORTABLE( + (assertAllowed, attributeCodec) => + function ( + _: any, + $pgSelect: PgSelectStep, + fieldArgs: any + ) { + assertAllowed(fieldArgs, "object"); + const $where = $pgSelect.wherePlan(); + if (attributeCodec) { + $where.extensions.pgFilterAttribute = { + codec: attributeCodec, + }; + } + fieldArgs.apply($where); + }, + [assertAllowed, attributeCodec] + ), }), }, }, From 3786a27598ecac66bf13b54758968fbc6ad104ae Mon Sep 17 00:00:00 2001 From: mattia rossi Date: Fri, 17 Nov 2023 13:49:25 +0100 Subject: [PATCH 16/27] Add exported schema test functionality, fix standard tests by removing some EXPORTABLE calls --- __tests__/integration/queries.test.ts | 190 +++++++++++++------- package.json | 3 +- src/PgConnectionArgFilterOperatorsPlugin.ts | 158 ++++------------ yarn.lock | 4 +- 4 files changed, 162 insertions(+), 193 deletions(-) diff --git a/__tests__/integration/queries.test.ts b/__tests__/integration/queries.test.ts index c359a76..95b0b39 100644 --- a/__tests__/integration/queries.test.ts +++ b/__tests__/integration/queries.test.ts @@ -1,8 +1,10 @@ import * as fs from "fs"; import * as path from "path"; import * as pg from "pg"; +//import * as vm from "node:vm"; + import { promisify } from "util"; -import { ExecutionArgs, parse, validate } from "graphql"; +import { ExecutionArgs, GraphQLSchema, parse, validate } from "graphql"; import { withPgClient, withPgPool } from "../helpers"; import { PgConditionArgumentPlugin } from "graphile-build-pg"; import { postgraphilePresetAmber } from "postgraphile/presets/amber"; @@ -13,9 +15,49 @@ import CustomOperatorsPlugin from "./../customOperatorsPlugin"; import { execute, hookArgs } from "grafast"; import { SchemaResult } from "graphile-build"; import { makeWithPgClientViaPgClientAlreadyInTransaction } from "@dataplan/pg/adaptors/pg"; +import { exportSchemaAsString } from "graphile-export"; +import _module = require("module"); +import { dirname } from "path"; +const { Module, builtinModules } = _module; +import { transformSync } from "@babel/core"; // TODO: remove this once Grafast gets it's planning under control :D -jest.setTimeout(30000); +jest.setTimeout(3000000); +/* +const vmEval = (code: string) => { + const context = {} as GraphQLSchema; + // Load the module with the dyanamic script. + vm.runInNewContext(code, vm.createContext(context)); + console.log("Returning context: ", JSON.stringify(context, null, 2)); + return context; +}; +*/ +let cachedSchema = {} as GraphQLSchema; +let haveCache = false; +const vmEval = (code: string) => { + if (!haveCache) { + const filename = "exported-v5-schema.mjs"; + // Load the module with the dyanamic script. + const replacementModule = new Module(filename, this); + replacementModule.filename = filename; + // @ts-ignore + replacementModule.paths = Module._nodeModulePaths(dirname(filename)); + const commonJScode = transformSync(code, { + filename, + compact: true, + plugins: ["@babel/plugin-transform-runtime"], + }); + // @ts-ignore + replacementModule._compile(commonJScode.code, filename); + replacementModule.loaded = true; + cachedSchema = replacementModule.exports.schema as GraphQLSchema; + haveCache = true; + console.log("Schema import done - no cache"); + } else { + console.log("Schema import done - from cache"); + } + return cachedSchema; +}; const createPostGraphileSchema = async ( pool: pg.Pool, @@ -44,7 +86,23 @@ const createPostGraphileSchema = async ( ], }; const params = await makeSchema(preset); - return params; + if (process.env.TEST_EXPORTED_SCHEMA) { + return { + ...params, + schema: vmEval( + ( + await exportSchemaAsString(params.schema, { + mode: "graphql-js", + // or: + // mode: "typeDefs", + modules: {}, + }) + ).code + ), + }; + } else { + return params; + } }; const readFile = promisify(fs.readFile); @@ -146,67 +204,73 @@ beforeAll(async () => { for (const queryFileName of queryFileNames) { // eslint-disable-next-line jest/valid-title - test(queryFileName, async () => { - // Read the query from the file system. - const query = await readFile( - path.resolve(queriesDir, queryFileName), - "utf8" - ); - // Get the appropriate GraphQL schema for this fixture. We want to test - // some specific fixtures against a schema configured slightly - // differently. - const gqlSchemaByQueryFileName: { - [queryFileName: string]: SchemaResult; - } = { - "addConnectionFilterOperator.graphql": - gqlSchemas.addConnectionFilterOperator, - "dynamicJsonTrue.graphql": gqlSchemas.dynamicJson, - "types.cidr.graphql": gqlSchemas.networkScalars, - "types.macaddr.graphql": gqlSchemas.networkScalars, - "arrayTypes.cidrArray.graphql": gqlSchemas.networkScalars, - "arrayTypes.macaddrArray.graphql": gqlSchemas.networkScalars, - "relations.graphql": gqlSchemas.relations, - "simpleCollections.graphql": gqlSchemas.simpleCollections, - "nullAndEmptyAllowed.graphql": gqlSchemas.nullAndEmptyAllowed, - }; - const { schema, resolvedPreset } = - queryFileName in gqlSchemaByQueryFileName - ? gqlSchemaByQueryFileName[queryFileName] - : gqlSchemas.normal; - - const document = parse(query); - const errors = validate(schema, document); - if (errors.length > 0) { - throw new Error( - `GraphQL validation errors:\n${errors.map((e) => e.message).join("\n")}` + test( + queryFileName, + async () => { + // Read the query from the file system. + const query = await readFile( + path.resolve(queriesDir, queryFileName), + "utf8" ); - } - const args: ExecutionArgs = { - schema, - document, - }; - await hookArgs(args, resolvedPreset, {}); - //const pgSubscriber = new PgSubscriber(pool); - const result = (await withPgClient(async (pgClient) => { - // We must override the context because we didn't use a pool above and so - // we need to add our own client - - // NOTE: the withPgClient needed on context is **VERY DIFFERENT** to our - // withPgClient test helper. We should rename our test helper ;) - const contextWithPgClient = - makeWithPgClientViaPgClientAlreadyInTransaction(pgClient, false); - try { - args.contextValue = { - pgSettings: (args.contextValue as any).pgSettings, - withPgClient: contextWithPgClient, - //pgSubscriber, - }; + // Get the appropriate GraphQL schema for this fixture. We want to test + // some specific fixtures against a schema configured slightly + // differently. + const gqlSchemaByQueryFileName: { + [queryFileName: string]: SchemaResult; + } = { + "addConnectionFilterOperator.graphql": + gqlSchemas.addConnectionFilterOperator, + "dynamicJsonTrue.graphql": gqlSchemas.dynamicJson, + "types.cidr.graphql": gqlSchemas.networkScalars, + "types.macaddr.graphql": gqlSchemas.networkScalars, + "arrayTypes.cidrArray.graphql": gqlSchemas.networkScalars, + "arrayTypes.macaddrArray.graphql": gqlSchemas.networkScalars, + "relations.graphql": gqlSchemas.relations, + "simpleCollections.graphql": gqlSchemas.simpleCollections, + "nullAndEmptyAllowed.graphql": gqlSchemas.nullAndEmptyAllowed, + }; + const { schema, resolvedPreset } = + queryFileName in gqlSchemaByQueryFileName + ? gqlSchemaByQueryFileName[queryFileName] + : gqlSchemas.normal; - return (await execute(args)) as any; - } finally { - contextWithPgClient.release?.(); + const document = parse(query); + const errors = validate(schema, document); + if (errors.length > 0) { + throw new Error( + `GraphQL validation errors:\n${errors + .map((e) => e.message) + .join("\n")}` + ); } - })) as any; - expect(result).toMatchSnapshot(); - }); + const args: ExecutionArgs = { + schema, + document, + }; + await hookArgs(args, resolvedPreset, {}); + //const pgSubscriber = new PgSubscriber(pool); + const result = (await withPgClient(async (pgClient) => { + // We must override the context because we didn't use a pool above and so + // we need to add our own client + + // NOTE: the withPgClient needed on context is **VERY DIFFERENT** to our + // withPgClient test helper. We should rename our test helper ;) + const contextWithPgClient = + makeWithPgClientViaPgClientAlreadyInTransaction(pgClient, false); + try { + args.contextValue = { + pgSettings: (args.contextValue as any).pgSettings, + withPgClient: contextWithPgClient, + //pgSubscriber, + }; + + return (await execute(args)) as any; + } finally { + contextWithPgClient.release?.(); + } + })) as any; + expect(result).toMatchSnapshot(); + }, + 100000000 + ); } diff --git a/package.json b/package.json index 65b31dd..d52c773 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,7 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.22.11", - "@babel/plugin-transform-modules-commonjs": "^7.22.11", - "@babel/plugin-transform-runtime": "^7.22.10", + "@babel/plugin-transform-runtime": "^7.23.3", "@babel/preset-env": "^7.22.14", "@babel/preset-typescript": "^7.22.11", "@dataplan/pg": "^0.0.1-beta.1", diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index 5c1d4a5..1949253 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -119,6 +119,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, [TYPES, forceTextTypesSensitive, resolveDomains] ); + const resolveInputCodecSensitive = EXPORTABLE( (TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains) => function (c: PgCodec) { @@ -144,6 +145,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, [TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains] ); + const resolveSqlIdentifierSensitive = EXPORTABLE( (TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains, sql) => function ( @@ -170,6 +172,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, [TYPES, forceTextTypesSensitive, listOfCodec, resolveDomains, sql] ); + const resolveInputCodecInsensitive = EXPORTABLE( (TYPES, forceTextTypesInsensitive, listOfCodec, resolveDomains) => function (c: PgCodec) { @@ -373,13 +376,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, startsWith: { description: "Starts with the specified string (case-sensitive).", - resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, - [escapeLikeWildcards] - ), + resolveInput: (input) => `${escapeLikeWildcards(input)}%`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} LIKE ${v}`, @@ -387,13 +384,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { notStartsWith: { description: "Does not start with the specified string (case-sensitive).", - resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, - [escapeLikeWildcards] - ), + resolveInput: (input) => `${escapeLikeWildcards(input)}%`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} NOT LIKE ${v}`, @@ -401,13 +392,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { startsWithInsensitive: { description: "Starts with the specified string (case-insensitive).", - resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, - [escapeLikeWildcards] - ), + resolveInput: (input) => `${escapeLikeWildcards(input)}%`, resolve: (i, v) => sql`${i} ILIKE ${v}`, resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, @@ -422,13 +407,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, endsWith: { description: "Ends with the specified string (case-sensitive).", - resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, - [escapeLikeWildcards] - ), + resolveInput: (input) => `%${escapeLikeWildcards(input)}`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} LIKE ${v}`, @@ -436,26 +415,14 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { notEndsWith: { description: "Does not end with the specified string (case-sensitive).", - resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, - [escapeLikeWildcards] - ), + resolveInput: (input) => `%${escapeLikeWildcards(input)}`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: (i, v) => sql`${i} NOT LIKE ${v}`, }, endsWithInsensitive: { description: "Ends with the specified string (case-insensitive).", - resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, - [escapeLikeWildcards] - ), + resolveInput: (input) => `%${escapeLikeWildcards(input)}`, resolve: (i, v) => sql`${i} ILIKE ${v}`, resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, @@ -463,13 +430,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { notEndsWithInsensitive: { description: "Does not end with the specified string (case-insensitive).", - resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, - [escapeLikeWildcards] - ), + resolveInput: (input) => `%${escapeLikeWildcards(input)}`, resolve: (i, v) => sql`${i} NOT ILIKE ${v}`, resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, @@ -625,13 +586,18 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { spec.description.length - 1 )} (case-insensitive).`; - const resolveSqlIdentifier = ( - sourceAlias: SQL, - codec: PgCodec - ) => - resolveDomains(codec) === TYPES.citext - ? ([sourceAlias, codec] as const) // already case-insensitive, so no need to call `lower()` - : ([sql`lower(${sourceAlias}::text)`, TYPES.text] as const); + const resolveSqlIdentifier = EXPORTABLE( + (TYPES, resolveDomains, sql) => + function ( + sourceAlias: SQL, + codec: PgCodec + ) { + return resolveDomains(codec) === TYPES.citext + ? ([sourceAlias, codec] as const) // already case-insensitive, so no need to call `lower()` + : ([sql`lower(${sourceAlias}::text)`, TYPES.text] as const); + }, + [TYPES, resolveDomains, sql] + ); const resolveSqlValue = EXPORTABLE( (TYPES, name, sql) => function ( @@ -727,13 +693,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { ); } }, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${i} @> ${v}`; - }, - [sql] - ), + resolve: (i, v) => sql`${i} @> ${v}`, }, containedBy: { description: "Contained by the specified range.", @@ -778,105 +738,51 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { description: "Contains the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${i} @> ${v}`; - }, - [sql] - ), + resolve: (i, v) => sql`${i} @> ${v}`, }, containedBy: { description: "Contained by the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${i} <@ ${v}`; - }, - [sql] - ), + resolve: (i, v) => sql`${i} <@ ${v}`, }, overlaps: { description: "Overlaps the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${i} && ${v}`; - }, - [sql] - ), + resolve: (i, v) => sql`${i} && ${v}`, }, anyEqualTo: { description: "Any array item is equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${v} = ANY (${i})`; - }, - [sql] - ), + resolve: (i, v) => sql`${v} = ANY (${i})`, }, anyNotEqualTo: { description: "Any array item is not equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${v} <> ANY (${i})`; - }, - [sql] - ), + resolve: (i, v) => sql`${v} <> ANY (${i})`, }, anyLessThan: { description: "Any array item is less than the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${v} > ANY (${i})`; - }, - [sql] - ), + resolve: (i, v) => sql`${v} > ANY (${i})`, }, anyLessThanOrEqualTo: { description: "Any array item is less than or equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${v} >= ANY (${i})`; - }, - [sql] - ), + resolve: (i, v) => sql`${v} >= ANY (${i})`, }, anyGreaterThan: { description: "Any array item is greater than the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${v} < ANY (${i})`; - }, - [sql] - ), + resolve: (i, v) => sql`${v} < ANY (${i})`, }, anyGreaterThanOrEqualTo: { description: "Any array item is greater than or equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${v} <= ANY (${i})`; - }, - [sql] - ), + resolve: (i, v) => sql`${v} <= ANY (${i})`, }, }; diff --git a/yarn.lock b/yarn.lock index 5079824..a1fdeb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -628,7 +628,7 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.11", "@babel/plugin-transform-modules-commonjs@^7.23.3": +"@babel/plugin-transform-modules-commonjs@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== @@ -769,7 +769,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-runtime@^7.22.10": +"@babel/plugin-transform-runtime@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.3.tgz#0aa7485862b0b5cb0559c1a5ec08b4923743ee3b" integrity sha512-XcQ3X58CKBdBnnZpPaQjgVMePsXtSZzHoku70q9tUAQp02ggPQNM04BF3RvlW1GSM/McbSOQAzEK4MXbS7/JFg== From d10027e78a04fc6b51812b546d6c321a4e20c1b8 Mon Sep 17 00:00:00 2001 From: mattia rossi Date: Fri, 17 Nov 2023 21:29:47 +0100 Subject: [PATCH 17/27] Fix test errors, implement correct schema code evaluation --- __tests__/customOperatorsPlugin.ts | 57 ++++++- __tests__/integration/queries.test.ts | 46 +----- package.json | 3 +- src/PgConnectionArgFilterAttributesPlugin.ts | 2 +- ...nnectionArgFilterForwardRelationsPlugin.ts | 1 - src/PgConnectionArgFilterOperatorsPlugin.ts | 22 ++- src/PgConnectionArgFilterPlugin.ts | 2 +- src/utils.ts | 7 +- yarn.lock | 151 ++++++++++++++++++ 9 files changed, 231 insertions(+), 60 deletions(-) diff --git a/__tests__/customOperatorsPlugin.ts b/__tests__/customOperatorsPlugin.ts index 209b27f..ead5d7f 100644 --- a/__tests__/customOperatorsPlugin.ts +++ b/__tests__/customOperatorsPlugin.ts @@ -11,29 +11,72 @@ const CustomOperatorsPlugin: GraphileConfig.Plugin = { sql, graphql: { GraphQLInt, GraphQLBoolean }, addConnectionFilterOperator, + EXPORTABLE, } = build; // simple addConnectionFilterOperator("InternetAddress", "familyEqualTo", { description: "Address family equal to specified value.", - resolveInputCodec: () => TYPES.int, - resolve: (i, v) => sql.fragment`family(${i}) = ${v}`, + resolveInputCodec: EXPORTABLE( + (TYPES) => + function () { + return TYPES.int; + }, + [TYPES] + ), + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql.fragment`family(${i}) = ${v}`; + }, + [sql] + ), }); // using resolveSqlIdentifier addConnectionFilterOperator("InternetAddress", "familyNotEqualTo", { description: "Address family equal to specified value.", - resolveInputCodec: () => TYPES.int, - resolve: (i, v) => sql.fragment`${i} <> ${v}`, - resolveSqlIdentifier: (i) => [sql.fragment`family(${i})`, TYPES.int], + resolveInputCodec: EXPORTABLE( + (TYPES) => + function () { + return TYPES.int; + }, + [TYPES] + ), + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql.fragment`${i} <> ${v}`; + }, + [sql] + ), + resolveSqlIdentifier: EXPORTABLE( + (TYPES, sql) => + function (i) { + return [sql.fragment`family(${i})`, TYPES.int]; + }, + [TYPES, sql] + ), }); // using resolveInput // typeNames: string | string[] addConnectionFilterOperator(["InternetAddress"], "isV4", { description: "Address family equal to specified value.", - resolve: (i, v) => sql.fragment`family(${i}) = ${v}`, + resolve: EXPORTABLE( + (sql) => + function (i, v) { + return sql.fragment`family(${i}) = ${v}`; + }, + [sql] + ), resolveInput: (input) => (input === true ? 4 : 6), - resolveInputCodec: () => TYPES.int, + resolveInputCodec: EXPORTABLE( + (TYPES) => + function () { + return TYPES.int; + }, + [TYPES] + ), resolveType: () => GraphQLBoolean, }); diff --git a/__tests__/integration/queries.test.ts b/__tests__/integration/queries.test.ts index 95b0b39..6110001 100644 --- a/__tests__/integration/queries.test.ts +++ b/__tests__/integration/queries.test.ts @@ -1,7 +1,6 @@ import * as fs from "fs"; import * as path from "path"; import * as pg from "pg"; -//import * as vm from "node:vm"; import { promisify } from "util"; import { ExecutionArgs, GraphQLSchema, parse, validate } from "graphql"; @@ -16,47 +15,16 @@ import { execute, hookArgs } from "grafast"; import { SchemaResult } from "graphile-build"; import { makeWithPgClientViaPgClientAlreadyInTransaction } from "@dataplan/pg/adaptors/pg"; import { exportSchemaAsString } from "graphile-export"; -import _module = require("module"); -import { dirname } from "path"; -const { Module, builtinModules } = _module; -import { transformSync } from "@babel/core"; +import { importFromStringSync } from "module-from-string"; // TODO: remove this once Grafast gets it's planning under control :D -jest.setTimeout(3000000); -/* -const vmEval = (code: string) => { - const context = {} as GraphQLSchema; - // Load the module with the dyanamic script. - vm.runInNewContext(code, vm.createContext(context)); - console.log("Returning context: ", JSON.stringify(context, null, 2)); - return context; -}; -*/ -let cachedSchema = {} as GraphQLSchema; -let haveCache = false; +jest.setTimeout(300000); + const vmEval = (code: string) => { - if (!haveCache) { - const filename = "exported-v5-schema.mjs"; - // Load the module with the dyanamic script. - const replacementModule = new Module(filename, this); - replacementModule.filename = filename; - // @ts-ignore - replacementModule.paths = Module._nodeModulePaths(dirname(filename)); - const commonJScode = transformSync(code, { - filename, - compact: true, - plugins: ["@babel/plugin-transform-runtime"], - }); - // @ts-ignore - replacementModule._compile(commonJScode.code, filename); - replacementModule.loaded = true; - cachedSchema = replacementModule.exports.schema as GraphQLSchema; - haveCache = true; - console.log("Schema import done - no cache"); - } else { - console.log("Schema import done - from cache"); - } - return cachedSchema; + const { schema } = importFromStringSync(code, { + transformOptions: { loader: "js" }, + }); + return schema as GraphQLSchema; }; const createPostGraphileSchema = async ( diff --git a/package.json b/package.json index d52c773..1d17b63 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "graphile-build-pg": "^5.0.0-beta.1", "graphql": "16.1.0-experimental-stream-defer.6", "jest": "29.5.0", + "module-from-string": "^3.3.0", "pg": "8.8.0", "pg-introspection": "^0.0.1-beta.1", "pg-sql2": "^5.0.0-beta.1", @@ -66,4 +67,4 @@ "files": [ "dist" ] -} +} \ No newline at end of file diff --git a/src/PgConnectionArgFilterAttributesPlugin.ts b/src/PgConnectionArgFilterAttributesPlugin.ts index 510d396..08fe387 100644 --- a/src/PgConnectionArgFilterAttributesPlugin.ts +++ b/src/PgConnectionArgFilterAttributesPlugin.ts @@ -98,7 +98,7 @@ export const PgConnectionArgFilterAttributesPlugin: GraphileConfig.Plugin = { ) { throw Object.assign( new Error( - "Null literals are forbidden in filter argument input." + `Null literals are forbidden in filter argument input. - AllowNullInput: ${connectionFilterAllowNullInput}` ), { //TODO: mark this error as safe diff --git a/src/PgConnectionArgFilterForwardRelationsPlugin.ts b/src/PgConnectionArgFilterForwardRelationsPlugin.ts index a99ad2a..9cff17d 100644 --- a/src/PgConnectionArgFilterForwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterForwardRelationsPlugin.ts @@ -44,7 +44,6 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin fieldWithHooks, scope: { pgCodec, isPgConnectionFilter }, } = context; - const assertAllowed = makeAssertAllowed(build.options); const source = diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index 1949253..cf09f4e 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -61,13 +61,17 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { } /** Turn `[Foo]` into `[Foo!]` */ - const resolveTypeToListOfNonNullable = (type: GraphQLInputType) => { - if (isListType(type) && !isNonNullType(type.ofType)) { - return new GraphQLList(new GraphQLNonNull(type.ofType)); - } else { - return type; - } - }; + const resolveTypeToListOfNonNullable = EXPORTABLE( + (GraphQLList, GraphQLNonNull, isListType, isNonNullType) => + function (type: GraphQLInputType) { + if (isListType(type) && !isNonNullType(type.ofType)) { + return new GraphQLList(new GraphQLNonNull(type.ofType)); + } else { + return type; + } + }, + [GraphQLList, GraphQLNonNull, isListType, isNonNullType] + ); const forceTextTypesSensitive = [ TYPES.citext, @@ -1199,7 +1203,9 @@ export function makeApplyPlanFromOperatorSpec( if (!connectionFilterAllowNullInput && $input.evalIs(null)) { // Forbidden throw Object.assign( - new Error("Null literals are forbidden in filter argument input."), + new Error( + `Null literals are forbidden in filter argument input. - AllowNullInput: ${connectionFilterAllowNullInput}` + ), { //TODO: mark this error as safe } diff --git a/src/PgConnectionArgFilterPlugin.ts b/src/PgConnectionArgFilterPlugin.ts index 79beef3..25e629e 100644 --- a/src/PgConnectionArgFilterPlugin.ts +++ b/src/PgConnectionArgFilterPlugin.ts @@ -1,5 +1,5 @@ import type { PgSelectStep, PgCodec } from "@dataplan/pg"; -import type { ConnectionStep, FieldArgs } from "grafast"; +import type { ConnectionStep } from "grafast"; import type { GraphQLInputType, GraphQLOutputType, diff --git a/src/utils.ts b/src/utils.ts index 9c71c24..aab6f58 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -73,7 +73,8 @@ export function makeAssertAllowed(options: GraphileBuild.SchemaOptions) { $raw.evalIsEmpty() ) { throw Object.assign( - new Error("Empty objects are forbidden in filter argument input."), + new Error(`Empty objects are forbidden in filter argument input. - AllowEmptyObjectInput; +: [${connectionFilterAllowEmptyObjectInput}]`), { //TODO: mark this error as safe } @@ -104,7 +105,9 @@ export function makeAssertAllowed(options: GraphileBuild.SchemaOptions) { // For all modes, check null if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { throw Object.assign( - new Error("Null literals are forbidden in filter argument input."), + new Error( + `Null literals are forbidden in filter argument input. - AllowNullInput: ${connectionFilterAllowNullInput}` + ), { //TODO: mark this error as safe } diff --git a/yarn.lock b/yarn.lock index a1fdeb5..0591e99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1038,6 +1038,16 @@ postgres-range "^1.1.1" tslib "^2.5.0" +"@esbuild/android-arm@0.15.18": + version "0.15.18" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80" + integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw== + +"@esbuild/linux-loong64@0.15.18": + version "0.15.18" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239" + integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -2300,6 +2310,134 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +esbuild-android-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5" + integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA== + +esbuild-android-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04" + integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ== + +esbuild-darwin-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410" + integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg== + +esbuild-darwin-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337" + integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA== + +esbuild-freebsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2" + integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA== + +esbuild-freebsd-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635" + integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA== + +esbuild-linux-32@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce" + integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg== + +esbuild-linux-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c" + integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw== + +esbuild-linux-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d" + integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug== + +esbuild-linux-arm@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc" + integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA== + +esbuild-linux-mips64le@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb" + integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ== + +esbuild-linux-ppc64le@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507" + integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w== + +esbuild-linux-riscv64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6" + integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg== + +esbuild-linux-s390x@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb" + integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ== + +esbuild-netbsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998" + integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg== + +esbuild-openbsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8" + integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ== + +esbuild-sunos-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971" + integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw== + +esbuild-windows-32@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3" + integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ== + +esbuild-windows-64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0" + integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw== + +esbuild-windows-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7" + integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ== + +esbuild@^0.15.7: + version "0.15.18" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.18.tgz#ea894adaf3fbc036d32320a00d4d6e4978a2f36d" + integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q== + optionalDependencies: + "@esbuild/android-arm" "0.15.18" + "@esbuild/linux-loong64" "0.15.18" + esbuild-android-64 "0.15.18" + esbuild-android-arm64 "0.15.18" + esbuild-darwin-64 "0.15.18" + esbuild-darwin-arm64 "0.15.18" + esbuild-freebsd-64 "0.15.18" + esbuild-freebsd-arm64 "0.15.18" + esbuild-linux-32 "0.15.18" + esbuild-linux-64 "0.15.18" + esbuild-linux-arm "0.15.18" + esbuild-linux-arm64 "0.15.18" + esbuild-linux-mips64le "0.15.18" + esbuild-linux-ppc64le "0.15.18" + esbuild-linux-riscv64 "0.15.18" + esbuild-linux-s390x "0.15.18" + esbuild-netbsd-64 "0.15.18" + esbuild-openbsd-64 "0.15.18" + esbuild-sunos-64 "0.15.18" + esbuild-windows-32 "0.15.18" + esbuild-windows-64 "0.15.18" + esbuild-windows-arm64 "0.15.18" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -3818,6 +3956,14 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +module-from-string@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/module-from-string/-/module-from-string-3.3.0.tgz#9d45dd2b8edad4e8f2979ed52a1dc93e344e68d3" + integrity sha512-VsjwtQtXZloDF7ZpBXON53U4Zz02K1/njJmfZcK+QDlYKgdL0ETq8/FeuU0G9EHxdG5XiTaITcGaldDAqJpGXA== + dependencies: + esbuild "^0.15.7" + nanoid "^3.3.4" + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -3828,6 +3974,11 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nanoid@^3.3.4: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + nanolru@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/nanolru/-/nanolru-1.0.0.tgz#0a5679cd4e4578c4ca3741e610b71c4c9b5afaf8" From 375f1255c5cf61530f8018ca60d1ae2ce6b4fd21 Mon Sep 17 00:00:00 2001 From: mattia rossi Date: Mon, 20 Nov 2023 09:45:39 +0100 Subject: [PATCH 18/27] Updated postgraphile/grafast/pg packages, added EXPORTABLE calls to all sql methods --- __tests__/integration/queries.test.ts | 220 ++-- package.json | 22 +- src/AddConnectionFilterOperatorPlugin.ts | 3 +- src/PgConnectionArgFilterAttributesPlugin.ts | 2 +- src/PgConnectionArgFilterOperatorsPlugin.ts | 219 ++-- src/utils.ts | 7 +- yarn.lock | 1073 +++++++++++------- 7 files changed, 924 insertions(+), 622 deletions(-) diff --git a/__tests__/integration/queries.test.ts b/__tests__/integration/queries.test.ts index 6110001..9f08123 100644 --- a/__tests__/integration/queries.test.ts +++ b/__tests__/integration/queries.test.ts @@ -3,7 +3,13 @@ import * as path from "path"; import * as pg from "pg"; import { promisify } from "util"; -import { ExecutionArgs, GraphQLSchema, parse, validate } from "graphql"; +import { + ExecutionArgs, + GraphQLError, + GraphQLSchema, + parse, + validate, +} from "graphql"; import { withPgClient, withPgPool } from "../helpers"; import { PgConditionArgumentPlugin } from "graphile-build-pg"; import { postgraphilePresetAmber } from "postgraphile/presets/amber"; @@ -11,7 +17,7 @@ import { makeV4Preset, V4Options } from "postgraphile/presets/v4"; import { makeSchema } from "postgraphile"; import { PostGraphileConnectionFilterPreset } from "../../src/index"; import CustomOperatorsPlugin from "./../customOperatorsPlugin"; -import { execute, hookArgs } from "grafast"; +import { execute, hookArgs, isSafeError } from "grafast"; import { SchemaResult } from "graphile-build"; import { makeWithPgClientViaPgClientAlreadyInTransaction } from "@dataplan/pg/adaptors/pg"; import { exportSchemaAsString } from "graphile-export"; @@ -23,6 +29,7 @@ jest.setTimeout(300000); const vmEval = (code: string) => { const { schema } = importFromStringSync(code, { transformOptions: { loader: "js" }, + useCurrentGlobal: true, }); return schema as GraphQLSchema; }; @@ -117,36 +124,66 @@ beforeAll(async () => { nullAndEmptyAllowed, addConnectionFilterOperator, ] = await Promise.all([ - createPostGraphileSchema(pool, ["p"], { - skipPlugins: [PgConditionArgumentPlugin], - }), - createPostGraphileSchema(pool, ["p"], { - skipPlugins: [PgConditionArgumentPlugin], - dynamicJson: true, - }), - createPostGraphileSchema(pool, ["p"], { - skipPlugins: [PgConditionArgumentPlugin], - graphileBuildOptions: { - pgUseCustomNetworkScalars: true, + createPostGraphileSchema( + pool, + ["p"], + { + skipPlugins: [PgConditionArgumentPlugin], }, - }), - createPostGraphileSchema(pool, ["p"], { - skipPlugins: [PgConditionArgumentPlugin], - graphileBuildOptions: { - connectionFilterRelations: true, + {} + ), + createPostGraphileSchema( + pool, + ["p"], + { + skipPlugins: [PgConditionArgumentPlugin], + dynamicJson: true, }, - }), - createPostGraphileSchema(pool, ["p"], { - skipPlugins: [PgConditionArgumentPlugin], - simpleCollections: "only", - }), - createPostGraphileSchema(pool, ["p"], { - skipPlugins: [PgConditionArgumentPlugin], - graphileBuildOptions: { - connectionFilterAllowNullInput: true, - connectionFilterAllowEmptyObjectInput: true, + {} + ), + createPostGraphileSchema( + pool, + ["p"], + { + skipPlugins: [PgConditionArgumentPlugin], + graphileBuildOptions: { + pgUseCustomNetworkScalars: true, + }, }, - }), + {} + ), + createPostGraphileSchema( + pool, + ["p"], + { + skipPlugins: [PgConditionArgumentPlugin], + graphileBuildOptions: { + connectionFilterRelations: true, + }, + }, + {} + ), + createPostGraphileSchema( + pool, + ["p"], + { + skipPlugins: [PgConditionArgumentPlugin], + simpleCollections: "only", + }, + {} + ), + createPostGraphileSchema( + pool, + ["p"], + { + skipPlugins: [PgConditionArgumentPlugin], + graphileBuildOptions: { + connectionFilterAllowNullInput: true, + connectionFilterAllowEmptyObjectInput: true, + }, + }, + {} + ), createPostGraphileSchema( pool, ["p"], @@ -172,73 +209,66 @@ beforeAll(async () => { for (const queryFileName of queryFileNames) { // eslint-disable-next-line jest/valid-title - test( - queryFileName, - async () => { - // Read the query from the file system. - const query = await readFile( - path.resolve(queriesDir, queryFileName), - "utf8" + test(queryFileName, async () => { + // Read the query from the file system. + const query = await readFile( + path.resolve(queriesDir, queryFileName), + "utf8" + ); + // Get the appropriate GraphQL schema for this fixture. We want to test + // some specific fixtures against a schema configured slightly + // differently. + const gqlSchemaByQueryFileName: { + [queryFileName: string]: SchemaResult; + } = { + "addConnectionFilterOperator.graphql": + gqlSchemas.addConnectionFilterOperator, + "dynamicJsonTrue.graphql": gqlSchemas.dynamicJson, + "types.cidr.graphql": gqlSchemas.networkScalars, + "types.macaddr.graphql": gqlSchemas.networkScalars, + "arrayTypes.cidrArray.graphql": gqlSchemas.networkScalars, + "arrayTypes.macaddrArray.graphql": gqlSchemas.networkScalars, + "relations.graphql": gqlSchemas.relations, + "simpleCollections.graphql": gqlSchemas.simpleCollections, + "nullAndEmptyAllowed.graphql": gqlSchemas.nullAndEmptyAllowed, + }; + const { schema, resolvedPreset } = + queryFileName in gqlSchemaByQueryFileName + ? gqlSchemaByQueryFileName[queryFileName] + : gqlSchemas.normal; + const document = parse(query); + const errors = validate(schema, document); + if (errors.length > 0) { + throw new Error( + `GraphQL validation errors:\n${errors.map((e) => e.message).join("\n")}` ); - // Get the appropriate GraphQL schema for this fixture. We want to test - // some specific fixtures against a schema configured slightly - // differently. - const gqlSchemaByQueryFileName: { - [queryFileName: string]: SchemaResult; - } = { - "addConnectionFilterOperator.graphql": - gqlSchemas.addConnectionFilterOperator, - "dynamicJsonTrue.graphql": gqlSchemas.dynamicJson, - "types.cidr.graphql": gqlSchemas.networkScalars, - "types.macaddr.graphql": gqlSchemas.networkScalars, - "arrayTypes.cidrArray.graphql": gqlSchemas.networkScalars, - "arrayTypes.macaddrArray.graphql": gqlSchemas.networkScalars, - "relations.graphql": gqlSchemas.relations, - "simpleCollections.graphql": gqlSchemas.simpleCollections, - "nullAndEmptyAllowed.graphql": gqlSchemas.nullAndEmptyAllowed, - }; - const { schema, resolvedPreset } = - queryFileName in gqlSchemaByQueryFileName - ? gqlSchemaByQueryFileName[queryFileName] - : gqlSchemas.normal; - - const document = parse(query); - const errors = validate(schema, document); - if (errors.length > 0) { - throw new Error( - `GraphQL validation errors:\n${errors - .map((e) => e.message) - .join("\n")}` - ); - } - const args: ExecutionArgs = { - schema, - document, - }; - await hookArgs(args, resolvedPreset, {}); - //const pgSubscriber = new PgSubscriber(pool); - const result = (await withPgClient(async (pgClient) => { - // We must override the context because we didn't use a pool above and so - // we need to add our own client + } + const args: ExecutionArgs = { + schema, + document, + }; + await hookArgs(args, resolvedPreset, {}); + //const pgSubscriber = new PgSubscriber(pool); + const result = (await withPgClient(async (pgClient) => { + // We must override the context because we didn't use a pool above and so + // we need to add our own client - // NOTE: the withPgClient needed on context is **VERY DIFFERENT** to our - // withPgClient test helper. We should rename our test helper ;) - const contextWithPgClient = - makeWithPgClientViaPgClientAlreadyInTransaction(pgClient, false); - try { - args.contextValue = { - pgSettings: (args.contextValue as any).pgSettings, - withPgClient: contextWithPgClient, - //pgSubscriber, - }; + // NOTE: the withPgClient needed on context is **VERY DIFFERENT** to our + // withPgClient test helper. We should rename our test helper ;) + const contextWithPgClient = + makeWithPgClientViaPgClientAlreadyInTransaction(pgClient, false); + try { + args.contextValue = { + pgSettings: (args.contextValue as any).pgSettings, + withPgClient: contextWithPgClient, + //pgSubscriber, + }; - return (await execute(args)) as any; - } finally { - contextWithPgClient.release?.(); - } - })) as any; - expect(result).toMatchSnapshot(); - }, - 100000000 - ); + return (await execute(args)) as any; + } finally { + contextWithPgClient.release?.(); + } + })) as any; + expect(result).toMatchSnapshot(); + }); } diff --git a/package.json b/package.json index 1d17b63..3d5ad62 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "eslint-plugin-graphile-export": "^0.0.2-beta.3", - "graphile-export": "^0.0.2-beta.4", + "graphile-export": "0.0.2-beta.6", "tslib": "^2.5.0" }, "devDependencies": { @@ -34,7 +34,7 @@ "@babel/plugin-transform-runtime": "^7.23.3", "@babel/preset-env": "^7.22.14", "@babel/preset-typescript": "^7.22.11", - "@dataplan/pg": "^0.0.1-beta.1", + "@dataplan/pg": "0.0.1-beta.12", "@tsconfig/node16": "^1.0.3", "@types/jest": "29.5.0", "@typescript-eslint/eslint-plugin": "^6.5.0", @@ -49,17 +49,17 @@ "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-tsdoc": "^0.2.17", "eslint_d": "^12.2.1", - "grafast": "^0.0.1-beta.1", - "grafserv": "^0.0.1-beta.1", + "grafast": "0.1.1-beta.1", + "grafserv": "0.1.1-beta.3", "graphile-build": "^5.0.0-beta.1", - "graphile-build-pg": "^5.0.0-beta.1", + "graphile-build-pg": "5.0.0-beta.15", "graphql": "16.1.0-experimental-stream-defer.6", - "jest": "29.5.0", + "jest": "29.7.0", "module-from-string": "^3.3.0", - "pg": "8.8.0", - "pg-introspection": "^0.0.1-beta.1", - "pg-sql2": "^5.0.0-beta.1", - "postgraphile": "^5.0.0-beta.1", + "pg": "8.11.3", + "pg-introspection": "0.0.1-beta.4", + "pg-sql2": "5.0.0-beta.4", + "postgraphile": "5.0.0-beta.16", "prettier": "2.8.7", "ts-jest": "29.1.0", "typescript": "^5.0.4" @@ -67,4 +67,4 @@ "files": [ "dist" ] -} \ No newline at end of file +} diff --git a/src/AddConnectionFilterOperatorPlugin.ts b/src/AddConnectionFilterOperatorPlugin.ts index c664750..f065de2 100644 --- a/src/AddConnectionFilterOperatorPlugin.ts +++ b/src/AddConnectionFilterOperatorPlugin.ts @@ -1,6 +1,7 @@ import type { GraphQLInputType } from "graphql"; import { $$filters } from "./interfaces"; import { makeApplyPlanFromOperatorSpec } from "./PgConnectionArgFilterOperatorsPlugin"; +import { EXPORTABLE } from "graphile-export"; const { version } = require("../package.json"); @@ -117,7 +118,7 @@ export const AddConnectionFilterOperatorPlugin: GraphileConfig.Plugin = { ); } - return fields; + return EXPORTABLE((fields) => fields, [fields]); }, }, }, diff --git a/src/PgConnectionArgFilterAttributesPlugin.ts b/src/PgConnectionArgFilterAttributesPlugin.ts index 08fe387..510d396 100644 --- a/src/PgConnectionArgFilterAttributesPlugin.ts +++ b/src/PgConnectionArgFilterAttributesPlugin.ts @@ -98,7 +98,7 @@ export const PgConnectionArgFilterAttributesPlugin: GraphileConfig.Plugin = { ) { throw Object.assign( new Error( - `Null literals are forbidden in filter argument input. - AllowNullInput: ${connectionFilterAllowNullInput}` + "Null literals are forbidden in filter argument input." ), { //TODO: mark this error as safe diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index cf09f4e..5e51bcd 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -243,47 +243,62 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { isNull: { description: "Is null (if `true` is specified) or is not null (if `false` is specified).", - resolveInputCodec: () => TYPES.boolean, - resolveSqlValue: () => sql.null, // do not parse + resolveInputCodec: EXPORTABLE( + (TYPES) => () => TYPES.boolean, + [TYPES] + ), + resolveSqlValue: EXPORTABLE((sql) => () => sql.null, [sql]), // do not parse resolve: (i, _v, $input) => sql`${i} ${$input.eval() ? sql`IS NULL` : sql`IS NOT NULL`}`, }, equalTo: { description: "Equal to the specified value.", - resolve: (i, v) => sql`${i} = ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} = ${v}`, [sql]), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, notEqualTo: { description: "Not equal to the specified value.", - resolve: (i, v) => sql`${i} <> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} <> ${v}`, [sql]), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, distinctFrom: { description: "Not equal to the specified value, treating null like an ordinary value.", - resolve: (i, v) => sql`${i} IS DISTINCT FROM ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} IS DISTINCT FROM ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, notDistinctFrom: { description: "Equal to the specified value, treating null like an ordinary value.", - resolve: (i, v) => sql`${i} IS NOT DISTINCT FROM ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} IS NOT DISTINCT FROM ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, in: { description: "Included in the specified list.", - resolve: (i, v) => sql`${i} = ANY(${v})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} = ANY(${v})`, + [sql] + ), resolveInputCodec: resolveArrayInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveType: resolveTypeToListOfNonNullable, }, notIn: { description: "Not included in the specified list.", - resolve: (i, v) => sql`${i} <> ALL(${v})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} <> ALL(${v})`, + [sql] + ), resolveInputCodec: resolveArrayInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveType: resolveTypeToListOfNonNullable, @@ -292,25 +307,25 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { const sortOperators: { [fieldName: string]: OperatorSpec } = { lessThan: { description: "Less than the specified value.", - resolve: (i, v) => sql`${i} < ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} < ${v}`, [sql]), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, lessThanOrEqualTo: { description: "Less than or equal to the specified value.", - resolve: (i, v) => sql`${i} <= ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} <= ${v}`, [sql]), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, greaterThan: { description: "Greater than the specified value.", - resolve: (i, v) => sql`${i} > ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} > ${v}`, [sql]), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, greaterThanOrEqualTo: { description: "Greater than or equal to the specified value.", - resolve: (i, v) => sql`${i} >= ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} >= ${v}`, [sql]), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, @@ -321,19 +336,14 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { includes: { description: "Contains the specified string (case-sensitive).", resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, + (escapeLikeWildcards) => (input) => + `%${escapeLikeWildcards(input)}%`, [escapeLikeWildcards] ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${i} LIKE ${v}`; - }, + (sql) => (i, v) => sql`${i} LIKE ${v}`, [sql] ), }, @@ -341,32 +351,28 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { description: "Does not contain the specified string (case-sensitive).", resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, + (escapeLikeWildcards) => (input) => + `%${escapeLikeWildcards(input)}%`, [escapeLikeWildcards] ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolve: EXPORTABLE( - (sql) => - function (i, v) { - return sql`${i} NOT LIKE ${v}`; - }, + (sql) => (i, v) => sql`${i} NOT LIKE ${v}`, [sql] ), }, includesInsensitive: { description: "Contains the specified string (case-insensitive).", resolveInput: EXPORTABLE( - (escapeLikeWildcards) => - function (input) { - return `%${escapeLikeWildcards(input)}%`; - }, + (escapeLikeWildcards) => (input) => + `%${escapeLikeWildcards(input)}%`, [escapeLikeWildcards] ), - resolve: (i, v) => sql`${i} ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, @@ -374,7 +380,10 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { description: "Does not contain the specified string (case-insensitive).", resolveInput: (input) => `%${escapeLikeWildcards(input)}%`, - resolve: (i, v) => sql`${i} NOT ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} NOT ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, @@ -383,7 +392,10 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { resolveInput: (input) => `${escapeLikeWildcards(input)}%`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, - resolve: (i, v) => sql`${i} LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} LIKE ${v}`, + [sql] + ), }, notStartsWith: { description: @@ -391,13 +403,19 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { resolveInput: (input) => `${escapeLikeWildcards(input)}%`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, - resolve: (i, v) => sql`${i} NOT LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} NOT LIKE ${v}`, + [sql] + ), }, startsWithInsensitive: { description: "Starts with the specified string (case-insensitive).", resolveInput: (input) => `${escapeLikeWildcards(input)}%`, - resolve: (i, v) => sql`${i} ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, @@ -405,7 +423,10 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { description: "Does not start with the specified string (case-insensitive).", resolveInput: (input) => `${escapeLikeWildcards(input)}%`, - resolve: (i, v) => sql`${i} NOT ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} NOT ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, @@ -414,7 +435,10 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { resolveInput: (input) => `%${escapeLikeWildcards(input)}`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, - resolve: (i, v) => sql`${i} LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} LIKE ${v}`, + [sql] + ), }, notEndsWith: { description: @@ -422,12 +446,18 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { resolveInput: (input) => `%${escapeLikeWildcards(input)}`, resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, - resolve: (i, v) => sql`${i} NOT LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} NOT LIKE ${v}`, + [sql] + ), }, endsWithInsensitive: { description: "Ends with the specified string (case-insensitive).", resolveInput: (input) => `%${escapeLikeWildcards(input)}`, - resolve: (i, v) => sql`${i} ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, @@ -435,35 +465,50 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { description: "Does not end with the specified string (case-insensitive).", resolveInput: (input) => `%${escapeLikeWildcards(input)}`, - resolve: (i, v) => sql`${i} NOT ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} NOT ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, like: { description: "Matches the specified pattern (case-sensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", - resolve: (i, v) => sql`${i} LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} LIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, notLike: { description: "Does not match the specified pattern (case-sensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", - resolve: (i, v) => sql`${i} NOT LIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} NOT LIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecSensitive, resolveSqlIdentifier: resolveSqlIdentifierSensitive, }, likeInsensitive: { description: "Matches the specified pattern (case-insensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", - resolve: (i, v) => sql`${i} ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, notLikeInsensitive: { description: "Does not match the specified pattern (case-insensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", - resolve: (i, v) => sql`${i} NOT ILIKE ${v}`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${i} NOT ILIKE ${v}`, + [sql] + ), resolveInputCodec: resolveInputCodecInsensitive, resolveSqlIdentifier: resolveSqlIdentifierInsensitive, }, @@ -478,20 +523,20 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { containsKey: { description: "Contains the specified key.", resolveInputCodec: () => TYPES.text, - resolve: (i, v) => sql`${i} ? ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} ? ${v}`, [sql]), }, containsAllKeys: { name: "containsAllKeys", description: "Contains all of the specified keys.", resolveInputCodec: resolveTextArrayInputCodec, - resolve: (i, v) => sql`${i} ?& ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} ?& ${v}`, [sql]), resolveType: resolveTypeToListOfNonNullable, }, containsAnyKeys: { name: "containsAnyKeys", description: "Contains any of the specified keys.", resolveInputCodec: resolveTextArrayInputCodec, - resolve: (i, v) => sql`${i} ?| ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} ?| ${v}`, [sql]), resolveType: resolveTypeToListOfNonNullable, }, containedBy: { @@ -507,19 +552,19 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { containsKey: { description: "Contains the specified key.", resolveInputCodec: () => TYPES.text, - resolve: (i, v) => sql`${i} ? ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} ? ${v}`, [sql]), }, containsAllKeys: { name: "containsAllKeys", description: "Contains all of the specified keys.", resolveInputCodec: resolveTextArrayInputCodec, - resolve: (i, v) => sql`${i} ?& ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} ?& ${v}`, [sql]), }, containsAnyKeys: { name: "containsAnyKeys", description: "Contains any of the specified keys.", resolveInputCodec: resolveTextArrayInputCodec, - resolve: (i, v) => sql`${i} ?| ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} ?| ${v}`, [sql]), }, containedBy: { description: "Contained by the specified JSON.", @@ -688,16 +733,20 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { }, containsElement: { description: "Contains the specified value.", - resolveInputCodec(c) { - if (c.rangeOfCodec) { - return c.rangeOfCodec; - } else { - throw new Error( - `Couldn't determine the range element type to use` - ); - } - }, - resolve: (i, v) => sql`${i} @> ${v}`, + resolveInputCodec: EXPORTABLE( + () => + function (c) { + if (c.rangeOfCodec) { + return c.rangeOfCodec; + } else { + throw new Error( + `Couldn't determine the range element type to use` + ); + } + }, + [] + ), + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} @> ${v}`, [sql]), }, containedBy: { description: "Contained by the specified range.", @@ -742,51 +791,69 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { description: "Contains the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: (i, v) => sql`${i} @> ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} @> ${v}`, [sql]), }, containedBy: { description: "Contained by the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: (i, v) => sql`${i} <@ ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} <@ ${v}`, [sql]), }, overlaps: { description: "Overlaps the specified list of values.", resolveSqlIdentifier: resolveSqlIdentifierSensitive, resolveInputCodec: resolveInputCodecSensitive, - resolve: (i, v) => sql`${i} && ${v}`, + resolve: EXPORTABLE((sql) => (i, v) => sql`${i} && ${v}`, [sql]), }, anyEqualTo: { description: "Any array item is equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} = ANY (${i})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${v} = ANY (${i})`, + [sql] + ), }, anyNotEqualTo: { description: "Any array item is not equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} <> ANY (${i})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${v} <> ANY (${i})`, + [sql] + ), }, anyLessThan: { description: "Any array item is less than the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} > ANY (${i})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${v} > ANY (${i})`, + [sql] + ), }, anyLessThanOrEqualTo: { description: "Any array item is less than or equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} >= ANY (${i})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${v} >= ANY (${i})`, + [sql] + ), }, anyGreaterThan: { description: "Any array item is greater than the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} < ANY (${i})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${v} < ANY (${i})`, + [sql] + ), }, anyGreaterThanOrEqualTo: { description: "Any array item is greater than or equal to the specified value.", resolveInputCodec: resolveArrayItemInputCodecSensitive, - resolve: (i, v) => sql`${v} <= ANY (${i})`, + resolve: EXPORTABLE( + (sql) => (i, v) => sql`${v} <= ANY (${i})`, + [sql] + ), }, }; @@ -1064,11 +1131,7 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { Object.create(null) as GrafastInputFieldConfigMap ); - return EXPORTABLE( - (extend, fields, operatorFields) => - extend(fields, operatorFields, ""), - [extend, fields, operatorFields] - ); + return extend(fields, operatorFields, ""); }, }, }, @@ -1203,9 +1266,7 @@ export function makeApplyPlanFromOperatorSpec( if (!connectionFilterAllowNullInput && $input.evalIs(null)) { // Forbidden throw Object.assign( - new Error( - `Null literals are forbidden in filter argument input. - AllowNullInput: ${connectionFilterAllowNullInput}` - ), + new Error("Null literals are forbidden in filter argument input."), { //TODO: mark this error as safe } diff --git a/src/utils.ts b/src/utils.ts index aab6f58..9c71c24 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -73,8 +73,7 @@ export function makeAssertAllowed(options: GraphileBuild.SchemaOptions) { $raw.evalIsEmpty() ) { throw Object.assign( - new Error(`Empty objects are forbidden in filter argument input. - AllowEmptyObjectInput; -: [${connectionFilterAllowEmptyObjectInput}]`), + new Error("Empty objects are forbidden in filter argument input."), { //TODO: mark this error as safe } @@ -105,9 +104,7 @@ export function makeAssertAllowed(options: GraphileBuild.SchemaOptions) { // For all modes, check null if (!connectionFilterAllowNullInput && $raw.evalIs(null)) { throw Object.assign( - new Error( - `Null literals are forbidden in filter argument input. - AllowNullInput: ${connectionFilterAllowNullInput}` - ), + new Error("Null literals are forbidden in filter argument input."), { //TODO: mark this error as safe } diff --git a/yarn.lock b/yarn.lock index 0591e99..96577ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -985,7 +985,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.20.5", "@babel/traverse@^7.22.11", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.20.5", "@babel/traverse@^7.23.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== @@ -1015,28 +1015,40 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@dataplan/json@0.0.1-beta.1": - version "0.0.1-beta.1" - resolved "https://registry.yarnpkg.com/@dataplan/json/-/json-0.0.1-beta.1.tgz#b915daf7afbcf96f7d5082c296630d250470d6f4" - integrity sha512-m5b0k5F2J31laZO1Dja9Sjx8GjIsryk56HH9ghvj0abvd4/FG80Cdtmmjcrwe9neehvyYcmQh0F0hCBhJd+/Lw== +"@dataplan/json@0.0.1-beta.10": + version "0.0.1-beta.10" + resolved "https://registry.yarnpkg.com/@dataplan/json/-/json-0.0.1-beta.10.tgz#ba7207eeb2a920b6aecf14c29e568844efee0e25" + integrity sha512-HXTxAe6kHaS7m8aBfzc5u1XfqlSURyNjylFGsGUyekaTZl42oARigmMHSYWpjaF8ixjmayzwFfhSLJwrvfoiQA== dependencies: chalk "^4.1.2" - tslib "^2.5.0" + tslib "^2.6.2" -"@dataplan/pg@0.0.1-beta.1", "@dataplan/pg@^0.0.1-beta.1": - version "0.0.1-beta.1" - resolved "https://registry.yarnpkg.com/@dataplan/pg/-/pg-0.0.1-beta.1.tgz#fbf3652b4b990d6abef230ea8ca28af905f04f75" - integrity sha512-AyQ9f0hdMN7Csw4CqaDnD+xnKtTHsR1IqkOmldue9YSPLxAkV5TPETpS7qScPxKJ1/OBotHNfAG94tMPq5Xi7w== +"@dataplan/pg@0.0.1-beta.12": + version "0.0.1-beta.12" + resolved "https://registry.yarnpkg.com/@dataplan/pg/-/pg-0.0.1-beta.12.tgz#4daaa98e4f622f4457c2264babf4cb251f4e5621" + integrity sha512-YqDxJgVm3t/yQCFpLMrLL1R25QGEYckcRZvEkHsv/dBvid5QBmdaZGo46AimzLT0R8tWZR/XU4uHiNNBzyyC0g== dependencies: - "@graphile/lru" "^5.0.0-beta.1" - "@types/node" "^18.15.5" + "@graphile/lru" "^5.0.0-beta.3" + "@types/node" "^20.5.7" chalk "^4.1.2" - debug "^4.3.3" - eventemitter3 "^4.0.7" - pg-sql2 "^5.0.0-beta.1" - postgres-array "~2.0.0" - postgres-range "^1.1.1" - tslib "^2.5.0" + debug "^4.3.4" + eventemitter3 "^5.0.1" + pg-sql2 "^5.0.0-beta.4" + postgres-array "~3.0.2" + postgres-range "^1.1.3" + tslib "^2.6.2" + +"@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== "@esbuild/android-arm@0.15.18": version "0.15.18" @@ -1080,12 +1092,12 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== -"@graphile/lru@^5.0.0-beta.1": - version "5.0.0-beta.1" - resolved "https://registry.yarnpkg.com/@graphile/lru/-/lru-5.0.0-beta.1.tgz#3e89e35256fa9afd875853f1da94733a008a9d06" - integrity sha512-eUn0H6ff4iwkAc2jzSfrku0c6yI1XkE/42UlOBuCPBWFlwwtQ/4HTsOJM5QmsNew3uvRiTVV+g3BD8tmDVVdXA== +"@graphile/lru@^5.0.0-beta.3": + version "5.0.0-beta.3" + resolved "https://registry.yarnpkg.com/@graphile/lru/-/lru-5.0.0-beta.3.tgz#003ed59dc597af5f82747bb40486537f9624bd08" + integrity sha512-atoHRmLuYMCoMeCjS1pIA442eqAHwFZ3+bnjm3Mn+kAvujyXzGs8uup39gfmMgxOFjRAPNmPEiPw2oJUbOk65Q== dependencies: - tslib "^2.5.0" + tslib "^2.6.2" "@humanwhocodes/config-array@^0.11.13": version "0.11.13" @@ -1122,61 +1134,61 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" - integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.5.0" - jest-util "^29.5.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" - integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: - "@jest/console" "^29.5.0" - "@jest/reporters" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.5.0" - jest-config "^29.5.0" - jest-haste-map "^29.5.0" - jest-message-util "^29.5.0" - jest-regex-util "^29.4.3" - jest-resolve "^29.5.0" - jest-resolve-dependencies "^29.5.0" - jest-runner "^29.5.0" - jest-runtime "^29.5.0" - jest-snapshot "^29.5.0" - jest-util "^29.5.0" - jest-validate "^29.5.0" - jest-watcher "^29.5.0" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" micromatch "^4.0.4" - pretty-format "^29.5.0" + pretty-format "^29.7.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" - integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - "@jest/fake-timers" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.5.0" + jest-mock "^29.7.0" "@jest/expect-utils@^29.5.0": version "29.5.0" @@ -1185,47 +1197,54 @@ dependencies: jest-get-type "^29.4.3" -"@jest/expect@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" - integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: - expect "^29.5.0" - jest-snapshot "^29.5.0" + jest-get-type "^29.6.3" -"@jest/fake-timers@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" - integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: - "@jest/types" "^29.5.0" + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.5.0" - jest-mock "^29.5.0" - jest-util "^29.5.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/globals@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" - integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: - "@jest/environment" "^29.5.0" - "@jest/expect" "^29.5.0" - "@jest/types" "^29.5.0" - jest-mock "^29.5.0" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" -"@jest/reporters@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" - integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" - "@jridgewell/trace-mapping" "^0.3.15" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1233,13 +1252,13 @@ glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" + istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.5.0" - jest-util "^29.5.0" - jest-worker "^29.5.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" @@ -1252,36 +1271,36 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" - integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: - "@jridgewell/trace-mapping" "^0.3.15" + "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" - integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: - "@jest/console" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" - integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - "@jest/test-result" "^29.5.0" + "@jest/test-result" "^29.7.0" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" + jest-haste-map "^29.7.0" slash "^3.0.0" -"@jest/transform@^29.5.0", "@jest/transform@^29.7.0": +"@jest/transform@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== @@ -1346,7 +1365,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.20" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== @@ -1517,26 +1536,26 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== -"@types/pg@^8.6.2": - version "8.6.6" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.6.tgz#21cdf873a3e345a6e78f394677e3b3b1b543cb80" - integrity sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw== +"@types/pg@^8.10.2": + version "8.10.9" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.9.tgz#d20bb948c6268c5bd847e2bf968f1194c5a2355a" + integrity sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ== dependencies: "@types/node" "*" pg-protocol "*" - pg-types "^2.2.0" + pg-types "^4.0.1" "@types/pluralize@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.29.tgz#6ffa33ed1fc8813c469b859681d09707eb40d03c" integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== -"@types/prettier@^2.1.5": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" - integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== +"@types/pluralize@^0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.30.tgz#cddb9923240c20d15e6d5f98fd576ec856b9b3db" + integrity sha512-kVww6xZrW/db5BR9OqiT71J9huRdQ+z/r+LbDuT7/EK50mCmj5FoaIARnVv0rvjUS/YpDox0cDU9lpQT011VBA== -"@types/semver@^7.3.12", "@types/semver@^7.3.9", "@types/semver@^7.5.0": +"@types/semver@^7.3.12", "@types/semver@^7.3.9", "@types/semver@^7.5.0", "@types/semver@^7.5.1": version "7.5.5" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== @@ -1840,7 +1859,7 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -babel-jest@^29.5.0, babel-jest@^29.6.4: +babel-jest@^29.6.4, babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== @@ -2124,6 +2143,19 @@ core_d@^5.0.1: dependencies: supports-color "^8.1.0" +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2147,10 +2179,10 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: dependencies: ms "2.1.2" -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== deep-is@^0.1.3: version "0.1.4" @@ -2190,6 +2222,11 @@ diff-sequences@^29.4.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2652,11 +2689,16 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter3@^4.0.0, eventemitter3@^4.0.7: +eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -2677,7 +2719,7 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.0.0, expect@^29.5.0: +expect@^29.0.0: version "29.5.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== @@ -2688,6 +2730,17 @@ expect@^29.0.0, expect@^29.5.0: jest-message-util "^29.5.0" jest-util "^29.5.0" +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2920,47 +2973,64 @@ graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -grafast@^0.0.1-beta.1: - version "0.0.1-beta.1" - resolved "https://registry.yarnpkg.com/grafast/-/grafast-0.0.1-beta.1.tgz#375d7e0cfaf05ca18269393df4bf3f6d9da65f98" - integrity sha512-vVWQtaXPQxjXE6cn3pb97PuJBqY7Jnn2CW/f/5PK8fHZkI02KakVYsTzSwZQO7Jx1I+5YAL9xLcgKEO1iBmrZg== +grafast@0.1.1-beta.1, grafast@^0.1.1-beta.1: + version "0.1.1-beta.1" + resolved "https://registry.yarnpkg.com/grafast/-/grafast-0.1.1-beta.1.tgz#825b1e6463a3ae2cdb0b043602772290fa64c7d5" + integrity sha512-CEhp033y+xwoZTiQLXr/s5Yq+kqJWKoFYnyNXovK4o1JC2Rqol4QnLnwv29VMZBDaEiPaX3ACfKblYHsyhUgkg== dependencies: - "@graphile/lru" "^5.0.0-beta.1" - debug "^4.3.3" + "@graphile/lru" "^5.0.0-beta.3" + debug "^4.3.4" graphql "^16.1.0-experimental-stream-defer.6" - tamedevil "^0.0.0-beta.1" + tamedevil "^0.0.0-beta.3" -grafserv@^0.0.1-beta.1: - version "0.0.1-beta.1" - resolved "https://registry.yarnpkg.com/grafserv/-/grafserv-0.0.1-beta.1.tgz#64613e398d59bc8b135f841ebdac59277dcefaf7" - integrity sha512-wHUQSF2h/eY810WcxYawWi0hj1X2T98r7i3O5adYwe8R5RZypjhPk7AX8TDRJ9E5GhFGrMhiCjUWQZO39syVlA== +grafserv@0.1.1-beta.3, grafserv@^0.1.1-beta.3: + version "0.1.1-beta.3" + resolved "https://registry.yarnpkg.com/grafserv/-/grafserv-0.1.1-beta.3.tgz#6e144e48b6fbf65a1e53bcb3862c91218c5dda30" + integrity sha512-/jssvBuzfciUKQ3eFKvF/CWjsDVSvErdwqXyDDl5rlxEh6T30HkFrMVsAcNMD/MDeH/EcPbsXY5qmzKXAinwlg== dependencies: - "@graphile/lru" "^5.0.0-beta.1" - debug "^4.1.1" - eventemitter3 "^4.0.7" - graphile-config "^0.0.1-beta.1" - graphql-ws "^5.11.3" - ruru "^2.0.0-beta.1" - tslib "^2.5.0" + "@graphile/lru" "^5.0.0-beta.3" + debug "^4.3.4" + eventemitter3 "^5.0.1" + graphile-config "^0.0.1-beta.4" + graphql-ws "^5.14.0" + ruru "^2.0.0-beta.8" + tslib "^2.6.2" graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphile-build-pg@5.0.0-beta.1, graphile-build-pg@^5.0.0-beta.1: - version "5.0.0-beta.1" - resolved "https://registry.yarnpkg.com/graphile-build-pg/-/graphile-build-pg-5.0.0-beta.1.tgz#30be763761e537473babd8c850a693d70e3f4e96" - integrity sha512-Q6N/zJFHIsFPZnjLecU6TM+6fv0YUKp/JrIoJ1c7C1CT4VLM1Uow7nsMh1X37eppNmZbXkArVWXs2H92EDCmsA== +graphile-build-pg@5.0.0-beta.15: + version "5.0.0-beta.15" + resolved "https://registry.yarnpkg.com/graphile-build-pg/-/graphile-build-pg-5.0.0-beta.15.tgz#c734011cfb324b37dcf35390dff29cf5f10f3261" + integrity sha512-GVpDJflvspVkMy5Sj6in+rq2rNqDPzAt2LBsYjpMqN5uU/OUSaE4aJTY7C+upmPWwpfY5ZP1Xt66+A+cVBed8g== dependencies: - "@types/node" "^18.15.5" - debug "^4.3.3" - graphile-config "^0.0.1-beta.1" - jsonwebtoken "^8.5.1" - pg-introspection "^0.0.1-beta.1" - tslib "^2.5.0" + "@types/node" "^20.5.7" + debug "^4.3.4" + graphile-config "^0.0.1-beta.4" + jsonwebtoken "^9.0.2" + pg-introspection "^0.0.1-beta.4" + tslib "^2.6.2" -graphile-build@5.0.0-beta.1, graphile-build@^5.0.0-beta.1: +graphile-build@5.0.0-beta.11: + version "5.0.0-beta.11" + resolved "https://registry.yarnpkg.com/graphile-build/-/graphile-build-5.0.0-beta.11.tgz#b1a0ca1090f4389e9957be3a67ad9d816c664fad" + integrity sha512-jAsLl/OTAosAJf82rVFmLbIgA9p9Lc/ZEjnco/BpflyW0jhaGU4NL5cIxBf4382F6bvPoilsL1HBEslLYK2wtw== + dependencies: + "@types/node" "^20.5.7" + "@types/pluralize" "^0.0.30" + "@types/semver" "^7.5.1" + chalk "^4.1.2" + debug "^4.3.4" + graphile-config "^0.0.1-beta.4" + graphql "^16.1.0-experimental-stream-defer.6" + lodash "^4.17.21" + pluralize "^7.0.0" + semver "^7.5.4" + tslib "^2.6.2" + +graphile-build@^5.0.0-beta.1: version "5.0.0-beta.1" resolved "https://registry.yarnpkg.com/graphile-build/-/graphile-build-5.0.0-beta.1.tgz#6a92089e1a294fd5b297e7372773a040d147b531" integrity sha512-PEz160PMBLHojnujmun8jdB/qULKNNTW8TcfrTgPImlTB4hoAPVvoZ8RaapJ77qkWhg1AR68cjrk2XQXKvN2bA== @@ -2992,33 +3062,48 @@ graphile-config@^0.0.1-beta.1: tslib "^2.5.0" yargs "^17.4.1" -graphile-export@^0.0.2-beta.4: - version "0.0.2-beta.4" - resolved "https://registry.yarnpkg.com/graphile-export/-/graphile-export-0.0.2-beta.4.tgz#a7a68805342317587ed0e5453a46f4bf2755f6c8" - integrity sha512-GsN82nuMnOB+kaGr1xiZ+S9Uwwx78m04sc+36JiJOPQi6MMCx13Er5M31yq3kwHzA6TpbcreHS0YLlkPQeTAwQ== +graphile-config@^0.0.1-beta.4: + version "0.0.1-beta.4" + resolved "https://registry.yarnpkg.com/graphile-config/-/graphile-config-0.0.1-beta.4.tgz#9c5d2b018a628c7ed931134e4258adb8aa3e94f0" + integrity sha512-9JWXMcrHNHMGMHdlzoOR75OwmvTxYdquYYkx0zoHol0Tkh8KcDxWdF9+tQ+l2hBjazMAI6R14jztRK4EM5bY3A== + dependencies: + "@types/interpret" "^1.1.1" + "@types/node" "^20.5.7" + "@types/semver" "^7.5.1" + chalk "^4.1.2" + debug "^4.3.4" + interpret "^3.1.1" + semver "^7.5.4" + tslib "^2.6.2" + yargs "^17.7.2" + +graphile-export@0.0.2-beta.6: + version "0.0.2-beta.6" + resolved "https://registry.yarnpkg.com/graphile-export/-/graphile-export-0.0.2-beta.6.tgz#6411083808776f3e0b0ba0fc1754a8b067c60f32" + integrity sha512-ZIFXM9dmlrPbUchHGBBAdzI+EwAWIIeHvdAqVCBINq4hh32xkM5fbU6/A85SxxUF5aLqPTXE/YJ1p2oqsJl35A== dependencies: "@babel/generator" "^7.22.10" "@babel/parser" "^7.22.14" "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.22.11" "@types/node" "^20.5.7" prettier "^3.0.3" tslib "^2.6.2" -graphile-utils@^5.0.0-beta.1: - version "5.0.0-beta.1" - resolved "https://registry.yarnpkg.com/graphile-utils/-/graphile-utils-5.0.0-beta.1.tgz#2584dbe3d3ca690091b01b09be3067c8b6a38a43" - integrity sha512-4QkOTmWsWQvgToz5qSYabQEzCJ+VtqfB+GG7fP7wXKD6DzNU7yNfp4b5Tt02NDLu9U4mRRw/bh9FWerFK0oJsQ== +graphile-utils@^5.0.0-beta.15: + version "5.0.0-beta.15" + resolved "https://registry.yarnpkg.com/graphile-utils/-/graphile-utils-5.0.0-beta.15.tgz#db25d729fb5997d3b39e1c6b0ef20661d15a2cf4" + integrity sha512-X1dC2ajKlAloCRR0j6zBc1JZCrHWZvj07DMWd8dvu2jPWD2+L8XuCoDryovP7NtCYOvPgDysy2X1SkolrxkiIQ== dependencies: - debug "^4.1.1" + debug "^4.3.4" json5 "^2.2.3" - tslib "^2.5.0" + tslib "^2.6.2" -graphql-ws@^5.11.3: - version "5.12.0" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.12.0.tgz#d06fe38916334b4a4c827f73268cbf4359a32ed7" - integrity sha512-PA3ImUp8utrpEjoxBMhvxsjkStvFEdU0E1gEBREt8HZIWkxOUymwJBhFnBL7t/iHhUq1GVPeZevPinkZFENxTw== +graphql-ws@^5.14.0: + version "5.14.2" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.14.2.tgz#7db6f6138717a544d9480f0213f65f2841ed1c52" + integrity sha512-LycmCwhZ+Op2GlHz4BZDsUYHKRiiUz+3r9wbhBATMETNlORQJAaFlAgTFoeRh6xQoQegwYwIylVD1Qns9/DA3w== graphql@16.1.0-experimental-stream-defer.6, graphql@^16.1.0-experimental-stream-defer.6: version "16.1.0-experimental-stream-defer.6" @@ -3143,6 +3228,11 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -3298,7 +3388,7 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: +istanbul-lib-instrument@^5.0.4: version "5.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -3309,6 +3399,17 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -3340,83 +3441,83 @@ iterall@^1.3.0: resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== -jest-changed-files@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" - integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: execa "^5.0.0" + jest-util "^29.7.0" p-limit "^3.1.0" -jest-circus@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" - integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: - "@jest/environment" "^29.5.0" - "@jest/expect" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - dedent "^0.7.0" + dedent "^1.0.0" is-generator-fn "^2.0.0" - jest-each "^29.5.0" - jest-matcher-utils "^29.5.0" - jest-message-util "^29.5.0" - jest-runtime "^29.5.0" - jest-snapshot "^29.5.0" - jest-util "^29.5.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" p-limit "^3.1.0" - pretty-format "^29.5.0" + pretty-format "^29.7.0" pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" - integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: - "@jest/core" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" chalk "^4.0.0" + create-jest "^29.7.0" exit "^0.1.2" - graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.5.0" - jest-util "^29.5.0" - jest-validate "^29.5.0" - prompts "^2.0.1" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" yargs "^17.3.1" -jest-config@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" - integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.5.0" - "@jest/types" "^29.5.0" - babel-jest "^29.5.0" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.5.0" - jest-environment-node "^29.5.0" - jest-get-type "^29.4.3" - jest-regex-util "^29.4.3" - jest-resolve "^29.5.0" - jest-runner "^29.5.0" - jest-util "^29.5.0" - jest-validate "^29.5.0" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.5.0" + pretty-format "^29.7.0" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -3430,42 +3531,57 @@ jest-diff@^29.5.0: jest-get-type "^29.4.3" pretty-format "^29.5.0" -jest-docblock@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" - integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" -jest-each@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" - integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.3" chalk "^4.0.0" - jest-get-type "^29.4.3" - jest-util "^29.5.0" - pretty-format "^29.5.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" -jest-environment-node@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" - integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: - "@jest/environment" "^29.5.0" - "@jest/fake-timers" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.5.0" - jest-util "^29.5.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" jest-get-type@^29.4.3: version "29.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== -jest-haste-map@^29.5.0, jest-haste-map@^29.7.0: +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== @@ -3484,13 +3600,13 @@ jest-haste-map@^29.5.0, jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" - integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: - jest-get-type "^29.4.3" - pretty-format "^29.5.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" jest-matcher-utils@^29.5.0: version "29.5.0" @@ -3502,6 +3618,16 @@ jest-matcher-utils@^29.5.0: jest-get-type "^29.4.3" pretty-format "^29.5.0" +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + jest-message-util@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" @@ -3517,131 +3643,143 @@ jest-message-util@^29.5.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" - integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: - "@jest/types" "^29.5.0" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" "@types/node" "*" - jest-util "^29.5.0" + jest-util "^29.7.0" jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^29.4.3, jest-regex-util@^29.6.3: +jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" - integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: - jest-regex-util "^29.4.3" - jest-snapshot "^29.5.0" + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" -jest-resolve@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" - integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" + jest-haste-map "^29.7.0" jest-pnp-resolver "^1.2.2" - jest-util "^29.5.0" - jest-validate "^29.5.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" resolve "^1.20.0" resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" - integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: - "@jest/console" "^29.5.0" - "@jest/environment" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.4.3" - jest-environment-node "^29.5.0" - jest-haste-map "^29.5.0" - jest-leak-detector "^29.5.0" - jest-message-util "^29.5.0" - jest-resolve "^29.5.0" - jest-runtime "^29.5.0" - jest-util "^29.5.0" - jest-watcher "^29.5.0" - jest-worker "^29.5.0" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" - integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== - dependencies: - "@jest/environment" "^29.5.0" - "@jest/fake-timers" "^29.5.0" - "@jest/globals" "^29.5.0" - "@jest/source-map" "^29.4.3" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" - jest-message-util "^29.5.0" - jest-mock "^29.5.0" - jest-regex-util "^29.4.3" - jest-resolve "^29.5.0" - jest-snapshot "^29.5.0" - jest-util "^29.5.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" - integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.5.0" + expect "^29.7.0" graceful-fs "^4.2.9" - jest-diff "^29.5.0" - jest-get-type "^29.4.3" - jest-matcher-utils "^29.5.0" - jest-message-util "^29.5.0" - jest-util "^29.5.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" natural-compare "^1.4.0" - pretty-format "^29.5.0" - semver "^7.3.5" + pretty-format "^29.7.0" + semver "^7.5.3" jest-util@^29.0.0, jest-util@^29.5.0, jest-util@^29.7.0: version "29.7.0" @@ -3655,33 +3793,33 @@ jest-util@^29.0.0, jest-util@^29.5.0, jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" - integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.4.3" + jest-get-type "^29.6.3" leven "^3.1.0" - pretty-format "^29.5.0" + pretty-format "^29.7.0" -jest-watcher@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" - integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: - "@jest/test-result" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.13.1" - jest-util "^29.5.0" + jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^29.5.0, jest-worker@^29.7.0: +jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -3691,15 +3829,15 @@ jest-worker@^29.5.0, jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" - integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== +jest@29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: - "@jest/core" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" import-local "^3.0.2" - jest-cli "^29.5.0" + jest-cli "^29.7.0" jju@~1.4.0: version "1.4.0" @@ -3763,10 +3901,10 @@ json5@^2.2.1, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== +jsonwebtoken@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== dependencies: jws "^3.2.2" lodash.includes "^4.3.0" @@ -3777,7 +3915,7 @@ jsonwebtoken@^8.5.1: lodash.isstring "^4.0.1" lodash.once "^4.0.0" ms "^2.1.1" - semver "^5.6.0" + semver "^7.5.4" jwa@^1.4.1: version "1.4.1" @@ -4059,6 +4197,11 @@ object.values@^1.1.7: define-properties "^1.2.0" es-abstract "^1.22.1" +obuf@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -4165,42 +4308,57 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pg-connection-string@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" - integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + +pg-connection-string@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" + integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== pg-int8@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -pg-introspection@^0.0.1-beta.1: - version "0.0.1-beta.1" - resolved "https://registry.yarnpkg.com/pg-introspection/-/pg-introspection-0.0.1-beta.1.tgz#e8dc6ee0488fb623dbbb563fb442e1944e661a09" - integrity sha512-RzQEsQkgojGbgkRvstErXPvyBoIwZ3OJ2cg/66rw6/lcDiC9q+80qno9KvKaZ8/Onft7UZpV9GXfYvN2aSAxCg== +pg-introspection@0.0.1-beta.4, pg-introspection@^0.0.1-beta.4: + version "0.0.1-beta.4" + resolved "https://registry.yarnpkg.com/pg-introspection/-/pg-introspection-0.0.1-beta.4.tgz#651af3bbe25334ee2311e1ad50d23ab1796af63d" + integrity sha512-Nw8OZuTNZ7rn4gMLFJA4xV+O6eYfF6CO9sWLshB744n4oZuQWVdzd+boHGFXJhyIZ1diYlnCb2iN7cSdf7vRow== dependencies: - tslib "^2.5.0" + tslib "^2.6.2" -pg-pool@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.5.2.tgz#ed1bed1fb8d79f1c6fd5fb1c99e990fbf9ddf178" - integrity sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w== +pg-numeric@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== -pg-protocol@*, pg-protocol@^1.5.0: +pg-pool@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.1.tgz#5a902eda79a8d7e3c928b77abf776b3cb7d351f7" + integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== + +pg-protocol@*: version "1.5.0" resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.5.0.tgz#b5dd452257314565e2d54ab3c132adc46565a6a0" integrity sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ== -pg-sql2@^5.0.0-beta.1: - version "5.0.0-beta.1" - resolved "https://registry.yarnpkg.com/pg-sql2/-/pg-sql2-5.0.0-beta.1.tgz#18285ed6c242ee59067168ea1e985a24b7447a5a" - integrity sha512-QIwRW0r9oLZg/RlOAxk0/hVz6qBNwNRUHeyD1Hro6iZuNvaVjn0LLlxPZeXtjtspEcXOy4Dmum5kxXxEumhGDw== +pg-protocol@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== + +pg-sql2@5.0.0-beta.4, pg-sql2@^5.0.0-beta.4: + version "5.0.0-beta.4" + resolved "https://registry.yarnpkg.com/pg-sql2/-/pg-sql2-5.0.0-beta.4.tgz#fe71b762012ed565788e7f7e69e888c0c198efd7" + integrity sha512-KR6GKB/DweJqSacm3ZzYihoGoW3HPW3o0/ExCuOVI4Ijb1vgW/JB8KVM6OOAVkogn5xvhFSRQkom9LnZw0j76A== dependencies: - "@graphile/lru" "^5.0.0-beta.1" - tslib "^2.5.0" + "@graphile/lru" "^5.0.0-beta.3" + tslib "^2.6.2" -pg-types@^2.1.0, pg-types@^2.2.0: +pg-types@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== @@ -4211,18 +4369,33 @@ pg-types@^2.1.0, pg-types@^2.2.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" -pg@8.8.0, pg@^8.7.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.8.0.tgz#a77f41f9d9ede7009abfca54667c775a240da686" - integrity sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw== +pg-types@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542" + integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g== + dependencies: + pg-int8 "1.0.1" + pg-numeric "1.0.2" + postgres-array "~3.0.1" + postgres-bytea "~3.0.0" + postgres-date "~2.0.1" + postgres-interval "^3.0.0" + postgres-range "^1.1.1" + +pg@8.11.3, pg@^8.11.3: + version "8.11.3" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.3.tgz#d7db6e3fe268fcedd65b8e4599cda0b8b4bf76cb" + integrity sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== dependencies: buffer-writer "2.0.0" packet-reader "1.0.0" - pg-connection-string "^2.5.0" - pg-pool "^3.5.2" - pg-protocol "^1.5.0" + pg-connection-string "^2.6.2" + pg-pool "^3.6.1" + pg-protocol "^1.6.0" pg-types "^2.1.0" pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" pgpass@1.x: version "1.0.5" @@ -4258,47 +4431,64 @@ pluralize@^7.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== -postgraphile@^5.0.0-beta.1: - version "5.0.0-beta.1" - resolved "https://registry.yarnpkg.com/postgraphile/-/postgraphile-5.0.0-beta.1.tgz#52d338761d35181670fa0b34de665b59437e4575" - integrity sha512-ZImetxeRz3czuSf0m5OVbyhj6t1gt+IxaheiCfQbzYYxL5ItKJWAAAMLkvnuJDOJNXyNxPC0uCig2NYEpvZz+g== +postgraphile@5.0.0-beta.16: + version "5.0.0-beta.16" + resolved "https://registry.yarnpkg.com/postgraphile/-/postgraphile-5.0.0-beta.16.tgz#e0c00df4775afcc6a80acb6383572f54d20f2498" + integrity sha512-crz9hozPL//7c/DFo4IDsV76GL3AlzZgKMjWBeVFCWy/TNeJUngazA8+VFltbKdveO368zadg1ZLYBcfwP9fmQ== dependencies: - "@dataplan/json" "0.0.1-beta.1" - "@dataplan/pg" "0.0.1-beta.1" - "@graphile/lru" "^5.0.0-beta.1" - "@types/node" "^18.15.5" - "@types/pg" "^8.6.2" - debug "^4.3.3" - grafast "^0.0.1-beta.1" - grafserv "^0.0.1-beta.1" - graphile-build "5.0.0-beta.1" - graphile-build-pg "5.0.0-beta.1" - graphile-config "^0.0.1-beta.1" - graphile-utils "^5.0.0-beta.1" + "@dataplan/json" "0.0.1-beta.10" + "@dataplan/pg" "0.0.1-beta.12" + "@graphile/lru" "^5.0.0-beta.3" + "@types/node" "^20.5.7" + "@types/pg" "^8.10.2" + debug "^4.3.4" + grafast "^0.1.1-beta.1" + grafserv "^0.1.1-beta.3" + graphile-build "5.0.0-beta.11" + graphile-build-pg "5.0.0-beta.15" + graphile-config "^0.0.1-beta.4" + graphile-utils "^5.0.0-beta.15" graphql "^16.1.0-experimental-stream-defer.6" iterall "^1.3.0" - jsonwebtoken "^8.5.1" - pg "^8.7.1" - pg-sql2 "^5.0.0-beta.1" - tamedevil "^0.0.0-beta.1" - tslib "^2.5.0" - ws "^8.12.1" + jsonwebtoken "^9.0.2" + pg "^8.11.3" + pg-sql2 "^5.0.0-beta.4" + tamedevil "^0.0.0-beta.3" + tslib "^2.6.2" + ws "^8.13.0" postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== +postgres-array@~3.0.1, postgres-array@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== + postgres-bytea@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== +postgres-bytea@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== + dependencies: + obuf "~1.1.2" + postgres-date@~1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== +postgres-date@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457" + integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw== + postgres-interval@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" @@ -4306,7 +4496,12 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" -postgres-range@^1.1.1: +postgres-interval@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== + +postgres-range@^1.1.1, postgres-range@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== @@ -4335,6 +4530,15 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -4483,16 +4687,17 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -ruru@^2.0.0-beta.1: - version "2.0.0-beta.1" - resolved "https://registry.yarnpkg.com/ruru/-/ruru-2.0.0-beta.1.tgz#8e8982055fcab9637c80deec6193722da6442d5b" - integrity sha512-ffSPjmT8TmT7iPgKC/yh2mEyz/brVJFTl8QAnb8COLaha3wVmBjzDaGVj3OFi46sKszpRWairlLTobQvemn4KQ== +ruru@^2.0.0-beta.8: + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/ruru/-/ruru-2.0.0-beta.8.tgz#f2ede4cf26643dde79997337a371d99fcf04f58f" + integrity sha512-VphXYaNmTVn3m+97hiOkWkQNEezzsCQ3p4Dl09HbrAQf35EsNJ/5JeZXjPGb5abyZRd3G+T5t56ZsPixXd4h5w== dependencies: - graphile-config "^0.0.1-beta.1" + "@emotion/is-prop-valid" "^1.2.1" + graphile-config "^0.0.1-beta.4" graphql "^16.1.0-experimental-stream-defer.6" http-proxy "^1.18.1" - tslib "^2.5.0" - yargs "^17.6.2" + tslib "^2.6.2" + yargs "^17.7.2" safe-array-concat@^1.0.1: version "1.0.1" @@ -4518,18 +4723,13 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -semver@7.x, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: +semver@7.x, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: 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" -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -4717,13 +4917,13 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -tamedevil@^0.0.0-beta.1: - version "0.0.0-beta.1" - resolved "https://registry.yarnpkg.com/tamedevil/-/tamedevil-0.0.0-beta.1.tgz#47e7d6e87a9b752bbab546723b596f49ff1fac08" - integrity sha512-SxahKPW1cvRWJQuO6oJPoKh6+pW0pULHGe1SQ7Atlo/QvPjaRQp5qp2o/K1E7Nrrlx7LuotB4BSVeGDMd7U5TQ== +tamedevil@^0.0.0-beta.3: + version "0.0.0-beta.3" + resolved "https://registry.yarnpkg.com/tamedevil/-/tamedevil-0.0.0-beta.3.tgz#18410257a3b468b4cde1c9c7a01eb87d08fe8982" + integrity sha512-WBogv0H++88OIeGfnXIObpd9piIC/GLb5IqCveNUFNWziBwKeWJym+wwcaH+6UBiqAMEs8fDZyGAVAAPTDowZQ== dependencies: - "@graphile/lru" "^5.0.0-beta.1" - tslib "^2.5.0" + "@graphile/lru" "^5.0.0-beta.3" + tslib "^2.6.2" test-exclude@^6.0.0: version "6.0.0" @@ -4988,10 +5188,10 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@^8.12.1: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@^8.13.0: + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== xtend@^4.0.0: version "4.0.2" @@ -5018,7 +5218,7 @@ yargs-parser@^21.0.1, yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^17.3.1, yargs@^17.4.1, yargs@^17.6.2: +yargs@^17.3.1, yargs@^17.4.1: version "17.7.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== @@ -5031,6 +5231,19 @@ yargs@^17.3.1, yargs@^17.4.1, yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 771eb4444b53d6bbecc31e79b8e4f0ce46e4be7c Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 15:49:41 +0000 Subject: [PATCH 19/27] Don't add ESLint plugin or graphile-export as dependency --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 3d5ad62..b81381a 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,6 @@ "url": "https://github.com/graphile-contrib/postgraphile-plugin-connection-filter/issues" }, "dependencies": { - "eslint-plugin-graphile-export": "^0.0.2-beta.3", - "graphile-export": "0.0.2-beta.6", "tslib": "^2.5.0" }, "devDependencies": { @@ -44,6 +42,7 @@ "babel-plugin-transform-import-meta": "^2.2.1", "eslint": "^8.48.0", "eslint-config-prettier": "^9.0.0", + "eslint-plugin-graphile-export": "^0.0.2-beta.3", "eslint-plugin-import": "^2.28.1", "eslint-plugin-jest": "^27.2.3", "eslint-plugin-simple-import-sort": "^10.0.0", @@ -53,6 +52,7 @@ "grafserv": "0.1.1-beta.3", "graphile-build": "^5.0.0-beta.1", "graphile-build-pg": "5.0.0-beta.15", + "graphile-export": "0.0.2-beta.6", "graphql": "16.1.0-experimental-stream-defer.6", "jest": "29.7.0", "module-from-string": "^3.3.0", From 35c70b4c5dfbd1fafaef70ddffade4b4f7f3c9ba Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 15:53:02 +0000 Subject: [PATCH 20/27] Update dependencies, use carat range --- package.json | 16 +++---- yarn.lock | 130 ++++++++++++++++++++++++++------------------------- 2 files changed, 75 insertions(+), 71 deletions(-) diff --git a/package.json b/package.json index b81381a..bf551a4 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@babel/plugin-transform-runtime": "^7.23.3", "@babel/preset-env": "^7.22.14", "@babel/preset-typescript": "^7.22.11", - "@dataplan/pg": "0.0.1-beta.12", + "@dataplan/pg": "^0.0.1-beta.14", "@tsconfig/node16": "^1.0.3", "@types/jest": "29.5.0", "@typescript-eslint/eslint-plugin": "^6.5.0", @@ -48,18 +48,18 @@ "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-tsdoc": "^0.2.17", "eslint_d": "^12.2.1", - "grafast": "0.1.1-beta.1", - "grafserv": "0.1.1-beta.3", + "grafast": "^0.1.1-beta.3", + "grafserv": "^0.1.1-beta.5", "graphile-build": "^5.0.0-beta.1", - "graphile-build-pg": "5.0.0-beta.15", - "graphile-export": "0.0.2-beta.6", + "graphile-build-pg": "^5.0.0-beta.17", + "graphile-export": "^0.0.2-beta.8", "graphql": "16.1.0-experimental-stream-defer.6", "jest": "29.7.0", "module-from-string": "^3.3.0", "pg": "8.11.3", - "pg-introspection": "0.0.1-beta.4", - "pg-sql2": "5.0.0-beta.4", - "postgraphile": "5.0.0-beta.16", + "pg-introspection": "^0.0.1-beta.5", + "pg-sql2": "^5.0.0-beta.4", + "postgraphile": "^5.0.0-beta.18", "prettier": "2.8.7", "ts-jest": "29.1.0", "typescript": "^5.0.4" diff --git a/yarn.lock b/yarn.lock index 96577ae..3b960b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1015,18 +1015,18 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@dataplan/json@0.0.1-beta.10": - version "0.0.1-beta.10" - resolved "https://registry.yarnpkg.com/@dataplan/json/-/json-0.0.1-beta.10.tgz#ba7207eeb2a920b6aecf14c29e568844efee0e25" - integrity sha512-HXTxAe6kHaS7m8aBfzc5u1XfqlSURyNjylFGsGUyekaTZl42oARigmMHSYWpjaF8ixjmayzwFfhSLJwrvfoiQA== +"@dataplan/json@0.0.1-beta.12": + version "0.0.1-beta.12" + resolved "https://registry.yarnpkg.com/@dataplan/json/-/json-0.0.1-beta.12.tgz#9ddbf928c7839d450c8b92700b49ffafd24f08e7" + integrity sha512-qNTpesjybdjPnI/ILnVRbuMZe1L2utoSb9zt+yQWieA7vAzhhEP3SByqpnkz6twzdQVc1wPjzq5e6O8fKrFKNw== dependencies: chalk "^4.1.2" tslib "^2.6.2" -"@dataplan/pg@0.0.1-beta.12": - version "0.0.1-beta.12" - resolved "https://registry.yarnpkg.com/@dataplan/pg/-/pg-0.0.1-beta.12.tgz#4daaa98e4f622f4457c2264babf4cb251f4e5621" - integrity sha512-YqDxJgVm3t/yQCFpLMrLL1R25QGEYckcRZvEkHsv/dBvid5QBmdaZGo46AimzLT0R8tWZR/XU4uHiNNBzyyC0g== +"@dataplan/pg@0.0.1-beta.14", "@dataplan/pg@^0.0.1-beta.14": + version "0.0.1-beta.14" + resolved "https://registry.yarnpkg.com/@dataplan/pg/-/pg-0.0.1-beta.14.tgz#4a4c1d240cdba0e51e1cb710a91474e8528aed73" + integrity sha512-LyAfm3WTugUrlz+ONcewPgJx+ZZ6RWmTZMAC1YH/Dv/SElva7piXCZopFgNNdd8bnxFMohwKbyvvaBIKqCLiLw== dependencies: "@graphile/lru" "^5.0.0-beta.3" "@types/node" "^20.5.7" @@ -2973,27 +2973,31 @@ graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -grafast@0.1.1-beta.1, grafast@^0.1.1-beta.1: - version "0.1.1-beta.1" - resolved "https://registry.yarnpkg.com/grafast/-/grafast-0.1.1-beta.1.tgz#825b1e6463a3ae2cdb0b043602772290fa64c7d5" - integrity sha512-CEhp033y+xwoZTiQLXr/s5Yq+kqJWKoFYnyNXovK4o1JC2Rqol4QnLnwv29VMZBDaEiPaX3ACfKblYHsyhUgkg== +grafast@^0.1.1-beta.3: + version "0.1.1-beta.3" + resolved "https://registry.yarnpkg.com/grafast/-/grafast-0.1.1-beta.3.tgz#9a3d12f641502c11a315f04278a2f041d6e428fb" + integrity sha512-42nXT+WoZa7qoeuFAacra5nvuzlDOREyiI4aNMFI8cBBAaIQx6I9FQsOjPgnfS/RP9l6xz922Rde3JkKo6oERQ== dependencies: "@graphile/lru" "^5.0.0-beta.3" + chalk "^4.1.2" debug "^4.3.4" + eventemitter3 "^5.0.1" graphql "^16.1.0-experimental-stream-defer.6" + iterall "^1.3.0" tamedevil "^0.0.0-beta.3" + tslib "^2.6.2" -grafserv@0.1.1-beta.3, grafserv@^0.1.1-beta.3: - version "0.1.1-beta.3" - resolved "https://registry.yarnpkg.com/grafserv/-/grafserv-0.1.1-beta.3.tgz#6e144e48b6fbf65a1e53bcb3862c91218c5dda30" - integrity sha512-/jssvBuzfciUKQ3eFKvF/CWjsDVSvErdwqXyDDl5rlxEh6T30HkFrMVsAcNMD/MDeH/EcPbsXY5qmzKXAinwlg== +grafserv@^0.1.1-beta.5: + version "0.1.1-beta.5" + resolved "https://registry.yarnpkg.com/grafserv/-/grafserv-0.1.1-beta.5.tgz#0efe2a29c5541402d4e6c63de2bd7c0efb3b5027" + integrity sha512-Avn4Dw+cmVt0cENNLs+hu5+oEZKpxxL+jEVFnwr39tj935mSEfgubT1WiiEvF3fTCdHeHjblXFREY/SuWiXglA== dependencies: "@graphile/lru" "^5.0.0-beta.3" debug "^4.3.4" eventemitter3 "^5.0.1" - graphile-config "^0.0.1-beta.4" + graphile-config "^0.0.1-beta.6" graphql-ws "^5.14.0" - ruru "^2.0.0-beta.8" + ruru "^2.0.0-beta.10" tslib "^2.6.2" graphemer@^1.4.0: @@ -3001,29 +3005,29 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphile-build-pg@5.0.0-beta.15: - version "5.0.0-beta.15" - resolved "https://registry.yarnpkg.com/graphile-build-pg/-/graphile-build-pg-5.0.0-beta.15.tgz#c734011cfb324b37dcf35390dff29cf5f10f3261" - integrity sha512-GVpDJflvspVkMy5Sj6in+rq2rNqDPzAt2LBsYjpMqN5uU/OUSaE4aJTY7C+upmPWwpfY5ZP1Xt66+A+cVBed8g== +graphile-build-pg@5.0.0-beta.17, graphile-build-pg@^5.0.0-beta.17: + version "5.0.0-beta.17" + resolved "https://registry.yarnpkg.com/graphile-build-pg/-/graphile-build-pg-5.0.0-beta.17.tgz#2a0bccb9d2484a70cd9e58330a3bb266141a11fa" + integrity sha512-utgGxtyZl5uxJ/zyGfMZ71ZYuFhTx/CaWbeABCV/Zi7fAzQP/8kAEUCM2uw3ZQ8WeXf0/j73KfgFyF2nQYkfWQ== dependencies: "@types/node" "^20.5.7" debug "^4.3.4" - graphile-config "^0.0.1-beta.4" + graphile-config "^0.0.1-beta.6" jsonwebtoken "^9.0.2" - pg-introspection "^0.0.1-beta.4" + pg-introspection "^0.0.1-beta.5" tslib "^2.6.2" -graphile-build@5.0.0-beta.11: - version "5.0.0-beta.11" - resolved "https://registry.yarnpkg.com/graphile-build/-/graphile-build-5.0.0-beta.11.tgz#b1a0ca1090f4389e9957be3a67ad9d816c664fad" - integrity sha512-jAsLl/OTAosAJf82rVFmLbIgA9p9Lc/ZEjnco/BpflyW0jhaGU4NL5cIxBf4382F6bvPoilsL1HBEslLYK2wtw== +graphile-build@5.0.0-beta.13: + version "5.0.0-beta.13" + resolved "https://registry.yarnpkg.com/graphile-build/-/graphile-build-5.0.0-beta.13.tgz#274d7c53730cf414ee5c6335480be8c2e3bd5d9e" + integrity sha512-SOSZ2SCMr5MIhJrNyhAL1b80mN35+heFp+GqS6Ul2i/qwmS3AxXA46cI8wIAHMqHEwERQX6ZTaO4xK2S1WOJDg== dependencies: "@types/node" "^20.5.7" "@types/pluralize" "^0.0.30" "@types/semver" "^7.5.1" chalk "^4.1.2" debug "^4.3.4" - graphile-config "^0.0.1-beta.4" + graphile-config "^0.0.1-beta.6" graphql "^16.1.0-experimental-stream-defer.6" lodash "^4.17.21" pluralize "^7.0.0" @@ -3062,10 +3066,10 @@ graphile-config@^0.0.1-beta.1: tslib "^2.5.0" yargs "^17.4.1" -graphile-config@^0.0.1-beta.4: - version "0.0.1-beta.4" - resolved "https://registry.yarnpkg.com/graphile-config/-/graphile-config-0.0.1-beta.4.tgz#9c5d2b018a628c7ed931134e4258adb8aa3e94f0" - integrity sha512-9JWXMcrHNHMGMHdlzoOR75OwmvTxYdquYYkx0zoHol0Tkh8KcDxWdF9+tQ+l2hBjazMAI6R14jztRK4EM5bY3A== +graphile-config@^0.0.1-beta.6: + version "0.0.1-beta.6" + resolved "https://registry.yarnpkg.com/graphile-config/-/graphile-config-0.0.1-beta.6.tgz#aca3f554d7905d8de779526850c6a7d16294e3e6" + integrity sha512-TzLPvp89MDJhQ57/h3IGTV0++zaIJeRLUHh6n0lbeEAX2S7vaWBDFmIfXWla/gejjER4fyRT/vK4617Be45Zcg== dependencies: "@types/interpret" "^1.1.1" "@types/node" "^20.5.7" @@ -3077,10 +3081,10 @@ graphile-config@^0.0.1-beta.4: tslib "^2.6.2" yargs "^17.7.2" -graphile-export@0.0.2-beta.6: - version "0.0.2-beta.6" - resolved "https://registry.yarnpkg.com/graphile-export/-/graphile-export-0.0.2-beta.6.tgz#6411083808776f3e0b0ba0fc1754a8b067c60f32" - integrity sha512-ZIFXM9dmlrPbUchHGBBAdzI+EwAWIIeHvdAqVCBINq4hh32xkM5fbU6/A85SxxUF5aLqPTXE/YJ1p2oqsJl35A== +graphile-export@^0.0.2-beta.8: + version "0.0.2-beta.8" + resolved "https://registry.yarnpkg.com/graphile-export/-/graphile-export-0.0.2-beta.8.tgz#262e93fda13cb5b3cbea586865e237d2ebb31d0e" + integrity sha512-OIMDk2euip1LdIDhI5MBjjBhoCfo2xGuOCidl5AC+229qqDB37zyLTRec7j+QpMSAn8kQCm+NT+RGA4HKEcZyg== dependencies: "@babel/generator" "^7.22.10" "@babel/parser" "^7.22.14" @@ -3091,10 +3095,10 @@ graphile-export@0.0.2-beta.6: prettier "^3.0.3" tslib "^2.6.2" -graphile-utils@^5.0.0-beta.15: - version "5.0.0-beta.15" - resolved "https://registry.yarnpkg.com/graphile-utils/-/graphile-utils-5.0.0-beta.15.tgz#db25d729fb5997d3b39e1c6b0ef20661d15a2cf4" - integrity sha512-X1dC2ajKlAloCRR0j6zBc1JZCrHWZvj07DMWd8dvu2jPWD2+L8XuCoDryovP7NtCYOvPgDysy2X1SkolrxkiIQ== +graphile-utils@^5.0.0-beta.17: + version "5.0.0-beta.17" + resolved "https://registry.yarnpkg.com/graphile-utils/-/graphile-utils-5.0.0-beta.17.tgz#551ff993e4c97247ac63fecde73e3a620d0888a6" + integrity sha512-bZC0NTiw/qrlosd9u299060XO2S/rV8JP35tVHSXDAVTfGwYSqwR7fVT6gambDkG7IUPVHhHuU2ZlXgFFJj69A== dependencies: debug "^4.3.4" json5 "^2.2.3" @@ -4323,10 +4327,10 @@ pg-int8@1.0.1: resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -pg-introspection@0.0.1-beta.4, pg-introspection@^0.0.1-beta.4: - version "0.0.1-beta.4" - resolved "https://registry.yarnpkg.com/pg-introspection/-/pg-introspection-0.0.1-beta.4.tgz#651af3bbe25334ee2311e1ad50d23ab1796af63d" - integrity sha512-Nw8OZuTNZ7rn4gMLFJA4xV+O6eYfF6CO9sWLshB744n4oZuQWVdzd+boHGFXJhyIZ1diYlnCb2iN7cSdf7vRow== +pg-introspection@^0.0.1-beta.5: + version "0.0.1-beta.5" + resolved "https://registry.yarnpkg.com/pg-introspection/-/pg-introspection-0.0.1-beta.5.tgz#19845fa865a93236d529dc8eb98c6503d7638d1d" + integrity sha512-i9HKV26aEpHCKJ0u4vVj4PM4XTVhap7UWF4BUriBo6Vh5Bd4k0CYKuyOsDINvgTfPiKU49+UCQwmqjqMnYDcZA== dependencies: tslib "^2.6.2" @@ -4350,7 +4354,7 @@ pg-protocol@^1.6.0: resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== -pg-sql2@5.0.0-beta.4, pg-sql2@^5.0.0-beta.4: +pg-sql2@^5.0.0-beta.4: version "5.0.0-beta.4" resolved "https://registry.yarnpkg.com/pg-sql2/-/pg-sql2-5.0.0-beta.4.tgz#fe71b762012ed565788e7f7e69e888c0c198efd7" integrity sha512-KR6GKB/DweJqSacm3ZzYihoGoW3HPW3o0/ExCuOVI4Ijb1vgW/JB8KVM6OOAVkogn5xvhFSRQkom9LnZw0j76A== @@ -4431,23 +4435,23 @@ pluralize@^7.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== -postgraphile@5.0.0-beta.16: - version "5.0.0-beta.16" - resolved "https://registry.yarnpkg.com/postgraphile/-/postgraphile-5.0.0-beta.16.tgz#e0c00df4775afcc6a80acb6383572f54d20f2498" - integrity sha512-crz9hozPL//7c/DFo4IDsV76GL3AlzZgKMjWBeVFCWy/TNeJUngazA8+VFltbKdveO368zadg1ZLYBcfwP9fmQ== +postgraphile@^5.0.0-beta.18: + version "5.0.0-beta.18" + resolved "https://registry.yarnpkg.com/postgraphile/-/postgraphile-5.0.0-beta.18.tgz#1df9d8e317d802cf989728aa78c9e0674687a5ff" + integrity sha512-xcfM+KYhH0r4cC9mGQxEUHEzsua4DNi8ANXWBOmqIRUTKV+Aao+VZ8Yg2iSaWCVdm81Ff8orMEabLG2l6Pweag== dependencies: - "@dataplan/json" "0.0.1-beta.10" - "@dataplan/pg" "0.0.1-beta.12" + "@dataplan/json" "0.0.1-beta.12" + "@dataplan/pg" "0.0.1-beta.14" "@graphile/lru" "^5.0.0-beta.3" "@types/node" "^20.5.7" "@types/pg" "^8.10.2" debug "^4.3.4" - grafast "^0.1.1-beta.1" - grafserv "^0.1.1-beta.3" - graphile-build "5.0.0-beta.11" - graphile-build-pg "5.0.0-beta.15" - graphile-config "^0.0.1-beta.4" - graphile-utils "^5.0.0-beta.15" + grafast "^0.1.1-beta.3" + grafserv "^0.1.1-beta.5" + graphile-build "5.0.0-beta.13" + graphile-build-pg "5.0.0-beta.17" + graphile-config "^0.0.1-beta.6" + graphile-utils "^5.0.0-beta.17" graphql "^16.1.0-experimental-stream-defer.6" iterall "^1.3.0" jsonwebtoken "^9.0.2" @@ -4687,13 +4691,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -ruru@^2.0.0-beta.8: - version "2.0.0-beta.8" - resolved "https://registry.yarnpkg.com/ruru/-/ruru-2.0.0-beta.8.tgz#f2ede4cf26643dde79997337a371d99fcf04f58f" - integrity sha512-VphXYaNmTVn3m+97hiOkWkQNEezzsCQ3p4Dl09HbrAQf35EsNJ/5JeZXjPGb5abyZRd3G+T5t56ZsPixXd4h5w== +ruru@^2.0.0-beta.10: + version "2.0.0-beta.10" + resolved "https://registry.yarnpkg.com/ruru/-/ruru-2.0.0-beta.10.tgz#b415ec710e711025097880f601c36185e09af95f" + integrity sha512-LGFA+Q0MlNsVAGDWcFENhWhyFpQx8VdqJJh4b2suIiviwh6/B0LiCdOw/9pY1r4XyFpy219bDTyC0I/lwlh2ew== dependencies: "@emotion/is-prop-valid" "^1.2.1" - graphile-config "^0.0.1-beta.4" + graphile-config "^0.0.1-beta.6" graphql "^16.1.0-experimental-stream-defer.6" http-proxy "^1.18.1" tslib "^2.6.2" From 2e764528a482ffb345dad2ba544c9ee9d782eaa6 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 15:58:18 +0000 Subject: [PATCH 21/27] Get EXPORTABLE from build --- src/AddConnectionFilterOperatorPlugin.ts | 2 +- ...gConnectionArgFilterBackwardRelationsPlugin.ts | 2 +- ...ConnectionArgFilterComputedAttributesPlugin.ts | 15 ++++++++++++--- ...PgConnectionArgFilterForwardRelationsPlugin.ts | 2 +- ...PgConnectionArgFilterLogicalOperatorsPlugin.ts | 2 +- src/PgConnectionArgFilterPlugin.ts | 4 ++-- src/utils.ts | 4 ++-- 7 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/AddConnectionFilterOperatorPlugin.ts b/src/AddConnectionFilterOperatorPlugin.ts index f065de2..9f2cb44 100644 --- a/src/AddConnectionFilterOperatorPlugin.ts +++ b/src/AddConnectionFilterOperatorPlugin.ts @@ -1,7 +1,6 @@ import type { GraphQLInputType } from "graphql"; import { $$filters } from "./interfaces"; import { makeApplyPlanFromOperatorSpec } from "./PgConnectionArgFilterOperatorsPlugin"; -import { EXPORTABLE } from "graphile-export"; const { version } = require("../package.json"); @@ -51,6 +50,7 @@ export const AddConnectionFilterOperatorPlugin: GraphileConfig.Plugin = { }, GraphQLInputObjectType_fields(inFields, build, context) { let fields = inFields; + const { EXPORTABLE } = build; const { scope: { pgConnectionFilterOperators }, Self, diff --git a/src/PgConnectionArgFilterBackwardRelationsPlugin.ts b/src/PgConnectionArgFilterBackwardRelationsPlugin.ts index 8611aeb..23ecf2d 100644 --- a/src/PgConnectionArgFilterBackwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterBackwardRelationsPlugin.ts @@ -132,7 +132,7 @@ export const PgConnectionArgFilterBackwardRelationsPlugin: GraphileConfig.Plugin Self, } = context; - const assertAllowed = makeAssertAllowed(build.options); + const assertAllowed = makeAssertAllowed(build); const source = pgCodec && diff --git a/src/PgConnectionArgFilterComputedAttributesPlugin.ts b/src/PgConnectionArgFilterComputedAttributesPlugin.ts index 15dfdd6..e21f333 100644 --- a/src/PgConnectionArgFilterComputedAttributesPlugin.ts +++ b/src/PgConnectionArgFilterComputedAttributesPlugin.ts @@ -3,7 +3,6 @@ import { getComputedAttributeResources, isComputedScalarAttributeResource, } from "./utils"; -import { EXPORTABLE } from "graphile-build"; const { version } = require("../package.json"); @@ -38,6 +37,7 @@ export const PgConnectionArgFilterComputedAttributesPlugin: GraphileConfig.Plugi inflection, connectionFilterOperatorsDigest, dataplanPg: { TYPES, PgConditionStep }, + EXPORTABLE, } = build; const { fieldWithHooks, @@ -128,7 +128,12 @@ export const PgConnectionArgFilterComputedAttributesPlugin: GraphileConfig.Plugi description: `Filter by the object’s \`${fieldName}\` field.`, type: OperatorsType, applyPlan: EXPORTABLE( - (PgConditionStep, computedAttributeResource, functionResultCodec) => function ( + ( + PgConditionStep, + computedAttributeResource, + functionResultCodec + ) => + function ( $where: PgConditionStep, fieldArgs: any ) { @@ -147,7 +152,11 @@ export const PgConnectionArgFilterComputedAttributesPlugin: GraphileConfig.Plugi }; fieldArgs.apply($col); }, - [PgConditionStep, computedAttributeResource, functionResultCodec] + [ + PgConditionStep, + computedAttributeResource, + functionResultCodec, + ] ), } ), diff --git a/src/PgConnectionArgFilterForwardRelationsPlugin.ts b/src/PgConnectionArgFilterForwardRelationsPlugin.ts index 9cff17d..855c110 100644 --- a/src/PgConnectionArgFilterForwardRelationsPlugin.ts +++ b/src/PgConnectionArgFilterForwardRelationsPlugin.ts @@ -44,7 +44,7 @@ export const PgConnectionArgFilterForwardRelationsPlugin: GraphileConfig.Plugin fieldWithHooks, scope: { pgCodec, isPgConnectionFilter }, } = context; - const assertAllowed = makeAssertAllowed(build.options); + const assertAllowed = makeAssertAllowed(build); const source = pgCodec && diff --git a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts index c21656b..a303dcb 100644 --- a/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterLogicalOperatorsPlugin.ts @@ -29,7 +29,7 @@ export const PgConnectionArgFilterLogicalOperatorsPlugin: GraphileConfig.Plugin return fields; } - const assertAllowed = makeAssertAllowed(build.options); + const assertAllowed = makeAssertAllowed(build); const logicalOperatorFields = { and: fieldWithHooks( diff --git a/src/PgConnectionArgFilterPlugin.ts b/src/PgConnectionArgFilterPlugin.ts index 25e629e..938627f 100644 --- a/src/PgConnectionArgFilterPlugin.ts +++ b/src/PgConnectionArgFilterPlugin.ts @@ -7,7 +7,6 @@ import type { } from "graphql"; import { OperatorsCategory } from "./interfaces"; import { makeAssertAllowed } from "./utils"; -import { EXPORTABLE } from "graphile-export"; const { version } = require("../package.json"); // eslint-disable-line @@ -99,6 +98,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { connectionFilterAllowedFieldTypes, connectionFilterArrays, }, + EXPORTABLE, } = build; build.connectionFilterOperatorsDigest = (codec) => { @@ -451,7 +451,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { return args; } - const assertAllowed = makeAssertAllowed(build.options); + const assertAllowed = makeAssertAllowed(build); const attributeCodec = resource?.parameters && !resource?.codec.attributes diff --git a/src/utils.ts b/src/utils.ts index 9c71c24..1ae5a6a 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -7,7 +7,6 @@ import type { import type { FieldArgs } from "grafast"; import type { GraphileBuild } from "graphile-build"; import type {} from "graphile-build-pg"; -import { EXPORTABLE } from "graphile-export"; export function isComputedScalarAttributeResource( s: PgResource @@ -57,7 +56,8 @@ export function getComputedAttributeResources( } // TODO: rename. (Checks that the arguments aren't null/empty.) -export function makeAssertAllowed(options: GraphileBuild.SchemaOptions) { +export function makeAssertAllowed(build: GraphileBuild.Build) { + const { options, EXPORTABLE } = build; const { connectionFilterAllowNullInput, connectionFilterAllowEmptyObjectInput, From 0576897d386fef708fba22e5cdc40db9ad53c2e2 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 16:00:04 +0000 Subject: [PATCH 22/27] Remove meaningless EXPORTABLE --- src/AddConnectionFilterOperatorPlugin.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/AddConnectionFilterOperatorPlugin.ts b/src/AddConnectionFilterOperatorPlugin.ts index 9f2cb44..c664750 100644 --- a/src/AddConnectionFilterOperatorPlugin.ts +++ b/src/AddConnectionFilterOperatorPlugin.ts @@ -50,7 +50,6 @@ export const AddConnectionFilterOperatorPlugin: GraphileConfig.Plugin = { }, GraphQLInputObjectType_fields(inFields, build, context) { let fields = inFields; - const { EXPORTABLE } = build; const { scope: { pgConnectionFilterOperators }, Self, @@ -118,7 +117,7 @@ export const AddConnectionFilterOperatorPlugin: GraphileConfig.Plugin = { ); } - return EXPORTABLE((fields) => fields, [fields]); + return fields; }, }, }, From b835935e47439a1b7aa048dd686031cf2fafe5a1 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 16:01:56 +0000 Subject: [PATCH 23/27] Fix type --- src/PgConnectionArgFilterComputedAttributesPlugin.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/PgConnectionArgFilterComputedAttributesPlugin.ts b/src/PgConnectionArgFilterComputedAttributesPlugin.ts index e21f333..b90cd7c 100644 --- a/src/PgConnectionArgFilterComputedAttributesPlugin.ts +++ b/src/PgConnectionArgFilterComputedAttributesPlugin.ts @@ -3,6 +3,7 @@ import { getComputedAttributeResources, isComputedScalarAttributeResource, } from "./utils"; +import type { FieldArgs } from "grafast"; const { version } = require("../package.json"); @@ -135,7 +136,7 @@ export const PgConnectionArgFilterComputedAttributesPlugin: GraphileConfig.Plugi ) => function ( $where: PgConditionStep, - fieldArgs: any + fieldArgs: FieldArgs ) { if ( typeof computedAttributeResource.from !== "function" From 80453afb69ea1c95af52e796dc17123e7efd5e5c Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 16:20:05 +0000 Subject: [PATCH 24/27] Minor edits --- src/PgConnectionArgFilterOperatorsPlugin.ts | 6 +++++- src/PgConnectionArgFilterPlugin.ts | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/PgConnectionArgFilterOperatorsPlugin.ts b/src/PgConnectionArgFilterOperatorsPlugin.ts index 5e51bcd..54f2182 100644 --- a/src/PgConnectionArgFilterOperatorsPlugin.ts +++ b/src/PgConnectionArgFilterOperatorsPlugin.ts @@ -84,7 +84,11 @@ export const PgConnectionArgFilterOperatorsPlugin: GraphileConfig.Plugin = { function ( c: PgCodec ): PgCodec { - return c.domainOfCodec ? resolveDomains(c.domainOfCodec) : c; + let current = c; + while (current.domainOfCodec) { + current = current.domainOfCodec; + } + return current; }, [] ); diff --git a/src/PgConnectionArgFilterPlugin.ts b/src/PgConnectionArgFilterPlugin.ts index 938627f..cc25f45 100644 --- a/src/PgConnectionArgFilterPlugin.ts +++ b/src/PgConnectionArgFilterPlugin.ts @@ -1,5 +1,5 @@ import type { PgSelectStep, PgCodec } from "@dataplan/pg"; -import type { ConnectionStep } from "grafast"; +import type { ConnectionStep, FieldArgs } from "grafast"; import type { GraphQLInputType, GraphQLOutputType, @@ -478,7 +478,7 @@ export const PgConnectionArgFilterPlugin: GraphileConfig.Plugin = { any, PgSelectStep >, - fieldArgs: any + fieldArgs: FieldArgs ) { assertAllowed(fieldArgs, "object"); const $pgSelect = $connection.getSubplan(); From 94e4f029c2d0f457b281b7e1a474766f9fcb4f1e Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 16:21:05 +0000 Subject: [PATCH 25/27] Run CI on PR too --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 02a7c19..3fb11f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,6 @@ name: Node CI -on: push +on: [push, pull_request] jobs: lint: From d4d8595f10fb160d37d1bd877bd009de802ce121 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 16:30:38 +0000 Subject: [PATCH 26/27] Lint fix --- tsconfig.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 9e21bee..89c7193 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,7 +17,5 @@ "preserveWatchOutput": true, "lib": ["es2018", "esnext.asynciterable"] }, - "exclude": [ - "contrib" - ] + "exclude": ["contrib"] } From ff53836ebf289b239ec953761194122aad3cf842 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 5 Jan 2024 16:31:36 +0000 Subject: [PATCH 27/27] Drop Node 14 from CI --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3fb11f0..8c9096b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,7 +51,6 @@ jobs: - 14 - 15 node-version: - - 14.x - 16.x - 18.x