diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4cec4d5fe..611a3c439 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -28,12 +28,12 @@ jobs: - os: ubuntu-latest node-version: "18" edgedb-version: "2" + - os: ubuntu-latest + node-version: "18" + edgedb-version: "1" - os: macos-latest node-version: "18" edgedb-version: "stable" - # - os: windows-2019 - # node-version: "16" - # edgedb-version: "stable" steps: - uses: actions/checkout@v2 @@ -99,14 +99,28 @@ jobs: echo ACTIVE_EDGEDB_VERSION=$(edgedb query 'select sys::get_version_as_str()' -I test) >> $GITHUB_ENV - name: Run query builder tests - if: ${{ matrix.node-version >= 16 && matrix.edgedb-version != '1.4'}} run: | yarn workspace @edgedb/generate test:ci - - name: Test QB generation on v1 - if: ${{ matrix.node-version >= 16 && matrix.edgedb-version == '1.4' }} + - name: Run query builder integration tests legacy + if: ${{ matrix.edgedb-version == '1' || matrix.edgedb-version == '2' }} + run: | + yarn workspace @edgedb/integration-legacy test:ci + + - name: Run query builder integration tests lts + if: ${{ matrix.edgedb-version == '2' || matrix.edgedb-version == 'stable' || matrix.edgedb-version == 'nightly' }} + run: | + yarn workspace @edgedb/integration-lts test:ci + + - name: Run query builder integration tests stable + if: ${{ matrix.edgedb-version == 'stable' || matrix.edgedb-version == 'nightly' }} + run: | + yarn workspace @edgedb/integration-stable test:ci + + - name: Run query builder integration tests nightly + if: ${{ matrix.edgedb-version == 'nightly' }} run: | - yarn workspace @edgedb/generate test:v1 + yarn workspace @edgedb/integration-nightly test:ci - name: Run functional tests run: | diff --git a/integration-tests/legacy/.gitignore b/integration-tests/legacy/.gitignore new file mode 100644 index 000000000..e06bbfdd7 --- /dev/null +++ b/integration-tests/legacy/.gitignore @@ -0,0 +1,11 @@ +trace +trace/* +mts/edgeql-js +esm/edgeql-js +deno/edgeql-js +cjs/edgeql-js +dbschema/edgeql-js +dbschema/queries.ts +dbschema/interfaces.ts +**/*.edgeql.* +**/*/queries.* diff --git a/integration-tests/legacy/dbschema/default.esdl b/integration-tests/legacy/dbschema/default.esdl new file mode 100644 index 000000000..3fd8af9a2 --- /dev/null +++ b/integration-tests/legacy/dbschema/default.esdl @@ -0,0 +1,6 @@ +module default { + type User { + required property name -> str; + multi link friends -> User; + } +} diff --git a/integration-tests/legacy/dbschema/migrations/00001.edgeql b/integration-tests/legacy/dbschema/migrations/00001.edgeql new file mode 100644 index 000000000..c0137a461 --- /dev/null +++ b/integration-tests/legacy/dbschema/migrations/00001.edgeql @@ -0,0 +1,8 @@ +CREATE MIGRATION m1kvuvibdmy6m6sz4godju7rkihhdobtnf3vor3nnsm3htu2kgaeeq + ONTO initial +{ + CREATE TYPE default::User { + CREATE MULTI LINK friends -> default::User; + CREATE REQUIRED PROPERTY name -> std::str; + }; +}; diff --git a/integration-tests/legacy/edgedb.toml b/integration-tests/legacy/edgedb.toml new file mode 100644 index 000000000..6fe27091c --- /dev/null +++ b/integration-tests/legacy/edgedb.toml @@ -0,0 +1,2 @@ +[edgedb] +server-version = "2" diff --git a/integration-tests/legacy/globalSetup.ts b/integration-tests/legacy/globalSetup.ts new file mode 100644 index 000000000..ddb7e98f5 --- /dev/null +++ b/integration-tests/legacy/globalSetup.ts @@ -0,0 +1,9 @@ +import createClient from "edgedb"; + +export default async () => { + const client = createClient(); + + process.env._JEST_EDGEDB_VERSION = await client.queryRequiredSingleJSON( + `select sys::get_version()` + ); +}; diff --git a/integration-tests/legacy/jest.config.js b/integration-tests/legacy/jest.config.js new file mode 100644 index 000000000..2c22ce297 --- /dev/null +++ b/integration-tests/legacy/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", + testPathIgnorePatterns: ["./dist", "./esm", "./mts", "./cjs", "./deno"], + globalSetup: "./globalSetup.ts", + transform: {}, + globals: {}, +}; diff --git a/integration-tests/legacy/package.json b/integration-tests/legacy/package.json new file mode 100644 index 000000000..3db4f84bf --- /dev/null +++ b/integration-tests/legacy/package.json @@ -0,0 +1,21 @@ +{ + "private": true, + "name": "@edgedb/integration-legacy", + "version": "0.0.0", + "scripts": { + "generate": "../../packages/generate/dist/cli.js", + "build": "echo 'Integration tests, no build output...'", + "test": "NODE_OPTIONS=\"--experimental-vm-modules\" yarn generate edgeql-js && yarn generate queries --file && yarn generate interfaces && jest --detectOpenHandles --forceExit --passWithNoTests", + "test:ci": "tsx ./testRunner.ts" + }, + "devDependencies": { + "@types/jest": "^29.5.2", + "@types/node": "^20.3.2", + "conditional-type-checks": "^1.0.6", + "jest": "^29.5.0", + "superjson": "^1.12.4", + "ts-jest": "^29.1.0", + "typescript": "5.0.4" + }, + "dependencies": {} +} diff --git a/integration-tests/legacy/setupTeardown.ts b/integration-tests/legacy/setupTeardown.ts new file mode 100644 index 000000000..094a05012 --- /dev/null +++ b/integration-tests/legacy/setupTeardown.ts @@ -0,0 +1,33 @@ +import * as tc from "conditional-type-checks"; +import { type Client, createClient } from "edgedb"; + +export { tc }; + +type depromisify = T extends Promise ? U : T; +export type TestData = depromisify>["data"]; + +export async function setupTests() { + const client = createClient(); + return { + data: null, + client, + }; +} + +async function cleanupData(client: Client) { + await client.execute(`delete User`); +} + +export async function teardownTests(client: Client) { + await cleanupData(client); + + await client.close(); +} + +export const versionGTE = (majorVer: number) => { + const version = JSON.parse(process.env._JEST_EDGEDB_VERSION!); + return version.major >= majorVer; +}; + +export const testIfVersionGTE = (majorVer: number) => + versionGTE(majorVer) ? test.skip : test; diff --git a/integration-tests/legacy/smoke.test.ts b/integration-tests/legacy/smoke.test.ts new file mode 100644 index 000000000..729159fa4 --- /dev/null +++ b/integration-tests/legacy/smoke.test.ts @@ -0,0 +1,43 @@ +import assert from "node:assert/strict"; +import { type Client } from "edgedb"; +import e from "./dbschema/edgeql-js"; +import { setupTests, tc, teardownTests } from "./setupTeardown"; + +describe("legacy database version smoke tests", () => { + let client: Client; + + beforeAll(async () => { + const setup = await setupTests(); + ({ client } = setup); + }); + + afterAll(async () => { + await teardownTests(client); + }); + + test("basic smoke test flow", async () => { + await e + .insert(e.User, { + name: String(Math.random()), + friends: e.select( + e.detached( + e.insert(e.User, { + name: String(Math.random()), + }) + ) + ), + }) + .run(client); + + assert.equal( + ( + await e + .select(e.User, () => ({ + id: true, + })) + .run(client) + ).length, + 2 + ); + }); +}); diff --git a/packages/generate/test/testQBv1.ts b/integration-tests/legacy/testRunner.ts similarity index 73% rename from packages/generate/test/testQBv1.ts rename to integration-tests/legacy/testRunner.ts index d179db6f5..26347febb 100644 --- a/packages/generate/test/testQBv1.ts +++ b/integration-tests/legacy/testRunner.ts @@ -1,19 +1,22 @@ -import createClient from "../../driver/src/index.node"; +import createClient from "../../packages/driver/src/index.node"; import { shutdown, applyMigrations, - generateQB, generateStatusFileName, getServerCommand, getWSLPath, startServer, -} from "../../driver/test/testUtil"; + runCommand, + configToEnv, +} from "../../packages/driver/test/testUtil"; (async function main() { console.log("\nStarting EdgeDB test cluster..."); + const statusFile = generateStatusFileName("node"); console.log("Node status file:", statusFile); + const { args } = getServerCommand(getWSLPath(statusFile)); const { proc, config } = await startServer(args, statusFile); @@ -23,13 +26,9 @@ import { const managementConn = await createClient(config).ensureConnected(); try { - await applyMigrations(config, { - flags: [ - "--to-revision", - "m135rscrsthtlntxhacevxtvytgwf2vjyqfwvnwod5jihwpzp2zgyq", - ], - }); - await generateQB(config); + await applyMigrations(config); + console.log(`\nRunning tests...`); + await runCommand("yarn", ["test"], configToEnv(config)); } catch (err) { console.error(err); process.exit(1); diff --git a/integration-tests/legacy/tsconfig.json b/integration-tests/legacy/tsconfig.json new file mode 100644 index 000000000..c91b8818e --- /dev/null +++ b/integration-tests/legacy/tsconfig.json @@ -0,0 +1,110 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": ["./**/*.ts"] +} diff --git a/integration-tests/lts/.gitignore b/integration-tests/lts/.gitignore new file mode 100644 index 000000000..e06bbfdd7 --- /dev/null +++ b/integration-tests/lts/.gitignore @@ -0,0 +1,11 @@ +trace +trace/* +mts/edgeql-js +esm/edgeql-js +deno/edgeql-js +cjs/edgeql-js +dbschema/edgeql-js +dbschema/queries.ts +dbschema/interfaces.ts +**/*.edgeql.* +**/*/queries.* diff --git a/packages/generate/test/cardinality.test.ts b/integration-tests/lts/cardinality.test.ts similarity index 96% rename from packages/generate/test/cardinality.test.ts rename to integration-tests/lts/cardinality.test.ts index 38f4fb43c..79a3d03db 100644 --- a/packages/generate/test/cardinality.test.ts +++ b/integration-tests/lts/cardinality.test.ts @@ -1,5 +1,5 @@ import type { $ } from "edgedb"; -import type { cardutil } from "../src/syntax/cardinality"; +import type { cardutil } from "../../packages/generate/src/syntax/cardinality"; import { tc } from "./setupTeardown"; describe("cardinality", () => { diff --git a/packages/generate/test/casts.test.ts b/integration-tests/lts/casts.test.ts similarity index 92% rename from packages/generate/test/casts.test.ts rename to integration-tests/lts/casts.test.ts index 6280dbeb6..562e5bb55 100644 --- a/packages/generate/test/casts.test.ts +++ b/integration-tests/lts/casts.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; -import e from "../dbschema/edgeql-js"; -import type { $Movie } from "../dbschema/edgeql-js/modules/default"; +import e from "./dbschema/edgeql-js"; +import type { $Movie } from "./dbschema/edgeql-js/modules/default"; import { setupTests, tc, teardownTests } from "./setupTeardown"; import type { Client } from "edgedb"; diff --git a/packages/generate/test/cjs/package.json b/integration-tests/lts/cjs/package.json similarity index 100% rename from packages/generate/test/cjs/package.json rename to integration-tests/lts/cjs/package.json diff --git a/packages/generate/test/cjs/test.js b/integration-tests/lts/cjs/test.js similarity index 100% rename from packages/generate/test/cjs/test.js rename to integration-tests/lts/cjs/test.js diff --git a/packages/generate/test/cjs/test.mts b/integration-tests/lts/cjs/test.mts similarity index 100% rename from packages/generate/test/cjs/test.mts rename to integration-tests/lts/cjs/test.mts diff --git a/packages/generate/test/cjs/tsconfig.json b/integration-tests/lts/cjs/tsconfig.json similarity index 100% rename from packages/generate/test/cjs/tsconfig.json rename to integration-tests/lts/cjs/tsconfig.json diff --git a/packages/generate/test/cjs/yarn.lock b/integration-tests/lts/cjs/yarn.lock similarity index 100% rename from packages/generate/test/cjs/yarn.lock rename to integration-tests/lts/cjs/yarn.lock diff --git a/packages/generate/test/collections.test.ts b/integration-tests/lts/collections.test.ts similarity index 97% rename from packages/generate/test/collections.test.ts rename to integration-tests/lts/collections.test.ts index e43299bee..379550cf6 100644 --- a/packages/generate/test/collections.test.ts +++ b/integration-tests/lts/collections.test.ts @@ -1,13 +1,12 @@ import assert from "node:assert/strict"; import type { Client } from "edgedb"; -import * as $ from "../src/syntax/reflection"; -import e, { type $infer, objectTypeToTupleType } from "../dbschema/edgeql-js"; -import type { sys } from "../dbschema/interfaces"; -import { tc } from "./setupTeardown"; - -import { setupTests, teardownTests, type TestData } from "./setupTeardown"; -import type { $Genre, $year } from "../dbschema/edgeql-js/modules/default"; -import type { $float64, $str, $uuid } from "../dbschema/edgeql-js/modules/std"; +import * as $ from "../../packages/generate/src/syntax/reflection"; +import e, { type $infer, objectTypeToTupleType } from "./dbschema/edgeql-js"; +import type { sys } from "./dbschema/interfaces"; + +import { setupTests, teardownTests, tc, type TestData } from "./setupTeardown"; +import type { $Genre, $year } from "./dbschema/edgeql-js/modules/default"; +import type { $float64, $str, $uuid } from "./dbschema/edgeql-js/modules/std"; describe("collections", () => { let client: Client; diff --git a/integration-tests/lts/dbschema/default.esdl b/integration-tests/lts/dbschema/default.esdl new file mode 100644 index 000000000..0407ba660 --- /dev/null +++ b/integration-tests/lts/dbschema/default.esdl @@ -0,0 +1,201 @@ +module default { + + scalar type Genre extending enum<"Horror", "Action", "RomCom", "Science Fiction", "Select">; + global uuid_global -> uuid; + global num_global -> int64; + global arr_global -> array; + global tuple_global -> tuple; + global named_tuple_global -> tuple; + global str_global -> str; + global str_global_with_default -> str { + default := "hi mom"; + }; + multi global str_multi := {'hi', 'mom'}; + required global str_required -> str { + default := 'hi mom'; + }; + required multi global str_required_multi := {'hi', 'mom'}; + + scalar type global_seq extending sequence; + global seq_global -> global_seq; + + + + abstract link movie_character { + property character_name -> str; + } + + abstract type Person { + required property name -> str { + constraint exclusive; + }; + property height -> decimal; + } + + type Villain extending Person { + link nemesis -> Hero; + } + + type Hero extending Person { + property secret_identity -> str; + property number_of_movies -> int64; + multi link villains := . Genre; + property rating -> float64; + required property title -> str { + constraint exclusive; + }; + required property release_year -> year { + default := datetime_get(datetime_current(), 'year'); + } + multi link characters extending movie_character -> Person; + link profile -> Profile { + constraint exclusive; + } + constraint exclusive on ((.title, .release_year)); + } + + type Profile { + property plot_summary -> str; + property slug -> str { + readonly := true; + } + property a -> str; + property b -> str; + property c -> str; + + constraint exclusive on (( .plot_summary, .slug )); + constraint exclusive on (((.a,.b,.c))); + } + + type User { + required property username -> str; + required multi link favourite_movies -> Movie; + } + + type AdminUser extending User { + overloaded required property username -> str { + constraint exclusive; + } + } + + type MovieShape { + } + + abstract type HasName { + property name -> str; + } + abstract type HasAge { + property age -> int64; + } + + scalar type bag_seq extending sequence; + + type Bag extending HasName, HasAge { + property secret_identity -> str; + property genre -> Genre; + property boolField -> bool; + property datetimeField -> datetime; + property localDateField -> cal::local_date; + property localTimeField -> cal::local_time; + property localDateTimeField -> cal::local_datetime; + property durationField -> duration; + property decimalField -> decimal; + property int64Field -> int64; + property int32Field -> int32; + property int16Field -> int16; + property float32Field -> float32; + property float64Field -> float64; + property bigintField -> bigint; + required multi property stringsMulti -> str; + property stringsArr -> array; + multi property stringMultiArr -> array; + property namedTuple -> tuple; + property unnamedTuple -> tuple; + property enumArr -> array; + property seqField -> bag_seq; + property jsonField -> json; + property arrTupleField -> array>; + property rangeField -> range; + } + + type Simple extending HasName, HasAge {} + + type X { + property a -> str; + property b -> int32; + } + type Y { + property a -> str; + property c -> bool; + } + type Z { + link xy -> X | Y; + } + + # Unicode handling + # https://github.com/edgedb/edgedb/blob/master/tests/schemas/dump02_default.esdl + + abstract annotation `🍿`; + + abstract constraint `🚀🍿`(max: int64) extending max_len_value; + + function `💯`(NAMED ONLY `🙀`: int64) -> int64 { + using ( + SELECT 100 - `🙀` + ); + + annotation `🍿` := 'fun!🚀'; + volatility := 'Immutable'; + } + + type `S p a M` { + required property `🚀` -> int32; + property c100 := (SELECT `💯`(`🙀` := .`🚀`)); + } + + type A { + required link `s p A m 🤞` -> `S p a M`; + } + + scalar type 你好 extending str; + + scalar type مرحبا extending 你好 { + constraint `🚀🍿`(100); + }; + + scalar type `🚀🚀🚀` extending مرحبا; + + type Łukasz { + required property `Ł🤞` -> `🚀🚀🚀` { + default := <`🚀🚀🚀`>'你好🤞' + } + index on (.`Ł🤞`); + + link `Ł💯` -> A { + property `🙀🚀🚀🚀🙀` -> `🚀🚀🚀`; + property `🙀مرحبا🙀` -> مرحبا { + constraint `🚀🍿`(200); + } + }; + } + +}; + +module `💯💯💯` { + function `🚀🙀🚀`(`🤞`: default::`🚀🚀🚀`) -> default::`🚀🚀🚀` + using ( + SELECT (`🤞` ++ 'Ł🙀') + ); +}; + +module extra { + global user_id -> uuid; +} diff --git a/packages/generate/dbschema/migrations/00001.edgeql b/integration-tests/lts/dbschema/migrations/00001.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00001.edgeql rename to integration-tests/lts/dbschema/migrations/00001.edgeql diff --git a/packages/generate/dbschema/migrations/00002.edgeql b/integration-tests/lts/dbschema/migrations/00002.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00002.edgeql rename to integration-tests/lts/dbschema/migrations/00002.edgeql diff --git a/packages/generate/dbschema/migrations/00003.edgeql b/integration-tests/lts/dbschema/migrations/00003.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00003.edgeql rename to integration-tests/lts/dbschema/migrations/00003.edgeql diff --git a/packages/generate/dbschema/migrations/00004.edgeql b/integration-tests/lts/dbschema/migrations/00004.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00004.edgeql rename to integration-tests/lts/dbschema/migrations/00004.edgeql diff --git a/packages/generate/dbschema/migrations/00005.edgeql b/integration-tests/lts/dbschema/migrations/00005.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00005.edgeql rename to integration-tests/lts/dbschema/migrations/00005.edgeql diff --git a/packages/generate/dbschema/migrations/00006.edgeql b/integration-tests/lts/dbschema/migrations/00006.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00006.edgeql rename to integration-tests/lts/dbschema/migrations/00006.edgeql diff --git a/packages/generate/dbschema/migrations/00007.edgeql b/integration-tests/lts/dbschema/migrations/00007.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00007.edgeql rename to integration-tests/lts/dbschema/migrations/00007.edgeql diff --git a/packages/generate/dbschema/migrations/00008.edgeql b/integration-tests/lts/dbschema/migrations/00008.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00008.edgeql rename to integration-tests/lts/dbschema/migrations/00008.edgeql diff --git a/packages/generate/dbschema/migrations/00009.edgeql b/integration-tests/lts/dbschema/migrations/00009.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00009.edgeql rename to integration-tests/lts/dbschema/migrations/00009.edgeql diff --git a/packages/generate/dbschema/migrations/00010.edgeql b/integration-tests/lts/dbschema/migrations/00010.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00010.edgeql rename to integration-tests/lts/dbschema/migrations/00010.edgeql diff --git a/packages/generate/dbschema/migrations/00011.edgeql b/integration-tests/lts/dbschema/migrations/00011.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00011.edgeql rename to integration-tests/lts/dbschema/migrations/00011.edgeql diff --git a/packages/generate/dbschema/migrations/00012.edgeql b/integration-tests/lts/dbschema/migrations/00012.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00012.edgeql rename to integration-tests/lts/dbschema/migrations/00012.edgeql diff --git a/packages/generate/dbschema/migrations/00013.edgeql b/integration-tests/lts/dbschema/migrations/00013.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00013.edgeql rename to integration-tests/lts/dbschema/migrations/00013.edgeql diff --git a/packages/generate/dbschema/migrations/00014.edgeql b/integration-tests/lts/dbschema/migrations/00014.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00014.edgeql rename to integration-tests/lts/dbschema/migrations/00014.edgeql diff --git a/packages/generate/dbschema/migrations/00015.edgeql b/integration-tests/lts/dbschema/migrations/00015.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00015.edgeql rename to integration-tests/lts/dbschema/migrations/00015.edgeql diff --git a/packages/generate/dbschema/migrations/00016.edgeql b/integration-tests/lts/dbschema/migrations/00016.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00016.edgeql rename to integration-tests/lts/dbschema/migrations/00016.edgeql diff --git a/packages/generate/dbschema/migrations/00017.edgeql b/integration-tests/lts/dbschema/migrations/00017.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00017.edgeql rename to integration-tests/lts/dbschema/migrations/00017.edgeql diff --git a/packages/generate/dbschema/migrations/00018.edgeql b/integration-tests/lts/dbschema/migrations/00018.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00018.edgeql rename to integration-tests/lts/dbschema/migrations/00018.edgeql diff --git a/packages/generate/dbschema/migrations/00019.edgeql b/integration-tests/lts/dbschema/migrations/00019.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00019.edgeql rename to integration-tests/lts/dbschema/migrations/00019.edgeql diff --git a/packages/generate/dbschema/migrations/00020.edgeql b/integration-tests/lts/dbschema/migrations/00020.edgeql similarity index 100% rename from packages/generate/dbschema/migrations/00020.edgeql rename to integration-tests/lts/dbschema/migrations/00020.edgeql diff --git a/packages/generate/dbschema/queries/freeShape.edgeql b/integration-tests/lts/dbschema/queries/freeShape.edgeql similarity index 100% rename from packages/generate/dbschema/queries/freeShape.edgeql rename to integration-tests/lts/dbschema/queries/freeShape.edgeql diff --git a/packages/generate/dbschema/queries/get-movies-starring.edgeql b/integration-tests/lts/dbschema/queries/get-movies-starring.edgeql similarity index 100% rename from packages/generate/dbschema/queries/get-movies-starring.edgeql rename to integration-tests/lts/dbschema/queries/get-movies-starring.edgeql diff --git a/packages/generate/dbschema/queries/scalarQuery.edgeql b/integration-tests/lts/dbschema/queries/scalarQuery.edgeql similarity index 100% rename from packages/generate/dbschema/queries/scalarQuery.edgeql rename to integration-tests/lts/dbschema/queries/scalarQuery.edgeql diff --git a/packages/generate/test/delete.test.ts b/integration-tests/lts/delete.test.ts similarity index 98% rename from packages/generate/test/delete.test.ts rename to integration-tests/lts/delete.test.ts index 4d9756909..8d2804cc9 100644 --- a/packages/generate/test/delete.test.ts +++ b/integration-tests/lts/delete.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import type * as edgedb from "edgedb"; -import e from "../dbschema/edgeql-js"; +import e from "./dbschema/edgeql-js"; import { setupTests, teardownTests, tc, type TestData } from "./setupTeardown"; describe("delete", () => { diff --git a/packages/generate/test/deno/.gitignore b/integration-tests/lts/deno/.gitignore similarity index 100% rename from packages/generate/test/deno/.gitignore rename to integration-tests/lts/deno/.gitignore diff --git a/packages/generate/test/deno/deno.json b/integration-tests/lts/deno/deno.json similarity index 67% rename from packages/generate/test/deno/deno.json rename to integration-tests/lts/deno/deno.json index 0a3d510af..c12689ceb 100644 --- a/packages/generate/test/deno/deno.json +++ b/integration-tests/lts/deno/deno.json @@ -17,8 +17,8 @@ "importMap": "./import_map.json", "tasks": { "play": "deno run --unstable --allow-net --allow-read --allow-env --unsafely-ignore-certificate-errors=localhost test.ts", - "edgeql-js": "deno run -A --unstable --unsafely-ignore-certificate-errors=localhost ../../../deno/generate.ts edgeql-js --output-dir edgeql-js --target deno", - "queries": "deno run -A --unstable --unsafely-ignore-certificate-errors=localhost ../../../deno/generate.ts queries --target deno --file queries", - "interfaces": "deno run -A --unstable --unsafely-ignore-certificate-errors=localhost ../../../deno/generate.ts interfaces --file ifaces" + "edgeql-js": "deno run -A --unstable --unsafely-ignore-certificate-errors=localhost ../../../packages/deno/generate.ts edgeql-js --output-dir edgeql-js --target deno", + "queries": "deno run -A --unstable --unsafely-ignore-certificate-errors=localhost ../../../packages/deno/generate.ts queries --target deno --file queries", + "interfaces": "deno run -A --unstable --unsafely-ignore-certificate-errors=localhost ../../../packages/deno/generate.ts interfaces --file ifaces" } } diff --git a/integration-tests/lts/deno/deno.lock b/integration-tests/lts/deno/deno.lock new file mode 100644 index 000000000..8546bc41b --- /dev/null +++ b/integration-tests/lts/deno/deno.lock @@ -0,0 +1,233 @@ +{ + "version": "2", + "remote": { + "https://deno.land/std@0.177.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", + "https://deno.land/std@0.177.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", + "https://deno.land/std@0.177.0/async/abortable.ts": "73acfb3ed7261ce0d930dbe89e43db8d34e017b063cf0eaa7d215477bf53442e", + "https://deno.land/std@0.177.0/async/deadline.ts": "c5facb0b404eede83e38bd2717ea8ab34faa2ffb20ef87fd261fcba32ba307aa", + "https://deno.land/std@0.177.0/async/debounce.ts": "adab11d04ca38d699444ac8a9d9856b4155e8dda2afd07ce78276c01ea5a4332", + "https://deno.land/std@0.177.0/async/deferred.ts": "42790112f36a75a57db4a96d33974a936deb7b04d25c6084a9fa8a49f135def8", + "https://deno.land/std@0.177.0/async/delay.ts": "73aa04cec034c84fc748c7be49bb15cac3dd43a57174bfdb7a4aec22c248f0dd", + "https://deno.land/std@0.177.0/async/mod.ts": "f04344fa21738e5ad6bea37a6bfffd57c617c2d372bb9f9dcfd118a1b622e576", + "https://deno.land/std@0.177.0/async/mux_async_iterator.ts": "70c7f2ee4e9466161350473ad61cac0b9f115cff4c552eaa7ef9d50c4cbb4cc9", + "https://deno.land/std@0.177.0/async/pool.ts": "fd082bd4aaf26445909889435a5c74334c017847842ec035739b4ae637ae8260", + "https://deno.land/std@0.177.0/async/retry.ts": "5efa3ba450ac0c07a40a82e2df296287b5013755d232049efd7ea2244f15b20f", + "https://deno.land/std@0.177.0/async/tee.ts": "47e42d35f622650b02234d43803d0383a89eb4387e1b83b5a40106d18ae36757", + "https://deno.land/std@0.177.0/bytes/index_of_needle.ts": "65c939607df609374c4415598fa4dad04a2f14c4d98cd15775216f0aaf597f24", + "https://deno.land/std@0.177.0/crypto/_fnv/fnv32.ts": "e4649dfdefc5c987ed53c3c25db62db771a06d9d1b9c36d2b5cf0853b8e82153", + "https://deno.land/std@0.177.0/crypto/_fnv/fnv64.ts": "bfa0e4702061fdb490a14e6bf5f9168a22fb022b307c5723499469bfefca555e", + "https://deno.land/std@0.177.0/crypto/_fnv/index.ts": "169c213eb75de2d6738c1ed66a8e5782bd222b70b187cc4e7fb7b73edfcf0927", + "https://deno.land/std@0.177.0/crypto/_fnv/util.ts": "accba12bfd80a352e32a872f87df2a195e75561f1b1304a4cb4f5a4648d288f9", + "https://deno.land/std@0.177.0/crypto/_wasm/lib/deno_std_wasm_crypto.generated.mjs": "5dedb7f9aa05f0e18ed017691c58df5f4686e4cbbd70368c6f896e5cca03f2b4", + "https://deno.land/std@0.177.0/crypto/_wasm/mod.ts": "e2df88236fc061eac7a89e8cb0b97843f5280b08b2a990e473b7397a3e566003", + "https://deno.land/std@0.177.0/crypto/crypto.ts": "d5ce53784ab7b1348095389426a7ea98536223fb143812ecb50724a0aa1ec657", + "https://deno.land/std@0.177.0/crypto/keystack.ts": "877ab0f19eb7d37ad6495190d3c3e39f58e9c52e0b6a966f82fd6df67ca55f90", + "https://deno.land/std@0.177.0/crypto/mod.ts": "885738e710868202d7328305b0c0c134e36a2d9c98ceab9513ea2442863c00eb", + "https://deno.land/std@0.177.0/crypto/timing_safe_equal.ts": "8d69ab611c67fe51b6127d97fcfb4d8e7d0e1b6b4f3e0cc4ab86744c3691f965", + "https://deno.land/std@0.177.0/crypto/to_hash_string.ts": "fe4e95239d7afb617f469bc2f76ff20f888ddb8d1385e0d92276f6e4d5a809d1", + "https://deno.land/std@0.177.0/encoding/base64.ts": "7de04c2f8aeeb41453b09b186480be90f2ff357613b988e99fabb91d2eeceba1", + "https://deno.land/std@0.177.0/encoding/base64url.ts": "3f1178f6446834457b16bfde8b559c1cd3481727fe384d3385e4a9995dc2d851", + "https://deno.land/std@0.177.0/encoding/hex.ts": "50f8c95b52eae24395d3dfcb5ec1ced37c5fe7610ef6fffdcc8b0fdc38e3b32f", + "https://deno.land/std@0.177.0/flags/mod.ts": "d1cdefa18472ef69858a17df5cf7c98445ed27ac10e1460183081303b0ebc270", + "https://deno.land/std@0.177.0/fmt/colors.ts": "938c5d44d889fb82eff6c358bea8baa7e85950a16c9f6dae3ec3a7a729164471", + "https://deno.land/std@0.177.0/fmt/printf.ts": "e5b426cd6ad13df5d408e9c375c025d59de30e380c5534715bd892df874ab057", + "https://deno.land/std@0.177.0/fs/_util.ts": "65381f341af1ff7f40198cee15c20f59951ac26e51ddc651c5293e24f9ce6f32", + "https://deno.land/std@0.177.0/fs/copy.ts": "14214efd94fc3aa6db1e4af2b4b9578e50f7362b7f3725d5a14ad259a5df26c8", + "https://deno.land/std@0.177.0/fs/empty_dir.ts": "c3d2da4c7352fab1cf144a1ecfef58090769e8af633678e0f3fabaef98594688", + "https://deno.land/std@0.177.0/fs/ensure_dir.ts": "724209875497a6b4628dfb256116e5651c4f7816741368d6c44aab2531a1e603", + "https://deno.land/std@0.177.0/fs/ensure_file.ts": "c38602670bfaf259d86ca824a94e6cb9e5eb73757fefa4ebf43a90dd017d53d9", + "https://deno.land/std@0.177.0/fs/ensure_link.ts": "c0f5b2f0ec094ed52b9128eccb1ee23362a617457aa0f699b145d4883f5b2fb4", + "https://deno.land/std@0.177.0/fs/ensure_symlink.ts": "2955cc8332aeca9bdfefd05d8d3976b94e282b0f353392a71684808ed2ffdd41", + "https://deno.land/std@0.177.0/fs/eol.ts": "f1f2eb348a750c34500741987b21d65607f352cf7205f48f4319d417fff42842", + "https://deno.land/std@0.177.0/fs/exists.ts": "b8c8a457b71e9d7f29b9d2f87aad8dba2739cbe637e8926d6ba6e92567875f8e", + "https://deno.land/std@0.177.0/fs/expand_glob.ts": "45d17e89796a24bd6002e4354eda67b4301bb8ba67d2cac8453cdabccf1d9ab0", + "https://deno.land/std@0.177.0/fs/mod.ts": "bc3d0acd488cc7b42627044caf47d72019846d459279544e1934418955ba4898", + "https://deno.land/std@0.177.0/fs/move.ts": "4cb47f880e3f0582c55e71c9f8b1e5e8cfaacb5e84f7390781dd563b7298ec19", + "https://deno.land/std@0.177.0/fs/walk.ts": "ea95ffa6500c1eda6b365be488c056edc7c883a1db41ef46ec3bf057b1c0fe32", + "https://deno.land/std@0.177.0/node/_core.ts": "9a58c0ef98ee77e9b8fcc405511d1b37a003a705eb6a9b6e95f75434d8009adc", + "https://deno.land/std@0.177.0/node/_events.d.ts": "1347437fd6b084d7c9a4e16b9fe7435f00b030970086482edeeb3b179d0775af", + "https://deno.land/std@0.177.0/node/_events.mjs": "d4ba4e629abe3db9f1b14659fd5c282b7da8b2b95eaf13238eee4ebb142a2448", + "https://deno.land/std@0.177.0/node/_fs/_fs_access.ts": "48a722db00fd34ec567c1d03c47f6b94d07658c658eeb7d9a10c6b823ebdefbd", + "https://deno.land/std@0.177.0/node/_fs/_fs_appendFile.ts": "2e5230c88804f4b5bee29efa1ba723d71a53f9b0f85d5e6372509ba12e9c00c3", + "https://deno.land/std@0.177.0/node/_fs/_fs_chmod.ts": "fcba6aa4fe2d9178746b5b4ae7f42a72a971007c855988f0e26ff8f694c3c212", + "https://deno.land/std@0.177.0/node/_fs/_fs_chown.ts": "6a24414772d689f8e83b6f53f134420dc25d752bd5be56cade39e92f182c9c9a", + "https://deno.land/std@0.177.0/node/_fs/_fs_close.ts": "8fc5819affb69fb5708f3babce49cd673133e939cebef0665099da78a0d0be7a", + "https://deno.land/std@0.177.0/node/_fs/_fs_common.ts": "21caae4ab7c07c66244446c63c50291cc553d1224d3f6a0cd7bea688c6b2a815", + "https://deno.land/std@0.177.0/node/_fs/_fs_constants.ts": "22ce5f8b07fa8fd7ba37718ad85f6655954b7585d21e6d0b9d73676c16ef1b15", + "https://deno.land/std@0.177.0/node/_fs/_fs_copy.ts": "9074e3a1609b9ee10ca1a2d77e94836c57190e791a0878f7e03b2f0e4e0d5dfb", + "https://deno.land/std@0.177.0/node/_fs/_fs_dir.ts": "26c16ef8003772c9cd2439b448530443ea09a1508a6d808a5913576c3d11882b", + "https://deno.land/std@0.177.0/node/_fs/_fs_dirent.ts": "e8c30d8059336cb6b122738c487cb46c1bcfc4c99fd6d64186f04b4e1805be34", + "https://deno.land/std@0.177.0/node/_fs/_fs_exists.ts": "012e8bf6a6a9b53f9e6451db6ddabf1b883a25e6aebb8aadf8958b57efffefd0", + "https://deno.land/std@0.177.0/node/_fs/_fs_fdatasync.ts": "cfe9409aed4bfe707fb497fe5be449a678b4ae454c9068f3720138ff06f7a71f", + "https://deno.land/std@0.177.0/node/_fs/_fs_fstat.ts": "b15968d0f0da997960f0814e52beee35aff5e04519f007c3ac1c431829a03ac4", + "https://deno.land/std@0.177.0/node/_fs/_fs_fsync.ts": "902c1d4ef9b022c61a12c5f85db3ec4e14778019697cf453822313f9eab9516b", + "https://deno.land/std@0.177.0/node/_fs/_fs_ftruncate.ts": "36d76a3d6b325345ba6fbef745ec1a39d6efb4472214ede8421449296fd25711", + "https://deno.land/std@0.177.0/node/_fs/_fs_futimes.ts": "75b9aaa28588d94b9d8be3c5ca4b74595cde342d644afc9c5dda1e1dcc1e604f", + "https://deno.land/std@0.177.0/node/_fs/_fs_link.ts": "5cfa4f02cbedf913d90618c1bf130796bc3cdd7cd0e59cf5defb05619ae10b8a", + "https://deno.land/std@0.177.0/node/_fs/_fs_lstat.ts": "da6a26b4745dbb92eda21f07992d16497a6848fe2ded6a425ade4a2418262b57", + "https://deno.land/std@0.177.0/node/_fs/_fs_mkdir.ts": "94e4341f9bbc3bae9f1474e86621d48101a4a863ce51fd6b1170ef244533c494", + "https://deno.land/std@0.177.0/node/_fs/_fs_mkdtemp.ts": "33658ccb449f90d69305868b718f8fe8d72a2a8e2be7136ebd69ba313fd0b4a9", + "https://deno.land/std@0.177.0/node/_fs/_fs_open.ts": "9f728953c07748a54a73bb9ff0013530e33556a688a359a554d5db5b4ed30d06", + "https://deno.land/std@0.177.0/node/_fs/_fs_opendir.ts": "fe65a45b92b6b970da8f3acec15920cb5669c7a19fd07afa8ebcd248ec69740b", + "https://deno.land/std@0.177.0/node/_fs/_fs_read.ts": "a0223081bc460a8af5d1bb01e59a44182629bf7bff7c583031912abf20ac6b04", + "https://deno.land/std@0.177.0/node/_fs/_fs_readFile.ts": "2c155de6b568a4e5d3d089e58723355fc519de2d2c9422f7dd211cda2c8f36dc", + "https://deno.land/std@0.177.0/node/_fs/_fs_readdir.ts": "85f742c2ad38bebb8ba5dee72b37a966fc4b42b10382a76a60d7a2dda0a6278c", + "https://deno.land/std@0.177.0/node/_fs/_fs_readlink.ts": "d5d9746c1d3c76cce0be5045dbb3bfde100406a98f1d4db8243776a2fc5619af", + "https://deno.land/std@0.177.0/node/_fs/_fs_realpath.ts": "671afd8bc1b33126d56155de3827d6ec55361631eec9f4944d7f91835d897329", + "https://deno.land/std@0.177.0/node/_fs/_fs_rename.ts": "2fd973c38ab5c66d806a954914a2d2b6beec55308b6da0616837ba81946bba3b", + "https://deno.land/std@0.177.0/node/_fs/_fs_rm.ts": "27c01d261a3631729f9406d9dc7be263a7adf240094ba9133da511169785023b", + "https://deno.land/std@0.177.0/node/_fs/_fs_rmdir.ts": "d9a35aa265670aba4a6da10cb151139bd69762ccfb88e27f266c1260c244d3ec", + "https://deno.land/std@0.177.0/node/_fs/_fs_stat.ts": "bf1ca585b624f5b183ff547f02ad40b51d47247a7fd5df84f8c27376e7a7c2d5", + "https://deno.land/std@0.177.0/node/_fs/_fs_symlink.ts": "89752d75dd823be7ea2c0f2ca024b14c954f7d1507360abf883245f4b700464b", + "https://deno.land/std@0.177.0/node/_fs/_fs_truncate.ts": "4333d191574be1d6ab20fdee346c0dd4868e5c9c5e8ee716e3b09bf562aee698", + "https://deno.land/std@0.177.0/node/_fs/_fs_unlink.ts": "6a760088a99c7465d9da3cbd67a456a6207c9764c65926ce1e0d3172aab780a2", + "https://deno.land/std@0.177.0/node/_fs/_fs_utimes.ts": "c433ef58bfd20d84d0f940c17575b496dcd4706e8dc86aea777c73f667164444", + "https://deno.land/std@0.177.0/node/_fs/_fs_watch.ts": "2ed05b68759e1771515efa4c6d19db9c956cfbc79a715d61e4ce8f38ac12c966", + "https://deno.land/std@0.177.0/node/_fs/_fs_write.d.ts": "a405627931c1a5a3160d3f1cf028761d51b50cd632d6602cb0f98c6b39c96b23", + "https://deno.land/std@0.177.0/node/_fs/_fs_write.mjs": "595abc0d7be9ef3709b62bf09972c2836b25c945f4c531a6688b910e428e1b42", + "https://deno.land/std@0.177.0/node/_fs/_fs_writeFile.ts": "c65f61a167e5f80f29a88147012ade2a81233c882e51c6a07f45a153f2316a58", + "https://deno.land/std@0.177.0/node/_fs/_fs_writev.d.ts": "2cd3596fe24579debe43b587d5bb5845f6f0ce3913357376eb279511ce832d15", + "https://deno.land/std@0.177.0/node/_fs/_fs_writev.mjs": "54adae0d5e5148d2ee0690d04f7272dbccd1242ffbdf838778ac514c10197844", + "https://deno.land/std@0.177.0/node/_global.d.ts": "2d88342f38b4083b858998e27c706725fb03a74aa14ef8d985dc18438b5188e4", + "https://deno.land/std@0.177.0/node/_next_tick.ts": "9a3cf107d59b019a355d3cf32275b4c6157282e4b68ea85b46a799cb1d379305", + "https://deno.land/std@0.177.0/node/_process/exiting.ts": "6e336180aaabd1192bf99ffeb0d14b689116a3dec1dfb34a2afbacd6766e98ab", + "https://deno.land/std@0.177.0/node/_process/process.ts": "c96bb1f6253824c372f4866ee006dcefda02b7050d46759736e403f862d91051", + "https://deno.land/std@0.177.0/node/_process/stdio.mjs": "cf17727eac8da3a665851df700b5aca6a12bacc3ebbf33e63e4b919f80ba44a6", + "https://deno.land/std@0.177.0/node/_process/streams.mjs": "408777fba99580567f3ee82ee584ca79012cc550f8dacb8c5ec633b58cd0c1ca", + "https://deno.land/std@0.177.0/node/_stream.d.ts": "112e1a0677cd6db932c3ce0e6e5bbdc7a2ac1874572f449044ecc82afcf5ee2e", + "https://deno.land/std@0.177.0/node/_stream.mjs": "d6e2c86c1158ac65b4c2ca4fa019d7e84374ff12e21e2175345fe68c0823efe3", + "https://deno.land/std@0.177.0/node/_util/_util_callbackify.ts": "a7ffe799ac5f54f3a780ee1c9b190b94dc7dc8afbb430c0e1c73756638d25d64", + "https://deno.land/std@0.177.0/node/_utils.ts": "7fd55872a0cf9275e3c080a60e2fa6d45b8de9e956ebcde9053e72a344185884", + "https://deno.land/std@0.177.0/node/buffer.ts": "85617be2063eccaf177dbb84c7580d1e32023724ed14bd9df4e453b152a26167", + "https://deno.land/std@0.177.0/node/events.ts": "d2de352d509de11a375e2cb397d6b98f5fed4e562fc1d41be33214903a38e6b0", + "https://deno.land/std@0.177.0/node/fs.ts": "de13cb511655b594157b327cd11bb833cc96051409f34148f043e8a8a92d66a1", + "https://deno.land/std@0.177.0/node/fs/promises.ts": "5db686797cec9a6bc7b1460beb7e049ada81a43bbc0ff8231a26442261ec3fd0", + "https://deno.land/std@0.177.0/node/internal/assert.mjs": "1d50c20eeaf16a6d9c1d90347e497669cebc915f5ee238417a73847eb4c2f0de", + "https://deno.land/std@0.177.0/node/internal/buffer.d.ts": "bdfa991cd88cb02fd08bf8235d2618550e3e511c970b2a8f2e1a6885a2793cac", + "https://deno.land/std@0.177.0/node/internal/buffer.mjs": "e92303a3cc6d9aaabcd270a937ad9319825d9ba08cb332650944df4562029b27", + "https://deno.land/std@0.177.0/node/internal/crypto/_keys.ts": "8f3c3b5a141aa0331a53c205e9338655f1b3b307a08085fd6ff6dda6f7c4190b", + "https://deno.land/std@0.177.0/node/internal/crypto/constants.ts": "544d605703053218499b08214f2e25cf4310651d535b7ab995891c4b7a217693", + "https://deno.land/std@0.177.0/node/internal/error_codes.ts": "8495e33f448a484518d76fa3d41d34fc20fe03c14b30130ad8e936b0035d4b8b", + "https://deno.land/std@0.177.0/node/internal/errors.ts": "1c699b8a3cb93174f697a348c004b1c6d576b66688eac8a48ebb78e65c720aae", + "https://deno.land/std@0.177.0/node/internal/fixed_queue.ts": "62bb119afa5b5ae8fc0c7048b50502347bec82e2588017d0b250c4671d6eff8f", + "https://deno.land/std@0.177.0/node/internal/fs/streams.d.ts": "23571ff9af59d86307831b80823e440953f3e57b134ca7ec6e55b60b845d38de", + "https://deno.land/std@0.177.0/node/internal/fs/streams.mjs": "5de00d105009fb8cec6b6d0a6e6e6288ae40879cc64d9bf7a84852220be9fa34", + "https://deno.land/std@0.177.0/node/internal/fs/utils.mjs": "64b6dc17752fa861b46a0876647336ba24efe3b5130bd1826f1f2d59b9b374ed", + "https://deno.land/std@0.177.0/node/internal/hide_stack_frames.ts": "9dd1bad0a6e62a1042ce3a51eb1b1ecee2f246907bff44835f86e8f021de679a", + "https://deno.land/std@0.177.0/node/internal/idna.ts": "034043ac9273eb5ba83112c926dba1777775f1eca40e021c8703cd1720bedd9f", + "https://deno.land/std@0.177.0/node/internal/net.ts": "5538d31b595ac63d4b3e90393168bc65ace2f332c3317cffa2fd780070b2d86c", + "https://deno.land/std@0.177.0/node/internal/normalize_encoding.mjs": "fd1d9df61c44d7196432f6e8244621468715131d18cc79cd299fc78ac549f707", + "https://deno.land/std@0.177.0/node/internal/options.ts": "888f267c3fe8f18dc7b2f2fbdbe7e4a0fd3302ff3e99f5d6645601e924f3e3fb", + "https://deno.land/std@0.177.0/node/internal/primordials.mjs": "a72d86b5aa55d3d50b8e916b6a59b7cc0dc5a31da8937114b4a113ad5aa08c74", + "https://deno.land/std@0.177.0/node/internal/process/per_thread.mjs": "10142bbb13978c2f8f79778ad90f3a67a8ea6d8d2970f3dfc6bf2c6fff0162a2", + "https://deno.land/std@0.177.0/node/internal/querystring.ts": "479f30c136555dc3b6f09af7d0de8a70c753035c1d5b57acc696722028788323", + "https://deno.land/std@0.177.0/node/internal/readline/callbacks.mjs": "bdb129b140c3b21b5e08cdc3d8e43517ad818ac03f75197338d665cca1cbaed3", + "https://deno.land/std@0.177.0/node/internal/readline/utils.mjs": "c3dbf3a97c01ed14052cca3848f09e2fc24818c1822ceed57c33b9f0840f3b87", + "https://deno.land/std@0.177.0/node/internal/streams/destroy.mjs": "b665fc71178919a34ddeac8389d162a81b4bc693ff7dc2557fa41b3a91011967", + "https://deno.land/std@0.177.0/node/internal/streams/end-of-stream.mjs": "a4fb1c2e32d58dff440d4e716e2c4daaa403b3095304a028bb428575cfeed716", + "https://deno.land/std@0.177.0/node/internal/streams/utils.mjs": "f2fe2e6bdc506da24c758970890cc2a21642045b129dee618bd3827c60dd9e33", + "https://deno.land/std@0.177.0/node/internal/url.ts": "7e62e16520de552c130c354d9c725a2f5e2af453ff929a2009fa66ae445bbe14", + "https://deno.land/std@0.177.0/node/internal/util.mjs": "f7fe2e1ca5e66f550ad0856b9f5ee4d666f0c071fe212ea7fc7f37cfa81f97a5", + "https://deno.land/std@0.177.0/node/internal/util/comparisons.ts": "9a7d95401b3d1c99ec5b12250cf6dec75efc75764b4a18be257dd8bfbe67496e", + "https://deno.land/std@0.177.0/node/internal/util/debuglog.ts": "a2392980a65cc6916afc17fa6686242ee0e3b47bd98c792ff59358560b24185e", + "https://deno.land/std@0.177.0/node/internal/util/inspect.mjs": "11d7c9cab514b8e485acc3978c74b837263ff9c08ae4537fa18ad56bae633259", + "https://deno.land/std@0.177.0/node/internal/util/types.ts": "0e587b44ec5e017cf228589fc5ce9983b75beece6c39409c34170cfad49d6417", + "https://deno.land/std@0.177.0/node/internal/validators.mjs": "e02f2b02dd072a5d623970292588d541204dc82207b4c58985d933a5f4b382e6", + "https://deno.land/std@0.177.0/node/internal_binding/_libuv_winerror.ts": "30c9569603d4b97a1f1a034d88a3f74800d5ea1f12fcc3d225c9899d4e1a518b", + "https://deno.land/std@0.177.0/node/internal_binding/_listen.ts": "c6038be47116f7755c01fd98340a0d1e8e66ef874710ab59ed3f5607d50d7a25", + "https://deno.land/std@0.177.0/node/internal_binding/_node.ts": "cb2389b0eab121df99853eb6a5e3a684e4537e065fb8bf2cca0cbf219ce4e32e", + "https://deno.land/std@0.177.0/node/internal_binding/_timingSafeEqual.ts": "7d9732464d3c669ff07713868ce5d25bc974a06112edbfb5f017fc3c70c0853e", + "https://deno.land/std@0.177.0/node/internal_binding/_utils.ts": "7c58a2fbb031a204dee9583ba211cf9c67922112fe77e7f0b3226112469e9fe1", + "https://deno.land/std@0.177.0/node/internal_binding/_winerror.ts": "3e8cfdfe22e89f13d2b28529bab35155e6b1730c0221ec5a6fc7077dc037be13", + "https://deno.land/std@0.177.0/node/internal_binding/ares.ts": "bdd34c679265a6c115a8cfdde000656837a0a0dcdb0e4c258e622e136e9c31b8", + "https://deno.land/std@0.177.0/node/internal_binding/async_wrap.ts": "0dc5ae64eea2c9e57ab17887ef1573922245167ffe38e3685c28d636f487f1b7", + "https://deno.land/std@0.177.0/node/internal_binding/buffer.ts": "31729e0537921d6c730ad0afea44a7e8a0a1044d070ade8368226cb6f7390c8b", + "https://deno.land/std@0.177.0/node/internal_binding/cares_wrap.ts": "9b7247772167f8ed56acd0244a232d9d50e8d7c9cfc379f77f3d54cecc2f32ab", + "https://deno.land/std@0.177.0/node/internal_binding/config.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/connection_wrap.ts": "7dd089ea46de38e4992d0f43a09b586e4cf04878fb06863c1cb8cb2ece7da521", + "https://deno.land/std@0.177.0/node/internal_binding/constants.ts": "21ff9d1ee71d0a2086541083a7711842fc6ae25e264dbf45c73815aadce06f4c", + "https://deno.land/std@0.177.0/node/internal_binding/contextify.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/credentials.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/crypto.ts": "29e8f94f283a2e7d4229d3551369c6a40c2af9737fad948cb9be56bef6c468cd", + "https://deno.land/std@0.177.0/node/internal_binding/errors.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/fs.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/fs_dir.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/fs_event_wrap.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/handle_wrap.ts": "adf0b8063da2c54f26edd5e8ec50296a4d38e42716a70a229f14654b17a071d9", + "https://deno.land/std@0.177.0/node/internal_binding/heap_utils.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/http_parser.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/icu.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/inspector.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/js_stream.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/messaging.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/mod.ts": "9fc65f7af1d35e2d3557539a558ea9ad7a9954eefafe614ad82d94bddfe25845", + "https://deno.land/std@0.177.0/node/internal_binding/module_wrap.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/native_module.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/natives.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/node_file.ts": "21edbbc95653e45514aff252b6cae7bf127a4338cbc5f090557d258aa205d8a5", + "https://deno.land/std@0.177.0/node/internal_binding/node_options.ts": "0b5cb0bf4379a39278d7b7bb6bb2c2751baf428fe437abe5ed3e8441fae1f18b", + "https://deno.land/std@0.177.0/node/internal_binding/options.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/os.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/performance.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/pipe_wrap.ts": "30e3a63954313f9d5bbc2ac02c7f9be4b1204c493e47f6e1b9c7366994e6ea6d", + "https://deno.land/std@0.177.0/node/internal_binding/process_methods.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/report.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/serdes.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/signal_wrap.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/spawn_sync.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/stream_wrap.ts": "452bff74d1db280a0cd78c75a95bb6d163e849e06e9638c4af405d40296bd050", + "https://deno.land/std@0.177.0/node/internal_binding/string_decoder.ts": "54c3c1cbd5a9254881be58bf22637965dc69535483014dab60487e299cb95445", + "https://deno.land/std@0.177.0/node/internal_binding/symbols.ts": "4dee2f3a400d711fd57fa3430b8de1fdb011e08e260b81fef5b81cc06ed77129", + "https://deno.land/std@0.177.0/node/internal_binding/task_queue.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/tcp_wrap.ts": "d298d855e862fc9a5c94e13ad982fde99f6d8a56620a4772681b7226f5a15c91", + "https://deno.land/std@0.177.0/node/internal_binding/timers.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/tls_wrap.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/trace_events.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/tty_wrap.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/types.ts": "2187595a58d2cf0134f4db6cc2a12bf777f452f52b15b6c3aed73fa072aa5fc3", + "https://deno.land/std@0.177.0/node/internal_binding/udp_wrap.ts": "b77d7024aef1282b9fe6e1f6c8064ab8a7b9ecbae0bc08a36f2b30dcbb1d2752", + "https://deno.land/std@0.177.0/node/internal_binding/url.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/util.ts": "808ff3b92740284184ab824adfc420e75398c88c8bccf5111f0c24ac18c48f10", + "https://deno.land/std@0.177.0/node/internal_binding/uv.ts": "eb0048e30af4db407fb3f95563e30d70efd6187051c033713b0a5b768593a3a3", + "https://deno.land/std@0.177.0/node/internal_binding/v8.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/worker.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/internal_binding/zlib.ts": "37d293009d1718205bf28e878e54a9f1ca24c1c320cee2416c20dc054104c6ea", + "https://deno.land/std@0.177.0/node/path.ts": "1c6aa9101554136525b368e8280f0f78136d4071dd71ad3a70477f27d9e4dd91", + "https://deno.land/std@0.177.0/node/path/_constants.ts": "2e2f68b8679cbf0ef118de8e5719e90cfb091de17d4a7c026c911b6772e6a247", + "https://deno.land/std@0.177.0/node/path/_interface.ts": "c67d76726d0f86ea62ec68d17f11d50680c4659a60a0ea6dcd2488109435b4ce", + "https://deno.land/std@0.177.0/node/path/_util.ts": "44deaf5bbd947eafb3439ea7208d0625e231c5f55c421fe83f5ef91218dcd28c", + "https://deno.land/std@0.177.0/node/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", + "https://deno.land/std@0.177.0/node/path/glob.ts": "b5fc2aed74aa7511cfd07d52dcd595cc18cd7ca431326a664e735d8905d85ce8", + "https://deno.land/std@0.177.0/node/path/mod.ts": "cad27b16a7a3a8c2bb3ad1ba68a63d11e4fb616d63fd55c95e399a0a3a927be2", + "https://deno.land/std@0.177.0/node/path/posix.ts": "a066e77f554358a82b4a693726faa41932f02f5bcd520f07afb6b2372e62484d", + "https://deno.land/std@0.177.0/node/path/separator.ts": "5cfefe182e88bc8138022475703a9b39b13250c79bf234cdc6e3be9afd639662", + "https://deno.land/std@0.177.0/node/path/win32.ts": "3a1b21948e0063cf1ac1c6834ef3ed633b5405f107be01aadfaedd2088b57eef", + "https://deno.land/std@0.177.0/node/process.ts": "6608012d6d51a17a7346f36079c574b9b9f81f1b5c35436489ad089f39757466", + "https://deno.land/std@0.177.0/node/querystring.ts": "2dce8068cb80ce2bf503aecd888be1b89827288352b6581e0fc401886d56cd86", + "https://deno.land/std@0.177.0/node/stream.ts": "09e348302af40dcc7dc58aa5e40fdff868d11d8d6b0cfb85cbb9c75b9fe450c7", + "https://deno.land/std@0.177.0/node/string_decoder.ts": "1a17e3572037c512cc5fc4b29076613e90f225474362d18da908cb7e5ccb7e88", + "https://deno.land/std@0.177.0/node/url.ts": "f8c6656f32728a447705a273e3d8a5118631c0b6560d13fc613901ec9a3f69d0", + "https://deno.land/std@0.177.0/node/util.ts": "4c12edeafde7e50dfe2d4022e383decb422c77858b938b093698cb7250c9e125", + "https://deno.land/std@0.177.0/node/util/types.ts": "461b2e1118fd32456967e14b99f01c892dee1e94d144d6b96e9d94eb086a9574", + "https://deno.land/std@0.177.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", + "https://deno.land/std@0.177.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", + "https://deno.land/std@0.177.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", + "https://deno.land/std@0.177.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", + "https://deno.land/std@0.177.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", + "https://deno.land/std@0.177.0/path/mod.ts": "4b83694ac500d7d31b0cdafc927080a53dc0c3027eb2895790fb155082b0d232", + "https://deno.land/std@0.177.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", + "https://deno.land/std@0.177.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", + "https://deno.land/std@0.177.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", + "https://deno.land/std@0.177.0/streams/write_all.ts": "3b2e1ce44913f966348ce353d02fa5369e94115181037cd8b602510853ec3033", + "https://deno.land/std@0.177.0/testing/_test_suite.ts": "30f018feeb3835f12ab198d8a518f9089b1bcb2e8c838a8b615ab10d5005465c", + "https://deno.land/std@0.177.0/testing/bdd.ts": "c5ca6d85940dbcc19b4d2bc3608d49ab65d81470aa91306d5efa4b0d5c945731", + "https://deno.land/std@0.177.0/types.d.ts": "220ed56662a0bd393ba5d124aa6ae2ad36a00d2fcbc0e8666a65f4606aaa9784", + "https://deno.land/std@0.97.0/fmt/colors.ts": "db22b314a2ae9430ae7460ce005e0a7130e23ae1c999157e3bb77cf55800f7e4", + "https://deno.land/std@0.97.0/testing/_diff.ts": "961eaf6d9f5b0a8556c9d835bbc6fa74f5addd7d3b02728ba7936ff93364f7a3", + "https://deno.land/std@0.97.0/testing/asserts.ts": "341292d12eebc44be4c3c2ca101ba8b6b5859cef2fa69d50c217f9d0bfbcfd1f", + "https://deno.land/x/expect@v0.3.0/expect.ts": "5e6717eddc9df376f7b2c9be6403e016130bb2edbb1acd261a2d6ea9608ee196", + "https://deno.land/x/expect@v0.3.0/matchers.ts": "a37ef4577739247af77a852cdcd69484f999a41ad86ec16bb63a88a7a47a2372", + "https://deno.land/x/expect@v0.3.0/mock.ts": "562d4b1d735d15b0b8e935f342679096b64fe452f86e96714fe8616c0c884914", + "https://deno.land/x/expect@v0.3.0/mod.ts": "0304d2430e1e96ba669a8495e24ba606dcc3d152e1f81aaa8da898cea24e36c2" + } +} diff --git a/integration-tests/lts/deno/import_map.json b/integration-tests/lts/deno/import_map.json new file mode 100644 index 000000000..09439dcc1 --- /dev/null +++ b/integration-tests/lts/deno/import_map.json @@ -0,0 +1,6 @@ +{ + "imports": { + "edgedb": "../../../packages/deno/mod.ts", + "edgedb/": "../../../packages/deno/" + } +} diff --git a/packages/generate/test/deno/test.ts b/integration-tests/lts/deno/test.ts similarity index 100% rename from packages/generate/test/deno/test.ts rename to integration-tests/lts/deno/test.ts diff --git a/packages/generate/test/deno/yarn.lock b/integration-tests/lts/deno/yarn.lock similarity index 100% rename from packages/generate/test/deno/yarn.lock rename to integration-tests/lts/deno/yarn.lock diff --git a/packages/generate/test/detached.test.ts b/integration-tests/lts/detached.test.ts similarity index 96% rename from packages/generate/test/detached.test.ts rename to integration-tests/lts/detached.test.ts index 600099dea..0a35e46a1 100644 --- a/packages/generate/test/detached.test.ts +++ b/integration-tests/lts/detached.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import type * as edgedb from "edgedb"; -import e from "../dbschema/edgeql-js"; +import e from "./dbschema/edgeql-js"; import { setupTests, tc, teardownTests, type TestData } from "./setupTeardown"; describe("detached", () => { diff --git a/integration-tests/lts/edgedb.toml b/integration-tests/lts/edgedb.toml new file mode 100644 index 000000000..6fe27091c --- /dev/null +++ b/integration-tests/lts/edgedb.toml @@ -0,0 +1,2 @@ +[edgedb] +server-version = "2" diff --git a/packages/generate/test/esm.test.mjs b/integration-tests/lts/esm.test.mjs similarity index 95% rename from packages/generate/test/esm.test.mjs rename to integration-tests/lts/esm.test.mjs index 77f1b150f..f1e230f9a 100644 --- a/packages/generate/test/esm.test.mjs +++ b/integration-tests/lts/esm.test.mjs @@ -2,7 +2,7 @@ import path from "path"; import {execSync} from "child_process"; import {createClient} from "edgedb"; -const QBDIR = "../dbschema/qbout"; +const QBDIR = "./dbschema/qbout"; const client = createClient(); diff --git a/packages/generate/test/esm/package.json b/integration-tests/lts/esm/package.json similarity index 100% rename from packages/generate/test/esm/package.json rename to integration-tests/lts/esm/package.json diff --git a/packages/generate/test/esm/test.js b/integration-tests/lts/esm/test.js similarity index 100% rename from packages/generate/test/esm/test.js rename to integration-tests/lts/esm/test.js diff --git a/packages/generate/test/esm/yarn.lock b/integration-tests/lts/esm/yarn.lock similarity index 100% rename from packages/generate/test/esm/yarn.lock rename to integration-tests/lts/esm/yarn.lock diff --git a/packages/generate/test/for.test.ts b/integration-tests/lts/for.test.ts similarity index 97% rename from packages/generate/test/for.test.ts rename to integration-tests/lts/for.test.ts index 2c274d662..ca9ead1ad 100644 --- a/packages/generate/test/for.test.ts +++ b/integration-tests/lts/for.test.ts @@ -1,5 +1,5 @@ import assert from "node:assert/strict"; -import e from "../dbschema/edgeql-js"; +import e from "./dbschema/edgeql-js"; describe("for", () => { test("simple for loop", () => { diff --git a/packages/generate/test/functions.test.ts b/integration-tests/lts/functions.test.ts similarity index 98% rename from packages/generate/test/functions.test.ts rename to integration-tests/lts/functions.test.ts index 3d201d501..11c90d875 100644 --- a/packages/generate/test/functions.test.ts +++ b/integration-tests/lts/functions.test.ts @@ -1,10 +1,10 @@ import assert from "node:assert/strict"; import superjson from "superjson"; -import * as $ from "../src/syntax/reflection"; -import e from "../dbschema/edgeql-js"; -import type { $expr_Function } from "../src/syntax/funcops"; +import * as $ from "../../packages/generate/src/syntax/reflection"; +import e from "./dbschema/edgeql-js"; +import type { $expr_Function } from "../../packages/generate/src/syntax/funcops"; import { tc } from "./setupTeardown"; -import { number } from "../dbschema/edgeql-js/modules/std"; +import { number } from "./dbschema/edgeql-js/modules/std"; function checkFunctionExpr( expr: T, diff --git a/integration-tests/lts/globalSetup.ts b/integration-tests/lts/globalSetup.ts new file mode 100644 index 000000000..ddb7e98f5 --- /dev/null +++ b/integration-tests/lts/globalSetup.ts @@ -0,0 +1,9 @@ +import createClient from "edgedb"; + +export default async () => { + const client = createClient(); + + process.env._JEST_EDGEDB_VERSION = await client.queryRequiredSingleJSON( + `select sys::get_version()` + ); +}; diff --git a/packages/generate/test/globals.test.ts b/integration-tests/lts/globals.test.ts similarity index 98% rename from packages/generate/test/globals.test.ts rename to integration-tests/lts/globals.test.ts index 9db506c47..388a0d7f0 100644 --- a/packages/generate/test/globals.test.ts +++ b/integration-tests/lts/globals.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import type * as edgedb from "edgedb"; import { $ } from "edgedb"; -import e from "../dbschema/edgeql-js"; +import e from "./dbschema/edgeql-js"; import { setupTests, teardownTests } from "./setupTeardown"; diff --git a/packages/generate/test/group.test.ts b/integration-tests/lts/group.test.ts similarity index 99% rename from packages/generate/test/group.test.ts rename to integration-tests/lts/group.test.ts index e64d47b24..5323032b8 100644 --- a/packages/generate/test/group.test.ts +++ b/integration-tests/lts/group.test.ts @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import type * as edgedb from "edgedb"; import * as tc from "conditional-type-checks"; -import e, { type $infer } from "../dbschema/edgeql-js"; +import e, { type $infer } from "./dbschema/edgeql-js"; import { setupTests, teardownTests, type TestData } from "./setupTeardown"; describe("group", () => { diff --git a/packages/generate/test/insert.test.ts b/integration-tests/lts/insert.test.ts similarity index 98% rename from packages/generate/test/insert.test.ts rename to integration-tests/lts/insert.test.ts index 31826d21d..6037e9cf3 100644 --- a/packages/generate/test/insert.test.ts +++ b/integration-tests/lts/insert.test.ts @@ -1,9 +1,8 @@ import assert from "node:assert/strict"; import { type Client, $ } from "edgedb"; -import type { Villain } from "../dbschema/edgeql-js/modules/default"; -import type { InsertShape } from "../dbschema/edgeql-js/insert"; -import e from "../dbschema/edgeql-js"; - +import type { Villain } from "./dbschema/edgeql-js/modules/default"; +import type { InsertShape } from "./dbschema/edgeql-js/insert"; +import e from "./dbschema/edgeql-js"; import { setupTests, teardownTests, tc } from "./setupTeardown"; describe("insert", () => { diff --git a/packages/generate/test/interfaces.test.ts b/integration-tests/lts/interfaces.test.ts similarity index 93% rename from packages/generate/test/interfaces.test.ts rename to integration-tests/lts/interfaces.test.ts index fee4b5884..db21f44c4 100644 --- a/packages/generate/test/interfaces.test.ts +++ b/integration-tests/lts/interfaces.test.ts @@ -1,6 +1,6 @@ import * as tc from "conditional-type-checks"; -import type { Movie, X, Y, Z } from "../dbschema/interfaces"; +import type { Movie, X, Y, Z } from "./dbschema/interfaces"; export type Genre = | "Horror" diff --git a/integration-tests/lts/jest.config.js b/integration-tests/lts/jest.config.js new file mode 100644 index 000000000..2c22ce297 --- /dev/null +++ b/integration-tests/lts/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", + testPathIgnorePatterns: ["./dist", "./esm", "./mts", "./cjs", "./deno"], + globalSetup: "./globalSetup.ts", + transform: {}, + globals: {}, +}; diff --git a/packages/generate/test/json.test.ts b/integration-tests/lts/json.test.ts similarity index 95% rename from packages/generate/test/json.test.ts rename to integration-tests/lts/json.test.ts index 6d14b64db..aa5a0e1d2 100644 --- a/packages/generate/test/json.test.ts +++ b/integration-tests/lts/json.test.ts @@ -1,9 +1,8 @@ import assert from "node:assert/strict"; import * as edgedb from "edgedb"; -import * as tc from "conditional-type-checks"; -import e from "../dbschema/edgeql-js"; -import { setupTests, teardownTests } from "./setupTeardown"; +import e from "./dbschema/edgeql-js"; +import { setupTests, teardownTests, tc } from "./setupTeardown"; describe("json", () => { let client: edgedb.Client; diff --git a/packages/generate/test/literals.test.ts b/integration-tests/lts/literals.test.ts similarity index 99% rename from packages/generate/test/literals.test.ts rename to integration-tests/lts/literals.test.ts index a39c065dc..04529cd0b 100644 --- a/packages/generate/test/literals.test.ts +++ b/integration-tests/lts/literals.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import * as edgedb from "edgedb"; import { TypeKind } from "edgedb/dist/reflection"; -import e from "../dbschema/edgeql-js"; +import e from "./dbschema/edgeql-js"; import { setupTests } from "./setupTeardown"; describe("literals", () => { diff --git a/packages/generate/test/mts/package.json b/integration-tests/lts/mts/package.json similarity index 100% rename from packages/generate/test/mts/package.json rename to integration-tests/lts/mts/package.json diff --git a/packages/generate/test/mts/test.ts b/integration-tests/lts/mts/test.ts similarity index 100% rename from packages/generate/test/mts/test.ts rename to integration-tests/lts/mts/test.ts diff --git a/packages/generate/test/mts/tsconfig.build.json b/integration-tests/lts/mts/tsconfig.build.json similarity index 82% rename from packages/generate/test/mts/tsconfig.build.json rename to integration-tests/lts/mts/tsconfig.build.json index a9bfbc737..9c79ba9d9 100644 --- a/packages/generate/test/mts/tsconfig.build.json +++ b/integration-tests/lts/mts/tsconfig.build.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", "compilerOptions": { "outDir": "dist", "module": "NodeNext", diff --git a/packages/generate/test/mts/yarn.lock b/integration-tests/lts/mts/yarn.lock similarity index 100% rename from packages/generate/test/mts/yarn.lock rename to integration-tests/lts/mts/yarn.lock diff --git a/packages/generate/test/objectTypes.test.ts b/integration-tests/lts/objectTypes.test.ts similarity index 96% rename from packages/generate/test/objectTypes.test.ts rename to integration-tests/lts/objectTypes.test.ts index 42049e7a0..047a93906 100644 --- a/packages/generate/test/objectTypes.test.ts +++ b/integration-tests/lts/objectTypes.test.ts @@ -1,8 +1,8 @@ import assert from "node:assert/strict"; -import * as $ from "../src/syntax/reflection"; -import type { PropertyDesc } from "../src/syntax/typesystem"; -import e from "../dbschema/edgeql-js"; -import type { $str } from "../dbschema/edgeql-js/modules/std"; +import * as $ from "../../packages/generate/src/syntax/reflection"; +import type { PropertyDesc } from "../../packages/generate/src/syntax/typesystem"; +import e from "./dbschema/edgeql-js"; +import type { $str } from "./dbschema/edgeql-js/modules/std"; import { tc } from "./setupTeardown"; const $Hero = e.default.Hero.__element__; diff --git a/packages/generate/test/operators.test.ts b/integration-tests/lts/operators.test.ts similarity index 98% rename from packages/generate/test/operators.test.ts rename to integration-tests/lts/operators.test.ts index 90eec5aa6..7829fb190 100644 --- a/packages/generate/test/operators.test.ts +++ b/integration-tests/lts/operators.test.ts @@ -1,8 +1,8 @@ import assert from "node:assert/strict"; import superjson from "superjson"; import type { Client } from "edgedb"; -import e from "../dbschema/edgeql-js"; -import * as $ from "../src/syntax/reflection"; +import e from "./dbschema/edgeql-js"; +import * as $ from "../../packages/generate/src/syntax/reflection"; import { setupTests, teardownTests } from "./setupTeardown"; diff --git a/integration-tests/lts/package.json b/integration-tests/lts/package.json new file mode 100644 index 000000000..9c085527b --- /dev/null +++ b/integration-tests/lts/package.json @@ -0,0 +1,27 @@ +{ + "private": true, + "name": "@edgedb/integration-lts", + "version": "0.0.0", + "scripts": { + "generate": "../../packages/generate/dist/cli.js", + "build": "echo 'Integration tests, no build output...'", + "test": "yarn test:ts && yarn test:non_ts", + "test:ts": "NODE_OPTIONS=\"--experimental-vm-modules\" pwd && yarn generate edgeql-js && yarn generate queries --file && yarn generate interfaces && jest --detectOpenHandles --forceExit", + "test:non_ts": "yarn test:esm && yarn test:cjs && yarn test:mts && yarn test:deno", + "test:esm": "yarn generate queries --target esm --file esm/queries && yarn generate edgeql-js --target esm --output-dir esm/edgeql-js && cd esm && node test.js", + "test:cjs": "yarn generate queries --target cjs --file cjs/queries && yarn generate edgeql-js --target cjs --output-dir cjs/edgeql-js && cd cjs && node test.js", + "test:mts": "yarn generate queries --target mts --file mts/queries && yarn generate edgeql-js --target mts --output-dir mts/edgeql-js && cd mts && yarn build && node dist/test.js", + "test:deno": "cd deno && deno task edgeql-js && deno task queries && deno task play", + "test:ci": "tsx ./testRunner.ts" + }, + "devDependencies": { + "@types/jest": "^29.5.2", + "@types/node": "^20.3.2", + "conditional-type-checks": "^1.0.6", + "jest": "^29.5.0", + "superjson": "^1.12.4", + "ts-jest": "^29.1.0", + "typescript": "5.0.4" + }, + "dependencies": {} +} diff --git a/packages/generate/test/params.test.ts b/integration-tests/lts/params.test.ts similarity index 99% rename from packages/generate/test/params.test.ts rename to integration-tests/lts/params.test.ts index aeca675ba..a938863ca 100644 --- a/packages/generate/test/params.test.ts +++ b/integration-tests/lts/params.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import * as edgedb from "edgedb"; -import e from "../dbschema/edgeql-js"; +import e from "./dbschema/edgeql-js"; import { setupTests, teardownTests, tc, versionGTE } from "./setupTeardown"; let client: edgedb.Client; diff --git a/packages/generate/test/paths.test.ts b/integration-tests/lts/paths.test.ts similarity index 96% rename from packages/generate/test/paths.test.ts rename to integration-tests/lts/paths.test.ts index b80286d16..06b2143ec 100644 --- a/packages/generate/test/paths.test.ts +++ b/integration-tests/lts/paths.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; -import * as $ from "../src/syntax/reflection"; -import e from "../dbschema/edgeql-js/index"; -import { $PathNode } from "../dbschema/edgeql-js/syntax"; +import * as $ from "../../packages/generate/src/syntax/reflection"; +import e from "./dbschema/edgeql-js/index"; +import { $PathNode } from "./dbschema/edgeql-js/syntax"; import { tc } from "./setupTeardown"; describe("paths", () => { diff --git a/packages/generate/test/primitives.test.ts b/integration-tests/lts/primitives.test.ts similarity index 97% rename from packages/generate/test/primitives.test.ts rename to integration-tests/lts/primitives.test.ts index 577e0bf12..9f3edcc08 100644 --- a/packages/generate/test/primitives.test.ts +++ b/integration-tests/lts/primitives.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import * as edgedb from "edgedb"; -import e from "../dbschema/edgeql-js"; -import type { getSharedParentPrimitiveVariadic } from "../dbschema/edgeql-js/syntax"; +import e from "./dbschema/edgeql-js"; +import type { getSharedParentPrimitiveVariadic } from "./dbschema/edgeql-js/syntax"; import { setupTests, tc, teardownTests } from "./setupTeardown"; describe("primitives", () => { diff --git a/packages/generate/test/queries.test.ts b/integration-tests/lts/queries.test.ts similarity index 98% rename from packages/generate/test/queries.test.ts rename to integration-tests/lts/queries.test.ts index 8f6a42741..f11506433 100644 --- a/packages/generate/test/queries.test.ts +++ b/integration-tests/lts/queries.test.ts @@ -6,7 +6,7 @@ import { getMoviesStarring, type GetMoviesStarringArgs, type GetMoviesStarringReturns, -} from "../dbschema/queries"; +} from "./dbschema/queries"; import { setupTests, teardownTests } from "./setupTeardown"; describe("queries", () => { diff --git a/packages/generate/test/select.test.ts b/integration-tests/lts/select.test.ts similarity index 99% rename from packages/generate/test/select.test.ts rename to integration-tests/lts/select.test.ts index 7bf72bf95..173428ffb 100644 --- a/packages/generate/test/select.test.ts +++ b/integration-tests/lts/select.test.ts @@ -1,11 +1,9 @@ import assert from "node:assert/strict"; import * as edgedb from "edgedb"; -import * as $ from "../src/syntax/reflection"; -import * as tc from "conditional-type-checks"; +import * as $ from "../../packages/generate/src/syntax/reflection"; -import e, { type $infer } from "../dbschema/edgeql-js"; -import { setupTests, teardownTests, type TestData } from "./setupTeardown"; -import { CardinalityViolationError } from "edgedb"; +import e, { type $infer } from "./dbschema/edgeql-js"; +import { setupTests, teardownTests, tc, type TestData } from "./setupTeardown"; let client: edgedb.Client; let data: TestData; @@ -1347,7 +1345,7 @@ SELECT __scope_0_defaultPerson { filter_single: e.op(movie.genre, "=", e.Genre.Action), })); - assert.rejects(() => query.run(client), CardinalityViolationError); + assert.rejects(() => query.run(client), edgedb.CardinalityViolationError); }); test("type union links", async () => { diff --git a/packages/generate/test/sets.test.ts b/integration-tests/lts/sets.test.ts similarity index 97% rename from packages/generate/test/sets.test.ts rename to integration-tests/lts/sets.test.ts index 74c1465a4..48d94e6ea 100644 --- a/packages/generate/test/sets.test.ts +++ b/integration-tests/lts/sets.test.ts @@ -1,9 +1,8 @@ import assert from "node:assert/strict"; import { $, type Client } from "edgedb"; -import { tc } from "./setupTeardown"; -import e, { type $infer } from "../dbschema/edgeql-js"; -import { setupTests, teardownTests } from "./setupTeardown"; -import { TypeKind } from "edgedb/dist/reflection"; +import e, { type $infer } from "./dbschema/edgeql-js"; +import { setupTests, teardownTests, tc } from "./setupTeardown"; +import { TypeKind } from "../../packages/generate/src/syntax/reflection"; describe("sets", () => { let client: Client; diff --git a/integration-tests/lts/setupTeardown.ts b/integration-tests/lts/setupTeardown.ts new file mode 100644 index 000000000..aa63304a9 --- /dev/null +++ b/integration-tests/lts/setupTeardown.ts @@ -0,0 +1,139 @@ +import * as tc from "conditional-type-checks"; +import { type Client, createClient } from "edgedb"; + +export { tc }; + +// insert tony +// insert cap +// insert spidey +// insert thanos +// insert doc ock +// insert "The Avengers" + +type depromisify = T extends Promise ? U : T; +export type TestData = depromisify>["data"]; + +interface Hero { + id: string; + name: string; + secret_identity: string; +} +interface Villain { + id: string; + name: string; + nemesis: { id: string; name: string }; +} +interface Movie { + id: string; + title: string; + genre: string; + rating: number | null; + release_year: number; + characters: { id: string }[]; +} + +export async function setupTests() { + const client = createClient(); + await client.execute(`configure current database + set allow_user_specified_id := true;`); + await cleanupData(client); + + const iron_man: Hero = await client.queryRequiredSingle(`SELECT (INSERT Hero { + name := "Iron Man", + secret_identity := "Tony Stark" +}) {id, name, secret_identity}`); + + const cap: Hero = await client.queryRequiredSingle(`SELECT (INSERT Hero { + name := "Captain America", + secret_identity := "Steve Rogers" +}) { id, name, secret_identity }`); + + const spidey: Hero = await client.queryRequiredSingle(`SELECT (INSERT Hero { + name := "Spider-Man", + secret_identity := "Peter Parker" +}) { id, name, secret_identity }`); + + const thanos: Villain = await client.queryRequiredSingle( + `SELECT (INSERT Villain { + name := "Thanos", + nemesis := (SELECT Hero FILTER .id = $nemesis_id) +}) { id, name, nemesis: { id, name }}`, + { nemesis_id: iron_man.id } + ); + + const docOck: Villain = await client.queryRequiredSingle( + `SELECT (INSERT Villain { + name := "Doc Ock", + nemesis := (SELECT Hero FILTER .id = $nemesis_id) +}) {id, name, nemesis: { id, name }}`, + { nemesis_id: spidey.id } + ); + + const the_avengers: Movie = await client.queryRequiredSingle( + `WITH + ironman_id := $ironman_id, + cap_id := $cap_id +SELECT (INSERT Movie { + title := "The Avengers", + rating := 10, + genre := Genre.Action, + release_year := 2012, + characters := distinct (for char in { + ('Tony Stark', ironman_id), + ('Steve Rogers', cap_id) + } union ( + SELECT Person { @character_name := char.0 } FILTER .id = char.1 + )) +}) {id, title, rating, genre, release_year, characters: {id}};`, + { ironman_id: iron_man.id, cap_id: cap.id } + ); + const civil_war: Movie = await client.queryRequiredSingle( + `SELECT (INSERT Movie { + title := "Captain America: Civil War", + release_year := 2016, + rating := 10, + genre := Genre.Action, + characters := (SELECT Hero) +}) {id, title, rating, genre, release_year, characters: {id}};` + ); + + return { + data: { + iron_man, + cap, + spidey, + thanos, + docOck, + the_avengers, + civil_war, + }, + client, + }; +} + +async function cleanupData(client: Client) { + await client.execute(`DELETE \`S p a M\``); + await client.execute(`DELETE A`); + await client.execute(`DELETE Łukasz`); + await client.execute(`DELETE Bag;`); + await client.execute(`DELETE Simple;`); + await client.execute(`DELETE User;`); + await client.execute(`DELETE Movie;`); + await client.execute(`DELETE Villain;`); + await client.execute(`DELETE Hero;`); + await client.execute(`DELETE Profile;`); +} + +export async function teardownTests(client: Client) { + await cleanupData(client); + + await client.close(); +} + +export const versionGTE = (majorVer: number) => { + const version = JSON.parse(process.env._JEST_EDGEDB_VERSION!); + return version.major >= majorVer; +}; + +export const testIfVersionGTE = (majorVer: number) => + versionGTE(majorVer) ? test.skip : test; diff --git a/integration-tests/lts/testRunner.ts b/integration-tests/lts/testRunner.ts new file mode 100644 index 000000000..6473ef995 --- /dev/null +++ b/integration-tests/lts/testRunner.ts @@ -0,0 +1,41 @@ +import createClient from "../../packages/driver/src/index.node"; + +import { + shutdown, + applyMigrations, + generateStatusFileName, + getServerCommand, + getWSLPath, + startServer, + runCommand, + configToEnv, +} from "../../packages/driver/test/testUtil"; + +(async function main() { + console.log("\nStarting EdgeDB test cluster..."); + + const statusFile = generateStatusFileName("node"); + console.log("Node status file:", statusFile); + + const { args } = getServerCommand(getWSLPath(statusFile)); + + const { proc, config } = await startServer(args, statusFile); + + console.log(`EdgeDB test cluster is up [port: ${config.port}]...`); + + const managementConn = await createClient(config).ensureConnected(); + + try { + await applyMigrations(config); + console.log(`\nRunning tests...`); + await runCommand("yarn", ["test:ts"], configToEnv(config)); + await runCommand("yarn", ["test:non_ts"], configToEnv(config)); + } catch (err) { + console.error(err); + process.exit(1); + } finally { + console.log("Shutting down EdgeDB test cluster..."); + await shutdown(proc, managementConn); + console.log("EdgeDB test cluster is down..."); + } +})(); diff --git a/integration-tests/lts/tsconfig.json b/integration-tests/lts/tsconfig.json new file mode 100644 index 000000000..c91b8818e --- /dev/null +++ b/integration-tests/lts/tsconfig.json @@ -0,0 +1,110 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": ["./**/*.ts"] +} diff --git a/packages/generate/test/update.test.ts b/integration-tests/lts/update.test.ts similarity index 98% rename from packages/generate/test/update.test.ts rename to integration-tests/lts/update.test.ts index eca1a5988..216bce1e1 100644 --- a/packages/generate/test/update.test.ts +++ b/integration-tests/lts/update.test.ts @@ -1,8 +1,8 @@ import assert from "node:assert/strict"; import type * as edgedb from "edgedb"; -import e from "../dbschema/edgeql-js"; -import type { UpdateShape } from "../dbschema/edgeql-js/syntax"; +import e from "./dbschema/edgeql-js"; +import type { UpdateShape } from "./dbschema/edgeql-js/syntax"; import { setupTests, tc, teardownTests, type TestData } from "./setupTeardown"; describe("update", () => { diff --git a/packages/generate/test/with.test.ts b/integration-tests/lts/with.test.ts similarity index 99% rename from packages/generate/test/with.test.ts rename to integration-tests/lts/with.test.ts index 89710f2c4..bcd0b21e4 100644 --- a/packages/generate/test/with.test.ts +++ b/integration-tests/lts/with.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; -import type * as $ from "../src/syntax/reflection"; -import e from "../dbschema/edgeql-js"; +import type * as $ from "../../packages/generate/src/syntax/reflection"; +import e from "./dbschema/edgeql-js"; import { tc } from "./setupTeardown"; describe("with", () => { diff --git a/integration-tests/nightly/.gitignore b/integration-tests/nightly/.gitignore new file mode 100644 index 000000000..e06bbfdd7 --- /dev/null +++ b/integration-tests/nightly/.gitignore @@ -0,0 +1,11 @@ +trace +trace/* +mts/edgeql-js +esm/edgeql-js +deno/edgeql-js +cjs/edgeql-js +dbschema/edgeql-js +dbschema/queries.ts +dbschema/interfaces.ts +**/*.edgeql.* +**/*/queries.* diff --git a/integration-tests/nightly/dbschema/default.esdl b/integration-tests/nightly/dbschema/default.esdl new file mode 100644 index 000000000..4bda52523 --- /dev/null +++ b/integration-tests/nightly/dbschema/default.esdl @@ -0,0 +1,3 @@ +module default { + +} diff --git a/integration-tests/nightly/edgedb.toml b/integration-tests/nightly/edgedb.toml new file mode 100644 index 000000000..e9ced6501 --- /dev/null +++ b/integration-tests/nightly/edgedb.toml @@ -0,0 +1,2 @@ +[edgedb] +server-version = "nightly" diff --git a/integration-tests/nightly/globalSetup.ts b/integration-tests/nightly/globalSetup.ts new file mode 100644 index 000000000..ddb7e98f5 --- /dev/null +++ b/integration-tests/nightly/globalSetup.ts @@ -0,0 +1,9 @@ +import createClient from "edgedb"; + +export default async () => { + const client = createClient(); + + process.env._JEST_EDGEDB_VERSION = await client.queryRequiredSingleJSON( + `select sys::get_version()` + ); +}; diff --git a/integration-tests/nightly/jest.config.js b/integration-tests/nightly/jest.config.js new file mode 100644 index 000000000..2c22ce297 --- /dev/null +++ b/integration-tests/nightly/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", + testPathIgnorePatterns: ["./dist", "./esm", "./mts", "./cjs", "./deno"], + globalSetup: "./globalSetup.ts", + transform: {}, + globals: {}, +}; diff --git a/integration-tests/nightly/package.json b/integration-tests/nightly/package.json new file mode 100644 index 000000000..d087975df --- /dev/null +++ b/integration-tests/nightly/package.json @@ -0,0 +1,21 @@ +{ + "private": true, + "name": "@edgedb/integration-nightly", + "version": "0.0.0", + "scripts": { + "generate": "../../packages/generate/dist/cli.js", + "build": "echo 'Integration tests, no build output...'", + "test": "NODE_OPTIONS=\"--experimental-vm-modules\" yarn generate edgeql-js && yarn generate queries --file && yarn generate interfaces && jest --detectOpenHandles --forceExit --passWithNoTests", + "test:ci": "tsx ./testRunner.ts" + }, + "devDependencies": { + "@types/jest": "^29.5.2", + "@types/node": "^20.3.2", + "conditional-type-checks": "^1.0.6", + "jest": "^29.5.0", + "superjson": "^1.12.4", + "ts-jest": "^29.1.0", + "typescript": "5.0.4" + }, + "dependencies": {} +} diff --git a/integration-tests/nightly/setupTeardown.ts b/integration-tests/nightly/setupTeardown.ts new file mode 100644 index 000000000..f57bdb82a --- /dev/null +++ b/integration-tests/nightly/setupTeardown.ts @@ -0,0 +1,35 @@ +import * as tc from "conditional-type-checks"; +import { type Client, createClient } from "edgedb"; + +export { tc }; + +type depromisify = T extends Promise ? U : T; +export type TestData = depromisify>["data"]; + +export async function setupTests() { + const client = createClient(); + return { + data: null, + client, + }; +} + +async function cleanupData(client: Client) { + await client.execute(` +# Delete any user-defined objects here +`); +} + +export async function teardownTests(client: Client) { + await cleanupData(client); + + await client.close(); +} + +export const versionGTE = (majorVer: number) => { + const version = JSON.parse(process.env._JEST_EDGEDB_VERSION!); + return version.major >= majorVer; +}; + +export const testIfVersionGTE = (majorVer: number) => + versionGTE(majorVer) ? test.skip : test; diff --git a/integration-tests/nightly/testRunner.ts b/integration-tests/nightly/testRunner.ts new file mode 100644 index 000000000..26347febb --- /dev/null +++ b/integration-tests/nightly/testRunner.ts @@ -0,0 +1,40 @@ +import createClient from "../../packages/driver/src/index.node"; + +import { + shutdown, + applyMigrations, + generateStatusFileName, + getServerCommand, + getWSLPath, + startServer, + runCommand, + configToEnv, +} from "../../packages/driver/test/testUtil"; + +(async function main() { + console.log("\nStarting EdgeDB test cluster..."); + + const statusFile = generateStatusFileName("node"); + console.log("Node status file:", statusFile); + + const { args } = getServerCommand(getWSLPath(statusFile)); + + const { proc, config } = await startServer(args, statusFile); + + console.log(`EdgeDB test cluster is up [port: ${config.port}]...`); + + const managementConn = await createClient(config).ensureConnected(); + + try { + await applyMigrations(config); + console.log(`\nRunning tests...`); + await runCommand("yarn", ["test"], configToEnv(config)); + } catch (err) { + console.error(err); + process.exit(1); + } finally { + console.log("Shutting down EdgeDB test cluster..."); + await shutdown(proc, managementConn); + console.log("EdgeDB test cluster is down..."); + } +})(); diff --git a/integration-tests/nightly/tsconfig.json b/integration-tests/nightly/tsconfig.json new file mode 100644 index 000000000..c91b8818e --- /dev/null +++ b/integration-tests/nightly/tsconfig.json @@ -0,0 +1,110 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": ["./**/*.ts"] +} diff --git a/integration-tests/stable/.gitignore b/integration-tests/stable/.gitignore new file mode 100644 index 000000000..e06bbfdd7 --- /dev/null +++ b/integration-tests/stable/.gitignore @@ -0,0 +1,11 @@ +trace +trace/* +mts/edgeql-js +esm/edgeql-js +deno/edgeql-js +cjs/edgeql-js +dbschema/edgeql-js +dbschema/queries.ts +dbschema/interfaces.ts +**/*.edgeql.* +**/*/queries.* diff --git a/integration-tests/stable/dbschema/default.esdl b/integration-tests/stable/dbschema/default.esdl new file mode 100644 index 000000000..1105d9ff6 --- /dev/null +++ b/integration-tests/stable/dbschema/default.esdl @@ -0,0 +1,9 @@ +using extension pgvector; + +module default { + scalar type embedding extending ext::pgvector::vector<1234>; + + type PgVectorTest { + test_embedding: embedding; + } +}; diff --git a/packages/generate/dbschema/migrations/00021.edgeql b/integration-tests/stable/dbschema/migrations/00001.edgeql similarity index 62% rename from packages/generate/dbschema/migrations/00021.edgeql rename to integration-tests/stable/dbschema/migrations/00001.edgeql index ce9b10bda..b93925d62 100644 --- a/packages/generate/dbschema/migrations/00021.edgeql +++ b/integration-tests/stable/dbschema/migrations/00001.edgeql @@ -1,5 +1,5 @@ -CREATE MIGRATION m1lwtksdmgupjddaakscxoqarehfpdd4otb5yjaq5knweuepah4a7a - ONTO m1sxhoqfjqn7vtpmatzanmwydtxndf3jlf33npkblmya42fx3bcdoa +CREATE MIGRATION m1vezvqx3yt5wywukcmpmgjnhu2uwuxcgmvm2di4bh42yvqgw7xfja + ONTO initial { CREATE EXTENSION pgvector VERSION '0.4'; CREATE SCALAR TYPE default::embedding EXTENDING ext::pgvector::vector<1234>; diff --git a/integration-tests/stable/edgedb.toml b/integration-tests/stable/edgedb.toml new file mode 100644 index 000000000..4f0a00705 --- /dev/null +++ b/integration-tests/stable/edgedb.toml @@ -0,0 +1,2 @@ +[edgedb] +server-version = "3" diff --git a/integration-tests/stable/globalSetup.ts b/integration-tests/stable/globalSetup.ts new file mode 100644 index 000000000..ddb7e98f5 --- /dev/null +++ b/integration-tests/stable/globalSetup.ts @@ -0,0 +1,9 @@ +import createClient from "edgedb"; + +export default async () => { + const client = createClient(); + + process.env._JEST_EDGEDB_VERSION = await client.queryRequiredSingleJSON( + `select sys::get_version()` + ); +}; diff --git a/integration-tests/stable/jest.config.js b/integration-tests/stable/jest.config.js new file mode 100644 index 000000000..2c22ce297 --- /dev/null +++ b/integration-tests/stable/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", + testPathIgnorePatterns: ["./dist", "./esm", "./mts", "./cjs", "./deno"], + globalSetup: "./globalSetup.ts", + transform: {}, + globals: {}, +}; diff --git a/integration-tests/stable/package.json b/integration-tests/stable/package.json new file mode 100644 index 000000000..dbfb78936 --- /dev/null +++ b/integration-tests/stable/package.json @@ -0,0 +1,21 @@ +{ + "private": true, + "name": "@edgedb/integration-stable", + "version": "0.0.0", + "scripts": { + "generate": "../../packages/generate/dist/cli.js", + "build": "echo 'Integration tests, no build output...'", + "test": "NODE_OPTIONS=\"--experimental-vm-modules\" yarn generate edgeql-js && yarn generate queries --file && yarn generate interfaces && jest --detectOpenHandles --forceExit --passWithNoTests", + "test:ci": "tsx ./testRunner.ts" + }, + "devDependencies": { + "@types/jest": "^29.5.2", + "@types/node": "^20.3.2", + "conditional-type-checks": "^1.0.6", + "jest": "^29.5.0", + "superjson": "^1.12.4", + "ts-jest": "^29.1.0", + "typescript": "5.0.4" + }, + "dependencies": {} +} diff --git a/packages/generate/test/pgvector.test.ts b/integration-tests/stable/pgvector.test.ts similarity index 90% rename from packages/generate/test/pgvector.test.ts rename to integration-tests/stable/pgvector.test.ts index 9d33f3250..c310ad8db 100644 --- a/packages/generate/test/pgvector.test.ts +++ b/integration-tests/stable/pgvector.test.ts @@ -1,9 +1,9 @@ import assert from "node:assert/strict"; -import * as edgedb from "edgedb"; -import e from "../dbschema/edgeql-js"; +import { type Client } from "edgedb"; +import e from "./dbschema/edgeql-js"; import { setupTests, tc, teardownTests } from "./setupTeardown"; -import type { PgVectorTest } from "../dbschema/interfaces"; +import type { PgVectorTest } from "./dbschema/interfaces"; interface BaseObject { id: string; @@ -13,7 +13,7 @@ interface test_PgVectorTest extends BaseObject { } describe("pgvector", () => { - let client: edgedb.Client; + let client: Client; beforeAll(async () => { const setup = await setupTests(); ({ client } = setup); @@ -21,7 +21,7 @@ describe("pgvector", () => { afterAll(async () => { await teardownTests(client); - }); + }, 10_000); test("check generated interfaces", () => { tc.assert>(true); diff --git a/integration-tests/stable/setupTeardown.ts b/integration-tests/stable/setupTeardown.ts new file mode 100644 index 000000000..33640e436 --- /dev/null +++ b/integration-tests/stable/setupTeardown.ts @@ -0,0 +1,33 @@ +import * as tc from "conditional-type-checks"; +import { type Client, createClient } from "edgedb"; + +export { tc }; + +type depromisify = T extends Promise ? U : T; +export type TestData = depromisify>["data"]; + +export async function setupTests() { + const client = createClient(); + return { + data: null, + client, + }; +} + +async function cleanupData(client: Client) { + await client.execute(`reset schema to initial`); +} + +export async function teardownTests(client: Client) { + await cleanupData(client); + + await client.close(); +} + +export const versionGTE = (majorVer: number) => { + const version = JSON.parse(process.env._JEST_EDGEDB_VERSION!); + return version.major >= majorVer; +}; + +export const testIfVersionGTE = (majorVer: number) => + versionGTE(majorVer) ? test.skip : test; diff --git a/integration-tests/stable/testRunner.ts b/integration-tests/stable/testRunner.ts new file mode 100644 index 000000000..26347febb --- /dev/null +++ b/integration-tests/stable/testRunner.ts @@ -0,0 +1,40 @@ +import createClient from "../../packages/driver/src/index.node"; + +import { + shutdown, + applyMigrations, + generateStatusFileName, + getServerCommand, + getWSLPath, + startServer, + runCommand, + configToEnv, +} from "../../packages/driver/test/testUtil"; + +(async function main() { + console.log("\nStarting EdgeDB test cluster..."); + + const statusFile = generateStatusFileName("node"); + console.log("Node status file:", statusFile); + + const { args } = getServerCommand(getWSLPath(statusFile)); + + const { proc, config } = await startServer(args, statusFile); + + console.log(`EdgeDB test cluster is up [port: ${config.port}]...`); + + const managementConn = await createClient(config).ensureConnected(); + + try { + await applyMigrations(config); + console.log(`\nRunning tests...`); + await runCommand("yarn", ["test"], configToEnv(config)); + } catch (err) { + console.error(err); + process.exit(1); + } finally { + console.log("Shutting down EdgeDB test cluster..."); + await shutdown(proc, managementConn); + console.log("EdgeDB test cluster is down..."); + } +})(); diff --git a/integration-tests/stable/tsconfig.json b/integration-tests/stable/tsconfig.json new file mode 100644 index 000000000..c91b8818e --- /dev/null +++ b/integration-tests/stable/tsconfig.json @@ -0,0 +1,110 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": ["./**/*.ts"] +} diff --git a/package.json b/package.json index 0fb5c023a..317f33ac1 100644 --- a/package.json +++ b/package.json @@ -2,19 +2,20 @@ "name": "root", "private": true, "workspaces": [ - "packages/*" + "packages/*", + "integration-tests/*" ], "packageManager": "yarn@1.22.19", "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", - "eslint": "^8.39.0", + "@typescript-eslint/eslint-plugin": "^5.60.1", + "@typescript-eslint/parser": "^5.60.1", + "eslint": "^8.43.0", "eslint-config-prettier": "^8.8.0", "prettier": "^2.8.8", "tslint": "^6.1.3", "tslint-config-prettier": "^1.18.0", "tslint-plugin-prettier": "^2.3.0", - "typescript": "^5.0.4" + "typescript": "5.0.4" }, "scripts": { "lint": "tslint 'packages/*/src/**/*.ts'", diff --git a/packages/driver/package.json b/packages/driver/package.json index 1e2a4524b..fb09db9fd 100644 --- a/packages/driver/package.json +++ b/packages/driver/package.json @@ -25,16 +25,16 @@ "edgeql-js": "./dist/cli.js" }, "devDependencies": { - "@js-temporal/polyfill": "^0.4.1", - "@types/jest": "^29.5.1", + "@js-temporal/polyfill": "0.4.3", + "@types/jest": "^29.5.2", "fast-check": "^3.10.0", - "get-stdin": "^7.0.0", - "globby": "^13.1.2", + "get-stdin": "^9.0.0", + "globby": "^13.2.0", "jest": "29.5.0", "jest-environment-jsdom": "^29.5.0", "ts-jest": "29.1.0", - "tsx": "3.12.6", - "typescript": "^5.0" + "tsx": "^3.12.7", + "typescript": "5.0.4" }, "scripts": { "build": "echo 'Building edgedb-js...' && rm -rf dist && yarn build:cjs && yarn build:deno", diff --git a/packages/generate/dbschema/default.esdl b/packages/generate/dbschema/default.esdl index 4099212d8..4bda52523 100644 --- a/packages/generate/dbschema/default.esdl +++ b/packages/generate/dbschema/default.esdl @@ -1,209 +1,3 @@ -using extension pgvector; - module default { - scalar type Genre extending enum<"Horror", "Action", "RomCom", "Science Fiction", "Select">; - global uuid_global -> uuid; - global num_global -> int64; - global arr_global -> array; - global tuple_global -> tuple; - global named_tuple_global -> tuple; - global str_global -> str; - global str_global_with_default -> str { - default := "hi mom"; - }; - multi global str_multi := {'hi', 'mom'}; - required global str_required -> str { - default := 'hi mom'; - }; - required multi global str_required_multi := {'hi', 'mom'}; - - scalar type global_seq extending sequence; - global seq_global -> global_seq; - - - - abstract link movie_character { - property character_name -> str; - } - - abstract type Person { - required property name -> str { - constraint exclusive; - }; - property height -> decimal; - } - - type Villain extending Person { - link nemesis -> Hero; - } - - type Hero extending Person { - property secret_identity -> str; - property number_of_movies -> int64; - multi link villains := . Genre; - property rating -> float64; - required property title -> str { - constraint exclusive; - }; - required property release_year -> year { - default := datetime_get(datetime_current(), 'year'); - } - multi link characters extending movie_character -> Person; - link profile -> Profile { - constraint exclusive; - } - constraint exclusive on ((.title, .release_year)); - } - - scalar type embedding extending ext::pgvector::vector<1234>; - - type PgVectorTest { - property test_embedding: embedding; - } - - type Profile { - property plot_summary -> str; - property slug -> str { - readonly := true; - } - property a -> str; - property b -> str; - property c -> str; - - constraint exclusive on (( .plot_summary, .slug )); - constraint exclusive on (((.a,.b,.c))); - } - - type User { - required property username -> str; - required multi link favourite_movies -> Movie; - } - - type AdminUser extending User { - overloaded required property username -> str { - constraint exclusive; - } - } - - type MovieShape { - } - - abstract type HasName { - property name -> str; - } - abstract type HasAge { - property age -> int64; - } - - scalar type bag_seq extending sequence; - - type Bag extending HasName, HasAge { - property secret_identity -> str; - property genre -> Genre; - property boolField -> bool; - property datetimeField -> datetime; - property localDateField -> cal::local_date; - property localTimeField -> cal::local_time; - property localDateTimeField -> cal::local_datetime; - property durationField -> duration; - property decimalField -> decimal; - property int64Field -> int64; - property int32Field -> int32; - property int16Field -> int16; - property float32Field -> float32; - property float64Field -> float64; - property bigintField -> bigint; - required multi property stringsMulti -> str; - property stringsArr -> array; - multi property stringMultiArr -> array; - property namedTuple -> tuple; - property unnamedTuple -> tuple; - property enumArr -> array; - property seqField -> bag_seq; - property jsonField -> json; - property arrTupleField -> array>; - property rangeField -> range; - } - - type Simple extending HasName, HasAge {} - - type X { - property a -> str; - property b -> int32; - } - type Y { - property a -> str; - property c -> bool; - } - type Z { - link xy -> X | Y; - } - - # Unicode handling - # https://github.com/edgedb/edgedb/blob/master/tests/schemas/dump02_default.esdl - - abstract annotation `🍿`; - - abstract constraint `🚀🍿`(max: int64) extending max_len_value; - - function `💯`(NAMED ONLY `🙀`: int64) -> int64 { - using ( - SELECT 100 - `🙀` - ); - - annotation `🍿` := 'fun!🚀'; - volatility := 'Immutable'; - } - - type `S p a M` { - required property `🚀` -> int32; - property c100 := (SELECT `💯`(`🙀` := .`🚀`)); - } - - type A { - required link `s p A m 🤞` -> `S p a M`; - } - - scalar type 你好 extending str; - - scalar type مرحبا extending 你好 { - constraint `🚀🍿`(100); - }; - - scalar type `🚀🚀🚀` extending مرحبا; - - type Łukasz { - required property `Ł🤞` -> `🚀🚀🚀` { - default := <`🚀🚀🚀`>'你好🤞' - } - index on (.`Ł🤞`); - - link `Ł💯` -> A { - property `🙀🚀🚀🚀🙀` -> `🚀🚀🚀`; - property `🙀مرحبا🙀` -> مرحبا { - constraint `🚀🍿`(200); - } - }; - } - -}; - -module `💯💯💯` { - function `🚀🙀🚀`(`🤞`: default::`🚀🚀🚀`) -> default::`🚀🚀🚀` - using ( - SELECT (`🤞` ++ 'Ł🙀') - ); -}; - -module extra { - global user_id -> uuid; } diff --git a/packages/generate/dbschema/queries/freeShape.edgeql.ts b/packages/generate/dbschema/queries/freeShape.edgeql.ts deleted file mode 100644 index ed0b1cb31..000000000 --- a/packages/generate/dbschema/queries/freeShape.edgeql.ts +++ /dev/null @@ -1,22 +0,0 @@ -// GENERATED by @edgedb/generate v0.0.7 -// Run 'npx @edgedb/generate queries' to re-generate - -import type {Executor} from "edgedb"; - -export async function freeShape(client: Executor, args: { - "data": string; -}): Promise<{ - "name": string; - "points": bigint; - "data": string; - "arg": [(string), ...(string)[]]; - "enums": ("Horror" | "Action" | "RomCom" | "Science Fiction")[]; -}> { - return client.queryRequiredSingle(`select { - name := "arg", - points := 1234n, - data := $data, - required multi arg := {'asdf'}, - enums := [Genre.Horror, Genre.Action] -};`, args); -} \ No newline at end of file diff --git a/packages/generate/jest.config.js b/packages/generate/jest.config.js index 14bb9c484..6e4fe963d 100644 --- a/packages/generate/jest.config.js +++ b/packages/generate/jest.config.js @@ -4,9 +4,5 @@ module.exports = { testPathIgnorePatterns: ["./dist", "./esm", "./mts", "./cjs", "./deno"], globalSetup: "./test/globalSetup.ts", transform: {}, - globals: { - "ts-jest": { - tsconfig: "tsconfig.json" - } - } + globals: {}, }; diff --git a/packages/generate/package.json b/packages/generate/package.json index adf01be6a..16dd542e8 100644 --- a/packages/generate/package.json +++ b/packages/generate/package.json @@ -21,20 +21,18 @@ "edgedb": "^1.3.2" }, "devDependencies": { - "@types/jest": "^29.5.1", - "@types/node": "^20.1.7", - "conditional-type-checks": "^1.0.5", - "edgedb": "^1.1.0", - "esbuild": "^0.15.7", - "globby": "^13.1.2", + "@types/jest": "^29.5.2", + "@types/node": "^20.3.2", + "conditional-type-checks": "^1.0.6", + "edgedb": "^1.3.2", + "esbuild": "^0.18.10", + "globby": "^13.2.0", "jest": "^29.5.0", - "superjson": "^1.7.5", + "superjson": "^1.12.4", "ts-jest": "^29.1.0", - "typescript": "^5.0" - }, - "dependencies": { - "chokidar": "^3.5.3" + "typescript": "5.0.4" }, + "dependencies": {}, "scripts": { "play": "tsx playground.ts", "build": "rm -rf dist && yarn build:cjs && yarn build:esm && yarn build:deno && chmod +x dist/cli.js && yarn syntax:make && yarn syntax:clean && tsx embedVersion.ts dist/commandutil.js", @@ -46,15 +44,7 @@ "build:fast": "npx esbuild --tsconfig=tsconfig.build.json --outdir=dist --platform=node --format=cjs src/**/*.ts src/*.ts && yarn syntax:make", "watch": "nodemon --ignore dist --ignore dbschema/edgeql-js -x ", "generate": "./dist/cli.js", - "test": "yarn test:ts && yarn test:non_ts", - "test:ts": "NODE_OPTIONS=\"--experimental-vm-modules\" yarn generate edgeql-js && yarn generate queries --file && yarn generate interfaces && jest --detectOpenHandles --forceExit", - "test:non_ts": "yarn test:esm && yarn test:cjs && yarn test:mts && yarn test:deno", - "test:esm": "yarn generate queries --target esm --file test/esm/queries && yarn generate edgeql-js --target esm --output-dir test/esm/edgeql-js && cd test/esm && node test.js", - "test:cjs": "yarn generate queries --target cjs --file test/cjs/queries && yarn generate edgeql-js --target cjs --output-dir test/cjs/edgeql-js && cd test/cjs && node test.js", - "test:mts": "yarn generate queries --target mts --file test/mts/queries && yarn generate edgeql-js --target mts --output-dir test/mts/edgeql-js && cd test/mts && yarn build && node dist/test.js", - "test:deno": "cd test/deno && deno task edgeql-js && deno task queries && deno task play", - "test:ci": "tsx test/testRunner.ts", - "test:v1": "tsx test/testQBv1.ts", - "setup:v1": "edgedb project init --no-migrations && edgedb migrate --to-revision m135rscrsthtlntxhacevxtvytgwf2vjyqfwvnwod5jihwpzp2zgyq" + "test": "NODE_OPTIONS=\"--experimental-vm-modules\" yarn generate edgeql-js && yarn generate queries --file && yarn generate interfaces && jest --detectOpenHandles --forceExit", + "test:ci": "tsx test/testRunner.ts" } } diff --git a/packages/generate/test/deno/import_map.json b/packages/generate/test/deno/import_map.json deleted file mode 100644 index 37a53c910..000000000 --- a/packages/generate/test/deno/import_map.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "imports": { - "edgedb": "../../../deno/mod.ts", - "edgedb/": "../../../deno/" - } -} diff --git a/packages/generate/test/testRunner.ts b/packages/generate/test/testRunner.ts index eb1b2b562..0ce782f75 100644 --- a/packages/generate/test/testRunner.ts +++ b/packages/generate/test/testRunner.ts @@ -7,14 +7,10 @@ import { getServerCommand, getWSLPath, startServer, - type EdgeDBVersion, runCommand, configToEnv, } from "../../driver/test/testUtil"; -// @ts-expect-error -import jestConfig from "../jest.config.js"; - (async function main() { console.log("\nStarting EdgeDB test cluster..."); @@ -29,37 +25,10 @@ import jestConfig from "../jest.config.js"; const managementConn = await createClient(config).ensureConnected(); - const version = await managementConn.queryRequiredSingle( - `select sys::get_version()` - ); - try { - await applyMigrations(config, { - flags: - version.major < 3 - ? [ - "--to-revision", - "m1sxhoqfjqn7vtpmatzanmwydtxndf3jlf33npkblmya42fx3bcdoa", - ] - : undefined, - }); + await applyMigrations(config); console.log(`\nRunning tests...`); - await runCommand( - "yarn", - [ - "test:ts", - ...(version.major < 3 - ? [ - `--testPathIgnorePatterns="${[ - "pgvector", - ...jestConfig.testPathIgnorePatterns, - ].join("|")}"`, - ] - : []), - ], - configToEnv(config) - ); - await runCommand("yarn", ["test:non_ts"], configToEnv(config)); + await runCommand("yarn", ["test"], configToEnv(config)); } catch (err) { console.error(err); process.exit(1); diff --git a/yarn.lock b/yarn.lock index 0f4ee281b..992b1cede 100644 --- a/yarn.lock +++ b/yarn.lock @@ -328,121 +328,221 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz#4aa8d8afcffb4458736ca9b32baa97d7cb5861ea" integrity sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw== -"@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/android-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.10.tgz#a416286e6271a8f050869df76ecfc4b822103bbe" + integrity sha512-ynm4naLbNbK0ajf9LUWtQB+6Vfg1Z/AplArqr4tGebC00Z6m9Y91OVIcjDa461wGcZwcaHYaZAab4yJxfhisTQ== "@esbuild/android-arm@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.18.tgz#74a7e95af4ee212ebc9db9baa87c06a594f2a427" integrity sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw== +"@esbuild/android-arm@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.10.tgz#aff8cfebd2ed3a52f4d4a923360e7abd0817c34c" + integrity sha512-3KClmVNd+Fku82uZJz5C4Rx8m1PPmWUFz5Zkw8jkpZPOmsq+EG1TTOtw1OXkHuX3WczOFQigrtf60B1ijKwNsg== + "@esbuild/android-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.18.tgz#1dcd13f201997c9fe0b204189d3a0da4eb4eb9b6" integrity sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg== +"@esbuild/android-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.10.tgz#f3b1f52fd6bfdf79d5b9b5965798ff3a8afa584d" + integrity sha512-vFfXj8P9Yfjh54yqUDEHKzqzYuEfPyAOl3z7R9hjkwt+NCvbn9VMxX+IILnAfdImRBfYVItgSUsqGKhJFnBwZw== + "@esbuild/darwin-arm64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz#444f3b961d4da7a89eb9bd35cfa4415141537c2a" integrity sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ== +"@esbuild/darwin-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.10.tgz#70644fc5f41bfe90079df449506de2a568f4c08f" + integrity sha512-k2OJQ7ZxE6sVc91+MQeZH9gFeDAH2uIYALPAwTjTCvcPy9Dzrf7V7gFUQPYkn09zloWhQ+nvxWHia2x2ZLR0sQ== + "@esbuild/darwin-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz#a6da308d0ac8a498c54d62e0b2bfb7119b22d315" integrity sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A== +"@esbuild/darwin-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.10.tgz#a8a8466559af303db881c7a760553bfc00593a62" + integrity sha512-tnz/mdZk1L1Z3WpGjin/L2bKTe8/AKZpI8fcCLtH+gq8WXWsCNJSxlesAObV4qbtTl6pG5vmqFXfWUQ5hV8PAQ== + "@esbuild/freebsd-arm64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz#b83122bb468889399d0d63475d5aea8d6829c2c2" integrity sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA== +"@esbuild/freebsd-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.10.tgz#eda518b8d9b38b6c17c2c58600f8b97ff7acd73b" + integrity sha512-QJluV0LwBrbHnYYwSKC+K8RGz0g/EyhpQH1IxdoFT0nM7PfgjE+aS8wxq/KFEsU0JkL7U/EEKd3O8xVBxXb2aA== + "@esbuild/freebsd-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz#af59e0e03fcf7f221b34d4c5ab14094862c9c864" integrity sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew== +"@esbuild/freebsd-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.10.tgz#e96ba0a380ec38055fd4654dd7a96c90e32e4bbb" + integrity sha512-Hi/ycUkS6KTw+U9G5PK5NoK7CZboicaKUSVs0FSiPNtuCTzK6HNM4DIgniH7hFaeuszDS9T4dhAHWiLSt/Y5Ng== + "@esbuild/linux-arm64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz#8551d72ba540c5bce4bab274a81c14ed01eafdcf" integrity sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ== +"@esbuild/linux-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.10.tgz#63255f396ab465081bf37e4751bfade9578a8ff0" + integrity sha512-Nz6XcfRBOO7jSrVpKAyEyFOPGhySPNlgumSDhWAspdQQ11ub/7/NZDMhWDFReE9QH/SsCOCLQbdj0atAk/HMOQ== + "@esbuild/linux-arm@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz#e09e76e526df4f665d4d2720d28ff87d15cdf639" integrity sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg== +"@esbuild/linux-arm@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.10.tgz#9a589ffb96837b7536cfa6739dd2e666cc5e548e" + integrity sha512-HfFoxY172tVHPIvJy+FHxzB4l8xU7e5cxmNS11cQ2jt4JWAukn/7LXaPdZid41UyTweqa4P/1zs201gRGCTwHw== + "@esbuild/linux-ia32@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz#47878860ce4fe73a36fd8627f5647bcbbef38ba4" integrity sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ== -"@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== +"@esbuild/linux-ia32@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.10.tgz#291aba2de93e8cdf77d607f54e554ce4ffd2f5ef" + integrity sha512-otMdmSmkMe+pmiP/bZBjfphyAsTsngyT9RCYwoFzqrveAbux9nYitDTpdgToG0Z0U55+PnH654gCH2GQ1aB6Yw== "@esbuild/linux-loong64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz#3f8fbf5267556fc387d20b2e708ce115de5c967a" integrity sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ== +"@esbuild/linux-loong64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.10.tgz#ff0fe68c137dc165277b559a747c5debe6a8baec" + integrity sha512-t8tjFuON1koxskzQ4VFoh0T5UDUMiLYjwf9Wktd0tx8AoK6xgU+5ubKOpWpcnhEQ2tESS5u0v6QuN8PX/ftwcQ== + "@esbuild/linux-mips64el@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz#9d896d8f3c75f6c226cbeb840127462e37738226" integrity sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA== +"@esbuild/linux-mips64el@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.10.tgz#99801b17fe2bffcce5cf9375731adf3025e7aee9" + integrity sha512-+dUkcVzcfEJHz3HEnVpIJu8z8Wdn2n/nWMWdl6FVPFGJAVySO4g3+XPzNKFytVFwf8hPVDwYXzVcu8GMFqsqZw== + "@esbuild/linux-ppc64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz#3d9deb60b2d32c9985bdc3e3be090d30b7472783" integrity sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ== +"@esbuild/linux-ppc64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.10.tgz#b5d179a6271d123b20694402364162bfa583b35b" + integrity sha512-sO3PjjxEGy+PY2qkGe2gwJbXdZN9wAYpVBZWFD0AwAoKuXRkWK0/zaMQ5ekUFJDRDCRm8x5U0Axaub7ynH/wVg== + "@esbuild/linux-riscv64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz#8a943cf13fd24ff7ed58aefb940ef178f93386bc" integrity sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA== +"@esbuild/linux-riscv64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.10.tgz#c34b55bcc71d07685e4b836659f299cd4f6889ec" + integrity sha512-JDtdbJg3yjDeXLv4lZYE1kiTnxv73/8cbPHY9T/dUKi8rYOM/k5b3W4UJLMUksuQ6nTm5c89W1nADsql6FW75A== + "@esbuild/linux-s390x@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz#66cb01f4a06423e5496facabdce4f7cae7cb80e5" integrity sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw== +"@esbuild/linux-s390x@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.10.tgz#84318e86ee1e377c603c7b5359f5f67771eddd99" + integrity sha512-NLuSKcp8WckjD2a7z5kzLiCywFwBTMlIxDNuud1AUGVuwBBJSkuubp6cNjJ0p5c6CZaA3QqUGwjHJBiG1SoOFw== + "@esbuild/linux-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz#23c26050c6c5d1359c7b774823adc32b3883b6c9" integrity sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA== +"@esbuild/linux-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.10.tgz#631650dc12f902535dea84b356709ba4ca893071" + integrity sha512-wj2KRsCsFusli+6yFgNO/zmmLslislAWryJnodteRmGej7ZzinIbMdsyp13rVGde88zxJd5vercNYK9kuvlZaQ== + "@esbuild/netbsd-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz#789a203d3115a52633ff6504f8cbf757f15e703b" integrity sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg== +"@esbuild/netbsd-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.10.tgz#436c8c8590eb7638e9d811ce5aae5e44b7dd2e45" + integrity sha512-pQ9QqxEPI3cVRZyUtCoZxhZK3If+7RzR8L2yz2+TDzdygofIPOJFaAPkEJ5rYIbUO101RaiYxfdOBahYexLk5A== + "@esbuild/openbsd-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz#d7b998a30878f8da40617a10af423f56f12a5e90" integrity sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA== +"@esbuild/openbsd-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.10.tgz#69945ceeecfb30c20b64068d14a2cf9853254035" + integrity sha512-k8GTIIW9I8pEEfoOUm32TpPMgSg06JhL5DO+ql66aLTkOQUs0TxCA67Wi7pv6z8iF8STCGcNbm3UWFHLuci+ag== + "@esbuild/sunos-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz#ecad0736aa7dae07901ba273db9ef3d3e93df31f" integrity sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg== +"@esbuild/sunos-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.10.tgz#2ad291b87225f82490d3ffd7c8b643e45fe0d616" + integrity sha512-vIGYJIdEI6d4JBucAx8py792G8J0GP40qSH+EvSt80A4zvGd6jph+5t1g+eEXcS2aRpgZw6CrssNCFZxTdEsxw== + "@esbuild/win32-arm64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz#58dfc177da30acf956252d7c8ae9e54e424887c4" integrity sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg== +"@esbuild/win32-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.10.tgz#f12fcff13b9dbd3e80481f4cb6282708ce7794bb" + integrity sha512-kRhNcMZFGMW+ZHCarAM1ypr8OZs0k688ViUCetVCef9p3enFxzWeBg9h/575Y0nsFu0ZItluCVF5gMR2pwOEpA== + "@esbuild/win32-ia32@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz#340f6163172b5272b5ae60ec12c312485f69232b" integrity sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw== +"@esbuild/win32-ia32@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.10.tgz#e369e9bedf6b548a62b284320c6de08982d045da" + integrity sha512-AR9PX1whYaYh9p0EOaKna0h48F/A101Mt/ag72+kMkkBZXPQ7cjbz2syXI/HI3OlBdUytSdHneljfjvUoqwqiQ== + "@esbuild/win32-x64@0.17.18": version "0.17.18" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== +"@esbuild/win32-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.10.tgz#141d8e73b74252eef46a5433f69d15890d82b5e3" + integrity sha512-5sTkYhAGHNRr6bVf4RM0PsscqVr6/DBYdrlMh168oph3usid3lKHcHEEHmr34iZ9GHeeg2juFOxtpl6XyC3tpw== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -455,14 +555,14 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== -"@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.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" + integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.1" + espree "^9.5.2" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -470,15 +570,15 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" - integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== +"@eslint/js@8.43.0": + version "8.43.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.43.0.tgz#559ca3d9ddbd6bf907ad524320a0d14b85586af0" + integrity sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg== -"@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.10": + version "0.11.10" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" + integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -739,7 +839,7 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@js-temporal/polyfill@^0.4.1": +"@js-temporal/polyfill@0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@js-temporal/polyfill/-/polyfill-0.4.3.tgz#e8f8cf86745eb5050679c46a5ebedb9a9cc1f09b" integrity sha512-6Fmjo/HlkyVCmJzAPnvtEWlcbQUSRhi8qlN9EtJA/wP7FqXsevLLrlojR44kzNzrRkpf7eDJ+z7b4xQD/Ycypw== @@ -851,10 +951,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.1": - version "29.5.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" - integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== +"@types/jest@^29.5.2": + version "29.5.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.2.tgz#86b4afc86e3a8f3005b297ed8a72494f89e6395b" + integrity sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -878,10 +978,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.0.tgz#4668bc392bb6938637b47e98b1f2ed5426f33316" integrity sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ== -"@types/node@^20.1.7": - version "20.1.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.7.tgz#ce10c802f7731909d0a44ac9888e8b3a9125eb62" - integrity sha512-WCuw/o4GSwDGMoonES8rcvwsig77dGCMbZDrZr2x4ZZiNW4P/gcoZXe/0twgtobcTkmg9TuKflxYL/DuwDyJzg== +"@types/node@^20.3.2": + version "20.3.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.2.tgz#fa6a90f2600e052a03c18b8cb3fd83dd4e599898" + integrity sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw== "@types/prettier@^2.1.5": version "2.7.2" @@ -915,15 +1015,15 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz#9b09ee1541bff1d2cebdcb87e7ce4a4003acde08" - integrity sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg== +"@typescript-eslint/eslint-plugin@^5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz#81382d6ecb92b8dda70e91f9035611cb2fecd1c3" + integrity sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw== dependencies: "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/type-utils" "5.59.1" - "@typescript-eslint/utils" "5.59.1" + "@typescript-eslint/scope-manager" "5.60.1" + "@typescript-eslint/type-utils" "5.60.1" + "@typescript-eslint/utils" "5.60.1" debug "^4.3.4" grapheme-splitter "^1.0.4" ignore "^5.2.0" @@ -931,72 +1031,72 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.1.tgz#73c2c12127c5c1182d2e5b71a8fa2a85d215cbb4" - integrity sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g== +"@typescript-eslint/parser@^5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.60.1.tgz#0f2f58209c0862a73e3d5a56099abfdfa21d0fd3" + integrity sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q== dependencies: - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/typescript-estree" "5.59.1" + "@typescript-eslint/scope-manager" "5.60.1" + "@typescript-eslint/types" "5.60.1" + "@typescript-eslint/typescript-estree" "5.60.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz#8a20222719cebc5198618a5d44113705b51fd7fe" - integrity sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA== +"@typescript-eslint/scope-manager@5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz#35abdb47f500c68c08f2f2b4f22c7c79472854bb" + integrity sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ== dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" + "@typescript-eslint/types" "5.60.1" + "@typescript-eslint/visitor-keys" "5.60.1" -"@typescript-eslint/type-utils@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz#63981d61684fd24eda2f9f08c0a47ecb000a2111" - integrity sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw== +"@typescript-eslint/type-utils@5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz#17770540e98d65ab4730c7aac618003f702893f4" + integrity sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A== dependencies: - "@typescript-eslint/typescript-estree" "5.59.1" - "@typescript-eslint/utils" "5.59.1" + "@typescript-eslint/typescript-estree" "5.60.1" + "@typescript-eslint/utils" "5.60.1" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.1.tgz#03f3fedd1c044cb336ebc34cc7855f121991f41d" - integrity sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg== +"@typescript-eslint/types@5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.60.1.tgz#a17473910f6b8d388ea83c9d7051af89c4eb7561" + integrity sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg== -"@typescript-eslint/typescript-estree@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz#4aa546d27fd0d477c618f0ca00b483f0ec84c43c" - integrity sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA== +"@typescript-eslint/typescript-estree@5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz#8c71824b7165b64d5ebd7aa42968899525959834" + integrity sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw== dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" + "@typescript-eslint/types" "5.60.1" + "@typescript-eslint/visitor-keys" "5.60.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.1.tgz#d89fc758ad23d2157cfae53f0b429bdf15db9473" - integrity sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA== +"@typescript-eslint/utils@5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.60.1.tgz#6861ebedbefba1ac85482d2bdef6f2ff1eb65b80" + integrity sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/typescript-estree" "5.59.1" + "@typescript-eslint/scope-manager" "5.60.1" + "@typescript-eslint/types" "5.60.1" + "@typescript-eslint/typescript-estree" "5.60.1" eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz#0d96c36efb6560d7fb8eb85de10442c10d8f6058" - integrity sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA== +"@typescript-eslint/visitor-keys@5.60.1": + version "5.60.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz#19a877358bf96318ec35d90bfe6bd1445cce9434" + integrity sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw== dependencies: - "@typescript-eslint/types" "5.59.1" + "@typescript-eslint/types" "5.60.1" eslint-visitor-keys "^3.3.0" abab@^2.0.6: @@ -1075,7 +1175,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.3: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -1170,11 +1270,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1183,7 +1278,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1266,21 +1361,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - ci-info@^3.2.0: version "3.8.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" @@ -1351,7 +1431,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -conditional-type-checks@^1.0.5: +conditional-type-checks@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/conditional-type-checks/-/conditional-type-checks-1.0.6.tgz#8b857895d624cdb982bc970bd3b318093e44d213" integrity sha512-3vyi+yNcmKq+xl1sTX7Ta+4pUvjusMYbC6FSbrS6YJV8TI51wiRn24u4bfdFVhDKKH5GtpKQzxW7bqXbPWllgQ== @@ -1503,133 +1583,33 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -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== +esbuild@^0.18.10: + version "0.18.10" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.10.tgz#f0e99e8a957990241be04f2454d7e2cb0d78b43f" + integrity sha512-33WKo67auOXzZHBY/9DTJRo7kIvfU12S+D4sp2wIz39N88MDIaCGyCwbW01RR70pK6Iya0I74lHEpyLfFqOHPA== 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" + "@esbuild/android-arm" "0.18.10" + "@esbuild/android-arm64" "0.18.10" + "@esbuild/android-x64" "0.18.10" + "@esbuild/darwin-arm64" "0.18.10" + "@esbuild/darwin-x64" "0.18.10" + "@esbuild/freebsd-arm64" "0.18.10" + "@esbuild/freebsd-x64" "0.18.10" + "@esbuild/linux-arm" "0.18.10" + "@esbuild/linux-arm64" "0.18.10" + "@esbuild/linux-ia32" "0.18.10" + "@esbuild/linux-loong64" "0.18.10" + "@esbuild/linux-mips64el" "0.18.10" + "@esbuild/linux-ppc64" "0.18.10" + "@esbuild/linux-riscv64" "0.18.10" + "@esbuild/linux-s390x" "0.18.10" + "@esbuild/linux-x64" "0.18.10" + "@esbuild/netbsd-x64" "0.18.10" + "@esbuild/openbsd-x64" "0.18.10" + "@esbuild/sunos-x64" "0.18.10" + "@esbuild/win32-arm64" "0.18.10" + "@esbuild/win32-ia32" "0.18.10" + "@esbuild/win32-x64" "0.18.10" esbuild@~0.17.6: version "0.17.18" @@ -1720,21 +1700,26 @@ eslint-scope@^7.2.0: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: +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.39.0: - version "8.39.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.39.0.tgz#7fd20a295ef92d43809e914b70c39fd5a23cf3f1" - integrity sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og== +eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint@^8.43.0: + version "8.43.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.43.0.tgz#3e8c6066a57097adfd9d390b8fc93075f257a094" + integrity sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.39.0" - "@humanwhocodes/config-array" "^0.11.8" + "@eslint/eslintrc" "^2.0.3" + "@eslint/js" "8.43.0" + "@humanwhocodes/config-array" "^0.11.10" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" @@ -1744,8 +1729,8 @@ eslint@^8.39.0: doctrine "^3.0.0" escape-string-regexp "^4.0.0" eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.0" - espree "^9.5.1" + eslint-visitor-keys "^3.4.1" + espree "^9.5.2" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -1753,13 +1738,12 @@ eslint@^8.39.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" @@ -1771,14 +1755,14 @@ eslint@^8.39.0: 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== +espree@^9.5.2: + version "9.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.0" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -1979,10 +1963,10 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== +get-stdin@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" + integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== get-stream@^6.0.0: version "6.0.1" @@ -1994,7 +1978,7 @@ get-tsconfig@^4.4.0: resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.5.0.tgz#6d52d1c7b299bd3ee9cd7638561653399ac77b0f" integrity sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ== -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2044,10 +2028,10 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.1.2: - version "13.1.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.4.tgz#2f91c116066bcec152465ba36e5caa4a13c01317" - integrity sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g== +globby@^13.2.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.0.tgz#7dd5678d765c4680c2e6d106230d86cb727cb1af" + integrity sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ== dependencies: dir-glob "^3.0.1" fast-glob "^3.2.11" @@ -2065,6 +2049,11 @@ grapheme-splitter@^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== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2167,13 +2156,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-core-module@^2.11.0: version "2.12.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" @@ -2196,7 +2178,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -2655,11 +2637,6 @@ jest@29.5.0, jest@^29.5.0: import-local "^3.0.2" jest-cli "^29.5.0" -js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2909,7 +2886,7 @@ node-releases@^2.0.8: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -3051,7 +3028,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -3130,13 +3107,6 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3330,10 +3300,10 @@ strip-json-comments@^3.1.0, strip-json-comments@^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== -superjson@^1.7.5: - version "1.12.3" - resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.12.3.tgz#383aacfd795c6eef24c383c70154c6cbbcbfb31a" - integrity sha512-0j+U70KUtP8+roVPbwfqkyQI7lBt7ETnuA7KXbTDX3mCKiD/4fXs2ldKSMdt0MCfpTwiMxo20yFU3vu6ewETpQ== +superjson@^1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.12.4.tgz#cfea35b0d1eb0f12d8b185f1d871272555f5a61f" + integrity sha512-vkpPQAxdCg9SLfPv5GPC5fnGrui/WryktoN9O5+Zif/14QIMjw+RITf/5LbBh+9QpBFb3KNvJth+puz2H8o6GQ== dependencies: copy-anything "^3.0.2" @@ -3436,9 +3406,9 @@ tslib@^1.13.0, tslib@^1.7.1, tslib@^1.8.1: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== tslint-config-prettier@^1.18.0: version "1.18.0" @@ -3487,10 +3457,10 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tsx@3.12.6: - version "3.12.6" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.12.6.tgz#36b3693e48b8392da374487190972c7b80e433b4" - integrity sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ== +tsx@^3.12.7: + version "3.12.7" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.12.7.tgz#b3b8b0fc79afc8260d1e14f9e995616c859a91e9" + integrity sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw== dependencies: "@esbuild-kit/cjs-loader" "^2.4.2" "@esbuild-kit/core-utils" "^3.0.0" @@ -3527,7 +3497,7 @@ 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== -typescript@^5.0, typescript@^5.0.4: +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==