From 3188fe516c96b28a9606e955ede976247ec7f418 Mon Sep 17 00:00:00 2001 From: Natoandro Date: Tue, 10 Dec 2024 00:03:50 +0300 Subject: [PATCH 1/6] wip --- .ghjk/lock.json | 168 +++++++------- deno.lock | 292 ++----------------------- ghjk.ts | 3 +- src/typegate/src/typegate/register.ts | 3 +- src/typegate/src/typegraph/versions.ts | 38 +++- src/typegraph/core/src/typegraph.rs | 2 +- tests/e2e/published/published_test.ts | 104 +++------ tools/consts.ts | 5 +- whiz.yaml | 2 +- 9 files changed, 182 insertions(+), 435 deletions(-) diff --git a/.ghjk/lock.json b/.ghjk/lock.json index 98ab0e57f..a2e92294b 100644 --- a/.ghjk/lock.json +++ b/.ghjk/lock.json @@ -972,96 +972,96 @@ "ty": "denoFile@v1", "key": "clean-node", "desc": "Remove all node_modules directories in tree and other js artifacts.", - "envKey": "bciqcqqs4e5l7nqt57e4bku3gjdxs2iruhfdl2ocayrkkcs4otx7ig7a" + "envKey": "bciqdjeti6ggn2dvpporxwb2phkde5ebqydekhmnwsadglmaulgfvkpq" }, "clean-rust": { "ty": "denoFile@v1", "key": "clean-rust", "desc": "Clean cache of all cargo workspaces in repo.", - "envKey": "bciqof7ogmp2lx2bzmkbrtmdmrmj7seytb6bl2sb4uhnsxkf5v24m75i" + "envKey": "bciqo2beyk2zq4cqxjmaidvdvyqadpxjj7cg3s2gsmffvbu3dsorujpq" }, "version-bump": { "ty": "denoFile@v1", "key": "version-bump", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "version-print": { "ty": "denoFile@v1", "key": "version-print", "desc": "Print $METATYPE_VERSION", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "test-rust": { "ty": "denoFile@v1", "key": "test-rust", - "envKey": "bciqc4wyajjcgt24t2uhjf7zkzhq6gy2iektcnmjrnrkj3u2mhlzhcma" + "envKey": "bciqbpi44mvq77dlpyhj6f3qd65he7briefiuow3ikuf63fl7sog5axq" }, "test-website": { "ty": "denoFile@v1", "key": "test-website", "workingDir": "./docs/metatype.dev", - "envKey": "bciqcqqs4e5l7nqt57e4bku3gjdxs2iruhfdl2ocayrkkcs4otx7ig7a" + "envKey": "bciqdjeti6ggn2dvpporxwb2phkde5ebqydekhmnwsadglmaulgfvkpq" }, "test-e2e": { "ty": "denoFile@v1", "key": "test-e2e", "desc": "Shorthand for `tools/test.ts`", - "envKey": "bciqbjavwy7rbire3zwlpgo2ifwzgnm6ywxqswnh6qxezwuvc4bqhrca" + "envKey": "bciqgfkhptprs54tg3wl45acxctzc2lu4v2xlh3slk6w4m5g5ctysv4a" }, "lock-sed": { "ty": "denoFile@v1", "key": "lock-sed", "desc": "Update versions", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "lint-deno": { "ty": "denoFile@v1", "key": "lint-deno", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "lint-udeps": { "ty": "denoFile@v1", "key": "lint-udeps", "desc": "Check for unused cargo depenencies", - "envKey": "bciqkfzynmgivxtsz2qoytkbvn4rwxe3ngzodvhxvvlqqlt4b62miuyy" + "envKey": "bciqexkzgjrssbarv2i34mmu26kjs4iqkbpbm5ffwbf5xqpmg54wk7uq" }, "install-wasi-adapter": { "ty": "denoFile@v1", "key": "install-wasi-adapter", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "install-website": { "ty": "denoFile@v1", "key": "install-website", - "envKey": "bciqcqqs4e5l7nqt57e4bku3gjdxs2iruhfdl2ocayrkkcs4otx7ig7a" + "envKey": "bciqdjeti6ggn2dvpporxwb2phkde5ebqydekhmnwsadglmaulgfvkpq" }, "install-ts": { "ty": "denoFile@v1", "key": "install-ts", - "envKey": "bciqcqqs4e5l7nqt57e4bku3gjdxs2iruhfdl2ocayrkkcs4otx7ig7a" + "envKey": "bciqdjeti6ggn2dvpporxwb2phkde5ebqydekhmnwsadglmaulgfvkpq" }, "install-py": { "ty": "denoFile@v1", "key": "install-py", - "envKey": "bciqovedn2du5h56q6t4nolxi47yddf76bgaobbexfcxsjyuzj465tri" + "envKey": "bciqkgzicthxfj4ol55smhozlncz2qcjqiyfieya5tpadsw3nhr62mlq" }, "install-sys": { "ty": "denoFile@v1", "key": "install-sys", "desc": "Print a command you can use to install system items", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "gen-subs-protoc": { "ty": "denoFile@v1", "key": "gen-subs-protoc", "workingDir": "src/substantial", "desc": "Regenerate substantial types", - "envKey": "bciqifnqvvzjvxnddwvnxomtrjtti2f5iefaj2l3aoz732lrnmg4utvq" + "envKey": "bciqbwqfy7ssmgbvaob7lkcoda5bqcj2gjmuw7eld27y2gbupi3b6v5q" }, "gen-pyrt-bind": { "ty": "denoFile@v1", "key": "gen-pyrt-bind", - "envKey": "bciqa4zotbgmulpg3cutg6nu3ptq5merbt2gbf5a26twwcfe7djxchsi" + "envKey": "bciqbs2et5k6assk4valtouiftbsxzowucfeacwviwidnuau34ebv7qa" }, "build-pyrt": { "ty": "denoFile@v1", @@ -1069,84 +1069,84 @@ "dependsOn": [ "gen-pyrt-bind" ], - "envKey": "bciqa4zotbgmulpg3cutg6nu3ptq5merbt2gbf5a26twwcfe7djxchsi" + "envKey": "bciqbs2et5k6assk4valtouiftbsxzowucfeacwviwidnuau34ebv7qa" }, "fetch-deno": { "ty": "denoFile@v1", "key": "fetch-deno", "desc": "Cache remote deno modules.", - "envKey": "bciqcqqs4e5l7nqt57e4bku3gjdxs2iruhfdl2ocayrkkcs4otx7ig7a" + "envKey": "bciqdjeti6ggn2dvpporxwb2phkde5ebqydekhmnwsadglmaulgfvkpq" }, "dev-website": { "ty": "denoFile@v1", "key": "dev-website", "workingDir": "./docs/metatype.dev", "desc": "Launch the website", - "envKey": "bciqgrksux7l63plnyfryiqoth7wghawzcxmptsdw7qlbxpeytpot6fq" + "envKey": "bciqpsctlw7xcrq7tireajcbbystmm3fhtvk4kmvwpzcu5plp2imucvi" }, "dev-gate6": { "ty": "denoFile@v1", "key": "dev-gate6", "desc": "Launch the typegate from a locally found meta bin.", - "envKey": "bciqk7rioqxzcpzf572poq2vwefpcmqnboofojgkgonvpih3q6wwyldq" + "envKey": "bciqcy6a27uzjhcj3e5xytw4papwmehbgm6fcbaedufwpnf6v6sp4wcq" }, "dev-gate5": { "ty": "denoFile@v1", "key": "dev-gate5", "desc": "Launch the typegate from the latests published image.", - "envKey": "bciqk7rioqxzcpzf572poq2vwefpcmqnboofojgkgonvpih3q6wwyldq" + "envKey": "bciqcy6a27uzjhcj3e5xytw4papwmehbgm6fcbaedufwpnf6v6sp4wcq" }, "dev-gate4": { "ty": "denoFile@v1", "key": "dev-gate4", "desc": "Launch the typegate from the locally built typegate image.", - "envKey": "bciqk7rioqxzcpzf572poq2vwefpcmqnboofojgkgonvpih3q6wwyldq" + "envKey": "bciqcy6a27uzjhcj3e5xytw4papwmehbgm6fcbaedufwpnf6v6sp4wcq" }, "dev-gate3": { "ty": "denoFile@v1", "key": "dev-gate3", "desc": "Launch the typegate from meta-cli cmd.", - "envKey": "bciqk7rioqxzcpzf572poq2vwefpcmqnboofojgkgonvpih3q6wwyldq" + "envKey": "bciqcy6a27uzjhcj3e5xytw4papwmehbgm6fcbaedufwpnf6v6sp4wcq" }, "dev-gate2": { "ty": "denoFile@v1", "key": "dev-gate2", "desc": "Launch the typegate in sync mode.", - "envKey": "bciqe4fan2davv7bngzw6aygwwbrd7vjviea4rylpwikafl4kqyaxyuq" + "envKey": "bciqcus7eso3tgulos7mstngakchermtlt46ksfl4mbsoqyle3gx7tla" }, "dev-gate1": { "ty": "denoFile@v1", "key": "dev-gate1", "desc": "Launch the typegate in single-instance mode.", - "envKey": "bciqk7rioqxzcpzf572poq2vwefpcmqnboofojgkgonvpih3q6wwyldq" + "envKey": "bciqcy6a27uzjhcj3e5xytw4papwmehbgm6fcbaedufwpnf6v6sp4wcq" }, "dev-eg-tgraphs": { "ty": "denoFile@v1", "key": "dev-eg-tgraphs", "desc": "meta dev example/typegraphs", - "envKey": "bciqlb6jtozvezqdgkfkfxlztreqi2j6lxqdk5zvvlbc2o5ka7qtljji" + "envKey": "bciqapaicf5avwzknht5btyamhy5vbivdzpz3zja5szsw5rhzp25yaza" }, "dev-compose": { "ty": "denoFile@v1", "key": "dev-compose", "desc": "Wrapper around docker compose to manage runtime dependencies", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "dev": { "ty": "denoFile@v1", "key": "dev", "desc": "Execute tools/*.ts scripts.", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "build-tgraph-ts-jsr": { "ty": "denoFile@v1", "key": "build-tgraph-ts-jsr", - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "build-tgraph-core": { "ty": "denoFile@v1", "key": "build-tgraph-core", - "envKey": "bciqkazb54zk6wdbxpizobukdsz5ruxrtlkf6bfwvctdiwzq6lz7unsq" + "envKey": "bciqay3wlzl37o3e5sleadckz3lc3ku7bwxhtmcp253zu37itg6lop4y" }, "build-tgraph-py": { "ty": "denoFile@v1", @@ -1154,7 +1154,7 @@ "dependsOn": [ "build-tgraph-core" ], - "envKey": "bciqly23hzeass3kah6rgds4wyqenzsrcmtru7nsvht7t23dsjvgynyi" + "envKey": "bciqkwu4gv6lblxqmz7qn2lcpoqj734thuq6xvrj7n6olow2dxtzyb7a" }, "build-tgraph-ts": { "ty": "denoFile@v1", @@ -1162,7 +1162,7 @@ "dependsOn": [ "build-tgraph-core" ], - "envKey": "bciqasv6wmp2sicgg5dbbjxiv5ojm3t3ga3e75y5igacjq4zureobu6q" + "envKey": "bciqjt6brrpsukhzp7rtwcque7ltthdnfx3rqjly6w3jgivxixs6dmlq" }, "build-tgraph-ts-node": { "ty": "denoFile@v1", @@ -1170,7 +1170,7 @@ "dependsOn": [ "build-tgraph-ts" ], - "envKey": "bciqasv6wmp2sicgg5dbbjxiv5ojm3t3ga3e75y5igacjq4zureobu6q" + "envKey": "bciqjt6brrpsukhzp7rtwcque7ltthdnfx3rqjly6w3jgivxixs6dmlq" }, "build-tgraph": { "ty": "denoFile@v1", @@ -1179,12 +1179,12 @@ "build-tgraph-py", "build-tgraph-ts-node" ], - "envKey": "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa" + "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "build-sys-tgraphs": { "ty": "denoFile@v1", "key": "build-sys-tgraphs", - "envKey": "bciqeby2w3rophwmqawnkmicgymgudbcdqjirrz3r7oltu44uqp4emsq" + "envKey": "bciqm6tgltjzc7jkh33v6a3jnmwj26tshxcyze7zoonhffdyteomjqpi" } }, "tasksNamed": [ @@ -1231,7 +1231,7 @@ "id": "envs", "config": { "envs": { - "bciqacae7toziicv72e7ugl6kuv25bbxl5ygu5dugtczoojzqkwayp6q": { + "bciqc65cwtbvuuiq4jomrdxbodtcjf3mioozsvkcstxnwcedmjhvw4qq": { "desc": "the default default environment.", "provides": [ { @@ -1242,7 +1242,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1265,7 +1265,7 @@ } ] }, - "bciqkxvhlk6wifuxken6emvhj2cki7tw5ygccar6qq4vbartg776akqa": { + "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq": { "provides": [ { "ty": "posix.envVar", @@ -1275,7 +1275,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1298,7 +1298,7 @@ } ] }, - "bciqkfzynmgivxtsz2qoytkbvn4rwxe3ngzodvhxvvlqqlt4b62miuyy": { + "bciqexkzgjrssbarv2i34mmu26kjs4iqkbpbm5ffwbf5xqpmg54wk7uq": { "provides": [ { "ty": "posix.envVar", @@ -1308,7 +1308,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1331,7 +1331,7 @@ } ] }, - "bciqa4zotbgmulpg3cutg6nu3ptq5merbt2gbf5a26twwcfe7djxchsi": { + "bciqbs2et5k6assk4valtouiftbsxzowucfeacwviwidnuau34ebv7qa": { "provides": [ { "ty": "posix.envVar", @@ -1341,7 +1341,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1364,7 +1364,7 @@ } ] }, - "bciqovedn2du5h56q6t4nolxi47yddf76bgaobbexfcxsjyuzj465tri": { + "bciqkgzicthxfj4ol55smhozlncz2qcjqiyfieya5tpadsw3nhr62mlq": { "provides": [ { "ty": "posix.envVar", @@ -1374,7 +1374,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1397,7 +1397,7 @@ } ] }, - "bciqcqqs4e5l7nqt57e4bku3gjdxs2iruhfdl2ocayrkkcs4otx7ig7a": { + "bciqdjeti6ggn2dvpporxwb2phkde5ebqydekhmnwsadglmaulgfvkpq": { "provides": [ { "ty": "posix.envVar", @@ -1407,7 +1407,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1430,7 +1430,7 @@ } ] }, - "bciqgrksux7l63plnyfryiqoth7wghawzcxmptsdw7qlbxpeytpot6fq": { + "bciqpsctlw7xcrq7tireajcbbystmm3fhtvk4kmvwpzcu5plp2imucvi": { "provides": [ { "ty": "posix.envVar", @@ -1440,7 +1440,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1468,7 +1468,7 @@ } ] }, - "bciqof7ogmp2lx2bzmkbrtmdmrmj7seytb6bl2sb4uhnsxkf5v24m75i": { + "bciqo2beyk2zq4cqxjmaidvdvyqadpxjj7cg3s2gsmffvbu3dsorujpq": { "provides": [ { "ty": "posix.envVar", @@ -1478,7 +1478,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1501,7 +1501,7 @@ } ] }, - "bciqc4wyajjcgt24t2uhjf7zkzhq6gy2iektcnmjrnrkj3u2mhlzhcma": { + "bciqbpi44mvq77dlpyhj6f3qd65he7briefiuow3ikuf63fl7sog5axq": { "provides": [ { "ty": "posix.envVar", @@ -1511,7 +1511,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1534,7 +1534,7 @@ } ] }, - "bciqifnqvvzjvxnddwvnxomtrjtti2f5iefaj2l3aoz732lrnmg4utvq": { + "bciqbwqfy7ssmgbvaob7lkcoda5bqcj2gjmuw7eld27y2gbupi3b6v5q": { "provides": [ { "ty": "posix.envVar", @@ -1544,7 +1544,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1567,7 +1567,7 @@ } ] }, - "bciqk7rioqxzcpzf572poq2vwefpcmqnboofojgkgonvpih3q6wwyldq": { + "bciqcy6a27uzjhcj3e5xytw4papwmehbgm6fcbaedufwpnf6v6sp4wcq": { "provides": [ { "ty": "posix.envVar", @@ -1577,7 +1577,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1635,7 +1635,7 @@ } ] }, - "bciqe4fan2davv7bngzw6aygwwbrd7vjviea4rylpwikafl4kqyaxyuq": { + "bciqcus7eso3tgulos7mstngakchermtlt46ksfl4mbsoqyle3gx7tla": { "provides": [ { "ty": "posix.envVar", @@ -1645,7 +1645,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1738,7 +1738,7 @@ } ] }, - "bciqlb6jtozvezqdgkfkfxlztreqi2j6lxqdk5zvvlbc2o5ka7qtljji": { + "bciqapaicf5avwzknht5btyamhy5vbivdzpz3zja5szsw5rhzp25yaza": { "provides": [ { "ty": "posix.envVar", @@ -1748,7 +1748,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1771,7 +1771,7 @@ } ] }, - "bciqkazb54zk6wdbxpizobukdsz5ruxrtlkf6bfwvctdiwzq6lz7unsq": { + "bciqay3wlzl37o3e5sleadckz3lc3ku7bwxhtmcp253zu37itg6lop4y": { "provides": [ { "ty": "posix.envVar", @@ -1781,7 +1781,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1809,7 +1809,7 @@ } ] }, - "bciqly23hzeass3kah6rgds4wyqenzsrcmtru7nsvht7t23dsjvgynyi": { + "bciqkwu4gv6lblxqmz7qn2lcpoqj734thuq6xvrj7n6olow2dxtzyb7a": { "provides": [ { "ty": "posix.envVar", @@ -1819,7 +1819,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1847,7 +1847,7 @@ } ] }, - "bciqasv6wmp2sicgg5dbbjxiv5ojm3t3ga3e75y5igacjq4zureobu6q": { + "bciqjt6brrpsukhzp7rtwcque7ltthdnfx3rqjly6w3jgivxixs6dmlq": { "provides": [ { "ty": "posix.envVar", @@ -1857,7 +1857,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1885,7 +1885,7 @@ } ] }, - "bciqeby2w3rophwmqawnkmicgymgudbcdqjirrz3r7oltu44uqp4emsq": { + "bciqm6tgltjzc7jkh33v6a3jnmwj26tshxcyze7zoonhffdyteomjqpi": { "provides": [ { "ty": "posix.envVar", @@ -1895,7 +1895,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1918,7 +1918,7 @@ } ] }, - "bciqbjavwy7rbire3zwlpgo2ifwzgnm6ywxqswnh6qxezwuvc4bqhrca": { + "bciqgfkhptprs54tg3wl45acxctzc2lu4v2xlh3slk6w4m5g5ctysv4a": { "provides": [ { "ty": "posix.envVar", @@ -1928,7 +1928,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1951,7 +1951,7 @@ } ] }, - "bciqkxr25pjywutrwjgdbuqvhukulifkffcybdcswmbdp6g57uyxalty": { + "bciqjlkji6dp2icuvfv5lg6fk5pkfbl5diawrc6tw5fy325ifejnkxki": { "provides": [ { "ty": "posix.envVar", @@ -1961,7 +1961,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -1989,7 +1989,7 @@ } ] }, - "bciqmkulmynzdor24gykcjc2vtu2vmzcgavyyytftuf4sibd7yutzmvy": { + "bciqauxlnabn27drh7ggpn5ykcbei24vpq53dvuiq3gwt2hzyvr7bwaq": { "provides": [ { "ty": "posix.envVar", @@ -1999,7 +1999,7 @@ { "ty": "posix.envVar", "key": "TYPEGRAPH_VERSION", - "val": "0.0.3" + "val": "0.0.4" }, { "ty": "posix.envVar", @@ -2025,14 +2025,14 @@ }, "defaultEnv": "dev", "envsNamed": { - "main": "bciqacae7toziicv72e7ugl6kuv25bbxl5ygu5dugtczoojzqkwayp6q", - "_wasm": "bciqa4zotbgmulpg3cutg6nu3ptq5merbt2gbf5a26twwcfe7djxchsi", - "_python": "bciqovedn2du5h56q6t4nolxi47yddf76bgaobbexfcxsjyuzj465tri", - "_ecma": "bciqcqqs4e5l7nqt57e4bku3gjdxs2iruhfdl2ocayrkkcs4otx7ig7a", - "_rust": "bciqof7ogmp2lx2bzmkbrtmdmrmj7seytb6bl2sb4uhnsxkf5v24m75i", - "ci": "bciqbjavwy7rbire3zwlpgo2ifwzgnm6ywxqswnh6qxezwuvc4bqhrca", - "dev": "bciqkxr25pjywutrwjgdbuqvhukulifkffcybdcswmbdp6g57uyxalty", - "oci": "bciqmkulmynzdor24gykcjc2vtu2vmzcgavyyytftuf4sibd7yutzmvy" + "main": "bciqc65cwtbvuuiq4jomrdxbodtcjf3mioozsvkcstxnwcedmjhvw4qq", + "_wasm": "bciqbs2et5k6assk4valtouiftbsxzowucfeacwviwidnuau34ebv7qa", + "_python": "bciqkgzicthxfj4ol55smhozlncz2qcjqiyfieya5tpadsw3nhr62mlq", + "_ecma": "bciqdjeti6ggn2dvpporxwb2phkde5ebqydekhmnwsadglmaulgfvkpq", + "_rust": "bciqo2beyk2zq4cqxjmaidvdvyqadpxjj7cg3s2gsmffvbu3dsorujpq", + "ci": "bciqgfkhptprs54tg3wl45acxctzc2lu4v2xlh3slk6w4m5g5ctysv4a", + "dev": "bciqjlkji6dp2icuvfv5lg6fk5pkfbl5diawrc6tw5fy325ifejnkxki", + "oci": "bciqauxlnabn27drh7ggpn5ykcbei24vpq53dvuiq3gwt2hzyvr7bwaq" } } } diff --git a/deno.lock b/deno.lock index 532b9f700..12669bd8b 100644 --- a/deno.lock +++ b/deno.lock @@ -4,11 +4,10 @@ "specifiers": { "jsr:@david/dax@0.41.0": "jsr:@david/dax@0.41.0", "jsr:@david/which@^0.4.1": "jsr:@david/which@0.4.1", - "jsr:@std/archive@^0.225.0": "jsr:@std/archive@0.225.4", "jsr:@std/assert@^0.221.0": "jsr:@std/assert@0.221.0", - "jsr:@std/assert@^1.0.6": "jsr:@std/assert@1.0.9", - "jsr:@std/assert@^1.0.9": "jsr:@std/assert@1.0.9", - "jsr:@std/async@^1.0.3": "jsr:@std/async@1.0.9", + "jsr:@std/assert@^1.0.4": "jsr:@std/assert@1.0.6", + "jsr:@std/assert@^1.0.6": "jsr:@std/assert@1.0.6", + "jsr:@std/async@^1.0.3": "jsr:@std/async@1.0.5", "jsr:@std/bytes@^0.221.0": "jsr:@std/bytes@0.221.0", "jsr:@std/bytes@^1.0.2": "jsr:@std/bytes@1.0.4", "jsr:@std/bytes@^1.0.2-rc.3": "jsr:@std/bytes@1.0.4", @@ -43,10 +42,9 @@ "jsr:@std/path@^1.0.8": "jsr:@std/path@1.0.8", "jsr:@std/semver@^1.0.1": "jsr:@std/semver@1.0.3", "jsr:@std/streams@0.221.0": "jsr:@std/streams@0.221.0", - "jsr:@std/streams@1": "jsr:@std/streams@1.0.8", - "jsr:@std/streams@^1.0.2": "jsr:@std/streams@1.0.8", - "jsr:@std/testing@^1.0.1": "jsr:@std/testing@1.0.6", - "jsr:@std/uuid@^1.0.1": "jsr:@std/uuid@1.0.4", + "jsr:@std/streams@1": "jsr:@std/streams@1.0.4", + "jsr:@std/testing@^1.0.1": "jsr:@std/testing@1.0.2", + "jsr:@std/uuid@^1.0.1": "jsr:@std/uuid@1.0.3", "jsr:@std/yaml@^1.0.4": "jsr:@std/yaml@1.0.5", "npm:@noble/hashes@1.4.0": "npm:@noble/hashes@1.4.0", "npm:@sentry/node@7.70.0": "npm:@sentry/node@7.70.0", @@ -79,12 +77,6 @@ "@david/which@0.4.1": { "integrity": "896a682b111f92ab866cc70c5b4afab2f5899d2f9bde31ed00203b9c250f225e" }, - "@std/archive@0.225.4": { - "integrity": "59fe5d1834cbb6a2a7913b102d41c11d51475328d5b843bea75b94a40b44a115", - "dependencies": [ - "jsr:@std/io@^0.224.9" - ] - }, "@std/assert@0.221.0": { "integrity": "a5f1aa6e7909dbea271754fd4ab3f4e687aeff4873b4cef9a320af813adb489a" }, @@ -175,27 +167,7 @@ ] }, "@std/io@0.224.7": { - "integrity": "a70848793c44a7c100926571a8c9be68ba85487bfcd4d0540d86deabe1123dc9", - "dependencies": [ - "jsr:@std/bytes@^1.0.2" - ] - }, - "@std/io@0.224.9": { - "integrity": "4414664b6926f665102e73c969cfda06d2c4c59bd5d0c603fd4f1b1c840d6ee3", - "dependencies": [ - "jsr:@std/bytes@^1.0.2" - ] - }, - "@std/io@0.225.0": { - "integrity": "c1db7c5e5a231629b32d64b9a53139445b2ca640d828c26bf23e1c55f8c079b3" - }, - "@std/log@0.224.11": { - "integrity": "df5e5a6d6ab8bcea016a17982cd2435f65234d6618bf631925587c0b2eae2a4e", - "dependencies": [ - "jsr:@std/fmt@^1.0.3", - "jsr:@std/fs@^1.0.6", - "jsr:@std/io@^0.225.0" - ] + "integrity": "a70848793c44a7c100926571a8c9be68ba85487bfcd4d0540d86deabe1123dc9" }, "@std/log@0.224.7": { "integrity": "021941e5cd16de60cb11599c9b36f892aea95987fe66c753922808da27909e18", @@ -247,6 +219,12 @@ "jsr:@std/path@^1.0.8" ] }, + "@std/url@0.225.1": { + "integrity": "7961f62f0a3cd2c7aa5b785822874132760b50bbf5ed0ccfded8668f203e7a95", + "dependencies": [ + "jsr:@std/path@^1.0.4" + ] + }, "@std/uuid@1.0.3": { "integrity": "843b5adb6ab387344751c4255629dba484ca4a3e998c3566d709404855cd62b7", "dependencies": [ @@ -699,6 +677,9 @@ "https://deno.land/std@0.140.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", "https://deno.land/std@0.140.0/path/win32.ts": "31811536855e19ba37a999cd8d1b62078235548d67902ece4aa6b814596dd757", "https://deno.land/std@0.140.0/streams/conversion.ts": "712585bfa0172a97fb68dd46e784ae8ad59d11b88079d6a4ab098ff42e697d21", + "https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1", + "https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118", + "https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af", "https://deno.land/std@0.161.0/encoding/base64.ts": "c57868ca7fa2fbe919f57f88a623ad34e3d970d675bdc1ff3a9d02bba7409db2", "https://deno.land/std@0.166.0/_util/asserts.ts": "d0844e9b62510f89ce1f9878b046f6a57bf88f208a10304aab50efcb48365272", "https://deno.land/std@0.166.0/_util/os.ts": "8a33345f74990e627b9dfe2de9b040004b08ea5146c7c9e8fe9a29070d193934", @@ -1201,6 +1182,7 @@ "https://deno.land/x/ts_morph@18.0.0/common/typescript.js": "d5c598b6a2db2202d0428fca5fd79fc9a301a71880831a805d778797d2413c59", "https://deno.land/x/wasmbuild@0.15.0/cache.ts": "89eea5f3ce6035a1164b3e655c95f21300498920575ade23161421f5b01967f4", "https://deno.land/x/wasmbuild@0.15.0/loader.ts": "d98d195a715f823151cbc8baa3f32127337628379a02d9eb2a3c5902dbccfc02", + "https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20", "https://deno.land/x/zod@v3.22.2/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea", "https://deno.land/x/zod@v3.22.2/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", "https://deno.land/x/zod@v3.22.2/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", @@ -1214,18 +1196,12 @@ "https://deno.land/x/zod@v3.22.2/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", "https://deno.land/x/zod@v3.22.2/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", "https://deno.land/x/zod@v3.22.2/types.ts": "18cbe3d895f42977c43fa9411da214b06d0d682cf2f4c9dd26cc8c3737740d40", - "https://esm.sh/@aws-sdk/client-s3@3.626.0?pin=v135": "f10ef6e0231103f0be679550cf7f5ae8ca7d238ac3fa01e30cc14daf1d6d40e3", "https://esm.sh/@aws-sdk/client-s3@3.700.0?pin=v135": "c4e66ce2669ce810cd7f060e52e9702a37f02fc0912f69b1dc020a29b4d6e70f", "https://esm.sh/@aws-sdk/lib-storage@3.626.0?pin=v135": "ff6d1c100467d3c4ff6515cb4d0b36fceef2a944ff8474412ff248ceb58ce7e6", "https://esm.sh/@aws-sdk/lib-storage@3.700.0?pin=v135": "20499413966c9d494f4bff63361359e095f174c4a41ee79da3a0fbeb62dc947f", - "https://esm.sh/@aws-sdk/s3-request-presigner@3.645.0?pin=v135": "03cf57cb951aece8cb946fb31f910b5d96fcb54aadc15973cee8fa079a9783a1", "https://esm.sh/@aws-sdk/s3-request-presigner@3.700.0?pin=v135": "806a2f5f0c65996434f031fbeb3983ee271239e9b22c70cf3624b79b2667cdce", "https://esm.sh/ajv@8.12.0?pin=v131": "f8dc3d8e4d6d69f48381749333cc388e54177f66601125b43246c3e43d3145d6", "https://esm.sh/jszip@3.7.1": "f3872a819b015715edb05f81d973b5cd05d3d213d8eb28293ca5471fe7a71773", - "https://esm.sh/v131/ajv@8.12.0/denonext/ajv.mjs": "6ec3e0f3d7a95672c96274f6aece644b6b5541e8c2409aed36b59853529a01cf", - "https://esm.sh/v131/fast-deep-equal@3.1.3/denonext/fast-deep-equal.mjs": "6313b3e05436550e1c0aeb2a282206b9b8d9213b4c6f247964dd7bb4835fb9e5", - "https://esm.sh/v131/json-schema-traverse@1.0.0/denonext/json-schema-traverse.mjs": "c5da8353bc014e49ebbb1a2c0162d29969a14c325da19644e511f96ba670cc45", - "https://esm.sh/v131/uri-js@4.4.1/denonext/uri-js.mjs": "901d462f9db207376b39ec603d841d87e6b9e9568ce97dfaab12aa77d0f99f74", "https://esm.sh/v135/@aws-crypto/crc32@5.2.0/denonext/crc32.mjs": "6a9bc8418c01e2539665b528ccea843f1319a3b32d759fcbb1d4468156c25100", "https://esm.sh/v135/@aws-crypto/crc32c@5.2.0/denonext/crc32c.mjs": "1e8985997bd2c0807d349acaf192a54147d779e5349faf6507f51aa8becb85ca", "https://esm.sh/v135/@aws-crypto/sha1-browser@5.2.0/denonext/sha1-browser.mjs": "d80868d5524769e0334b50124d547ce9875fb05f9924acca4c42ed877b41ce7f", @@ -1451,239 +1427,7 @@ "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/mod.ts": "25901b5a03625353cc0d9c024daca806eb2513b153faede5ecad73b428542721", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/unarchive.ts": "f6d0e9e75f470eeef5aecd0089169f4350fc30ebfdc05466bb7b30042294d6d3", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/url.ts": "e1ada6fd30fc796b8918c88456ea1b5bbd87a07d0a0538b092b91fd2bb9b7623", - "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/engine/bindings.ts": "f74df81c428c6ac60f254ad15667efdd08f6d2a4836635c9d8c8dd98269e9df0", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/config.ts": "12c435a42969bf2dd2bbbc54f9b7bca155ca7314a6dd4f39ccb4863bd8d10a1c", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/config/loader.ts": "e901da195b255644fbd24649fc998d2c2058a104cc124dc7736cf6a2ed2ee922", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/config/shared.ts": "bca558a1581acf2d564d25957c7a491f6a5fad2c9a9e22c784fd75ecf5a8873c", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/config/types.ts": "a5b10b956d6d1b0349e758692bf26dddd44eb60f926fbd702df0dda15ac2896e", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/crypto.ts": "9f982b57238af8200cb698afb7ee3b2b816b0cc189e7a7d6559bedb8edde1866", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/computation_engine.ts": "4b2e7fd9e21bf9c790f1b4025a745712ef69110dd899418ae9059f83d4c5e9bc", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/planner/args.ts": "2d1ed67a5e8a66cbcbc587c468d09c4ad904a9df7f300c2ff4dec55563973731", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/planner/dependency_resolver.ts": "6f87025830e827cba0e7e74ecd3ff663a8298fbed778e70860efbe66d3b68f9b", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/planner/injection_utils.ts": "53b78c46726be1d1a79b5046f02f4d09570606b4e2fc1191a303f28551d472cc", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/planner/mod.ts": "470be78433a2a16493730524fc5f0bdc3e7d926d03b16f7a4610ece8994b3dcc", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/planner/parameter_transformer.ts": "2926e403cbe7688e442d430dc407b28c659f8689fe583d1741fc244bbcb04ddd", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/planner/policies.ts": "0b489f1dd93efafdeee41b5fdaa6d32c69b615e8b23f7a12d6a53b9c8b52811d", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/query_engine.ts": "089771e5249035aeae83db926b819405747b3df20fa58dec1f7818159e3aa036", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/stage_id.ts": "090aa004ee3cec27f310571c2ed838d1286346cb1c8b263a0509d2c6e53ae300", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/code_generator.ts": "41671624b36c862b5baa2d8f06b36070fb2d1d4ef97fb0dada3eff2899620d9e", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/common.ts": "2e9abb9eb039f06e336492fa6f5e9b933dcb58643ffc5de423c0b696da6ecc43", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/inline_validators/common.ts": "4861d3aa582275515c9b3741a15505e4431a1f14ad64d86258f22b7c5c9d42b7", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/inline_validators/constraints.ts": "073531c748833cfa99e003ef95183dd9d8543a160807b8046dde3317df923633", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/inline_validators/list.ts": "af81948b4a5847e11c0cf1782a6c608d3c060771b0ba0e7edce4478359333214", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/inline_validators/number.ts": "b685df3ac3a95f6b0e6d5e566ef0059fd3c4d69444268c21bc93aa738dda884d", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/inline_validators/object.ts": "1c56e54ea19052dd3375c7eada0059a5170e5ab5f2e6b0e0e0cf721ed3145ce6", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/inline_validators/string.ts": "580d0cd8280c957acd085390af17447209ad15e994ea58fd1e7151ef4e07a40b", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/input.ts": "2ab8f2737d76bbfe94265c69ebf4c4b80676cd3ce095144a523c1362936e5cc3", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/matching_variant.ts": "651c6d47d3f368a0e47ac475c9803e69265f3d58b08293e8ef8bda17ac00a589", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/engine/typecheck/result.ts": "72c0d67bc35d1d98510d3bc5a3487c7ec63d6741911738869b122cb0bfb9de02", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/errors.ts": "14fe23136ccdcfb6e52c9fd9dfb1d5fbee21869c26f459217117189685428802", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/libs/jsonpath.ts": "af90cb8918ff8f453f9482bdcf7d4078ff0cdc53523a1725b724d0b056644ff8", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/log.ts": "71b949f07461cb6f52a8f45e00065c889234d564c6d4fe3ff2a272a6dbb82e12", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/main.ts": "41dc22a0c6d2a516cc99b4858ab9781d2d149253f4d70e21006d8d251532610b", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/Runtime.ts": "4bd4825b6c42cd74e9a22cccb695f78a8f3fe81a278c2b1a56123770d7e87f99", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/deno.ts": "15badd909f25aa6daee80b04d22f3e5b32333f6b98e9f24acd953a1cbea151fb", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/deno/deno.ts": "c6293dfdba696c26dbba5e5791d8703d2e1f64a5357f999fa5f52ba233123780", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/deno/deno_messenger.ts": "016b86392a3ec0348a3f62ac63372a7da1af9801cb92f625bdff0b2fce1acf96", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/deno/shared_types.ts": "3b9773ecbdf2f2fed97588e0353d02b9e01001c52b2bbb24813e6735602cf5c0", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/deno/worker.ts": "b61f3e3fa181a8cfeae8a3df152171f74a1979428acdebc6d839624bad24fc56", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/graphql.ts": "07bf52adc13086be644a98c7670a2b757cf03a88c5ee9fae6be0bcd677fc70d7", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/grpc.ts": "adc5dad80e1587cc6239f7a7d9ccb86a946f3c4190ae9bcfcafa177dd68cc437", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/http.ts": "09185d4bcc157b8c1c3f49686f8e1c94d2368b2bf510ccfdca36314256260604", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/kv.ts": "312833f6212102d330a4f2648f9e33b99fe917d12f03d397c8b86fa2a2e0191d", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/mod.ts": "73e682bfce50a595711602ba166bb28f8a003fdaa3e367a5e6aa8bd6d226b161", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "a6f602889968694014a71e1e1d2c0f200a933b4cac58b3ca08c8fd56840f83ca", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "2a1f6b3b0e7b0303e1e777dbced1dabaff313d1584a591c48ea2bf439b92571e", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma.ts": "7e6098169f749f15fb0a3c117e4d746ec78cbec75a3b2e0776da92699ef47433", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "7e4710d651695ac34a98da66b9334b2eb783a82a0d5cd3001add5c145757006a", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma/hooks/mod.ts": "3b7323fdbad1b2da89d405686fbe96912ea051b49fc59e35a64ae3c082d88b58", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "07be71a18464f41fbc78cb72b44d8ff8150cfbc4aa42ce3060018e4fc8df9f13", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma/migration.ts": "e9eb6e3c76e616a1f7348dcb00927e53b9802ebf7edaf04c0d07db6ed30aba87", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma/mod.ts": "3e1e42facac57463f227c6408a995716ac364df037a441267bf4ddc55aba1762", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma/prisma.ts": "595216d17e6b5382dbf0f00fc2a94043bf12d1a0aba78b488836e4c5a070d73b", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/prisma/types.ts": "7b2a668263dec4f68d7c6e0cd42e6708f1f70de77945891e4e7513bcb934abe8", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/python.ts": "f71dd91f1f6625243c331e863bdfb05d9881216f8337555961c7cc1a8fdb303d", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/random.ts": "8ebb64cf887f69f1c573a386029e3368c224027ec2e3e4414ba5099f67019273", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/s3.ts": "d4bff2d98429d0226e1021163bf2097de3ddfc852b64be860e7bf917ad7494a8", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/substantial.ts": "24c1ab11ec3cd543227b189b09eb135c2b38458dce2b8a1eac4b42c08a38c9f2", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/substantial/agent.ts": "2fca2ab86542e1307d5bea745a9a19f4147a6c5cbea4e889cdd05c175aa07307", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/substantial/types.ts": "66413dbb2234360db6eb8a78710ce9804290b2a19c1b34453b4850a135a33385", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts": "74c0b5b9cc9be1daafeb5623c9810182710634bbddd4b6c53bb3df43848f2763", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/temporal.ts": "5e0bd1009a40b467c381707d3cb553dff43729f131956f3721f96e037997d19a", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/typegate.ts": "0ee368db6bc8bd3a439e36b35f753ecf6d818c3e2a3cb02c39fd20508f92baef", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/typegraph.ts": "c627209ee947e9067dd580f55759354c942ca1998877b00b6149cbbea5b2f0b7", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/utils/graphql_forward_vars.ts": "466bb67f86b1c5af52f2f1a4eb02fff6f731f066e3bcd264c1c4152d0f055b5d", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/utils/graphql_inline_vars.ts": "c103dbe9967054132f9e1a347a3b9b6981b9bab59979ca5b7e38e8dd556959e7", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/utils/http.ts": "6ef74393421256e4f9945878bed7762af406a12866041f9286e06b2afdef4338", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/wasm_reflected.ts": "588aebf664d4179df3818d6521e3936d248b751637707be3a85ef24f5446531b", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/wasm_wire.ts": "99f5de736cf2492619333d2c465308716f42f8fd493c825514ba5e25be35c48a", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/runtimes/wit_wire/mod.ts": "3f14f57fe2d087b6f11c32f0e75d3c1c1bb6166b810f3ef267f5698fe97f1eef", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/artifact_service.ts": "ed90cb99770289c3afb5ceaaab98f56be69d1259e6e6761fd6f1f29c6561f0ea", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/cookies.ts": "194c6c17e915692ba7fceda17109c1da8f426fde3e56d6dfd15a8d077d5bf789", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/mod.ts": "e6401d8b8a9a968f8feaefd618d55fbc7eaea9a16dafe0b70af50af313d86937", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/protocols/basic.ts": "99293b05820becf203822988020568e0cb8e304a477d4a85d887a6e570cb2ea6", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/protocols/internal.ts": "4b31e4780a18a281d27f69062efddf022799a1d4b3b852419f2a78df9f4c3332", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/protocols/jwt.ts": "5792f292d73730b823cd1da3133435dd23f6e1d8a88977c12298f017c5be957c", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/protocols/oauth2.ts": "d7d24eea260c318bdf48d1b31090dd8b4aa54e5320b9bc2140f7eb7f8e19a601", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/protocols/protocol.ts": "61ca77720004360879a6e3e890ef23eca5a97b85a2dd3d8a2f2fc4521c958be3", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/routes/mod.ts": "31d27a1a8edc99db7d5bbb68400821e73447f04b8106ff28f2a633f47ffd8221", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/routes/take.ts": "b6293899b75cc6c110a61fce7a0b49c2608779a01b0f735e5cfe8febe428edc6", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/auth/routes/validate.ts": "0d36f950262b608978aef8caef62900077fce352a0b33da37abd07a1482acef6", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/graphql_service.ts": "2a0bfe4e49b78412cccf2926ba9713871438cbf285df12b6e26979e9f3668dd1", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/info_service.ts": "0c5cb5a9926644b00d8129121655b6654a884f4ab3bb2a56a1b5e33c2fadafe3", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/middlewares.ts": "c996a25dffa58efc8f50e4a8f3f9df14d93b32b2bb6269c95ad0bec3cc05de94", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/playground_service.ts": "570cd407c5000bd93ddbd0a898ca5f50bb8d5f26d67684d1c592ab2c260ffce0", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/responses.ts": "b3e7f74d02e51a719968a417202c4a307b4c4dc73a73ed93ffbb76d73eef683c", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/services/rest_service.ts": "88c0a9b409beeb936ab3fc84a90ada122f38074975644036baa69dd2cf354290", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/sync/replicated_map.ts": "1191c444af253e9afd1b5d99bb203600b318bfa42efe1bfa87f1f5a58147f117", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/sync/typegraph.ts": "69fa06eae9f4676c4e8818fdb29056f4775a5d1ce04e8662a011cb777735e44b", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/system_typegraphs.ts": "a49296517ab9aeefb0a93ccbc2361969a78c8289b213115ddcba0216c359659e", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/transports/graphql/gq.ts": "7150dc876b8d2c423acf6571e4f82cb28b1d84472edbf7aec8f2db3d35099730", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/transports/graphql/graphql.ts": "db28dbff035dc4da27cbbc93596d31b9ae4c4647d8dd1ef8dd8466124dddf819", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/transports/graphql/request_parser.ts": "f808f194897a70be6f9b4125fad793b4ac6840558cae583f757fbe9c1db5cee5", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/transports/graphql/typegraph.ts": "f338320cca137a328aa680ecd8b7ca8e3f2bef18eeea911e1a71a53a247d2d89", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/transports/graphql/utils.ts": "52f41e4acc8c8e1f7438ff421562909fabfa84eee509e5fa7d3d446d631711c8", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/transports/rest/rest_schema_generator.ts": "6143277aa83e620bc1b89f5cc57952c2ed4559d4926b30afd8a7c213865cc142", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/artifacts/local.ts": "67899cac544f6c451420da2e66a7f761e51930ed524be67427409188e62097e0", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/artifacts/mod.ts": "19f8c0972b4d4832d438c6fc6dfcd485c4b3c9bb1a83d3e8a51900795cdcb5f4", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/artifacts/shared.ts": "e4881b2bdd38b1f06ffeaaac6936e963c3802c2113bb97beaf574cb4ab5ef5cc", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/hooks.ts": "fd1d74f6d3a964374e4cd5cc466690f428dbcbd8960f7edff58556698a00f34e", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/memory_register.ts": "6dc0d05a471f4574b969e20ab04b21fb9aa99c8e30cbd0fe043bd8d984cee724", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/mod.ts": "628e2b460b7c309db40aa7fbc656ce36186e9713fa6e4f9c90e91b97134f3094", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/no_limiter.ts": "820f766f78cb9546c916a6db2e1713cb9288ca17b2ab590f05e2f7748d1321af", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/rate_limiter.ts": "83b4d1197acb83065481489ef3cac1a6bf0fc9aa819fc2330c5dd177f4c79302", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegate/register.ts": "864d668ae3704984077d57c05a425cd5c74ba79bb6a42a54ef0112e1560fc543", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraph/mod.ts": "6c27b8838bae4bd683a1f30c5b6574be60341d3512c751b43bee14bb4da2bc29", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraph/type_node.ts": "2122369b68351e336bae60a18006b1329c95a0e82b4e25795ba3e419df493d15", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraph/types.ts": "122af777d054b9b5e6c827fe969762888e4a6634616cd8974713fefbc7ced596", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraph/utils.ts": "ce1a9ac71b86ccbae4334cef66e3424395349b6517bb0fdae31f3032607ac444", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraph/versions.ts": "89787a9cd05f5a630831c6b05ee17d868537aa95dbd0cdf5808030e3149c272d", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraph/visitor.ts": "d3df39cb77be23f6ea6e754db43d9b9b78dcf71fa8ed4a570c69e7102495af99", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraphs/introspection.json": "5b4367b31426e7cf4a302710c23948f30adca3829468029ee92da9fde5c2a660", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraphs/prisma_migration.json": "3a29869405591cd9791b05ed56f4598681491bc307aa218ceacd6441dc5149df", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/typegraphs/typegate.json": "6c2f9cb2c25090173968806f9a8298cfa68d3a339d034b853f0a526a66ba0d3c", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/types.ts": "c00d562e809aa2c773925f69467d42bf5b4146146d1a5e90d8704d0e1d56cfee", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/utils.ts": "37d7289fdfa897317947489c0e58ca4af919c582cec19394f3b49d377e1e3b76", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/utils/hash.ts": "1b0fc152d2b51c1acf542ba49ec383efea5236acb9d52526b7f6568fadb43dfb", - "https://raw.githubusercontent.com/metatypedev/metatype/02733603ec2089515d8fd4f0ab07efc4ad1961c4/src/typegate/src/worker_utils.ts": "0b7e9252a0c6449299a4f604b9a5e6eb3f33ae842d3ac7f169627ccbfb285f1a", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/engine/bindings.ts": "f74df81c428c6ac60f254ad15667efdd08f6d2a4836635c9d8c8dd98269e9df0", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/config.ts": "12c435a42969bf2dd2bbbc54f9b7bca155ca7314a6dd4f39ccb4863bd8d10a1c", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/config/loader.ts": "e901da195b255644fbd24649fc998d2c2058a104cc124dc7736cf6a2ed2ee922", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/config/shared.ts": "bca558a1581acf2d564d25957c7a491f6a5fad2c9a9e22c784fd75ecf5a8873c", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/config/types.ts": "a5b10b956d6d1b0349e758692bf26dddd44eb60f926fbd702df0dda15ac2896e", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/crypto.ts": "9f982b57238af8200cb698afb7ee3b2b816b0cc189e7a7d6559bedb8edde1866", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/computation_engine.ts": "4b2e7fd9e21bf9c790f1b4025a745712ef69110dd899418ae9059f83d4c5e9bc", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/planner/args.ts": "2d1ed67a5e8a66cbcbc587c468d09c4ad904a9df7f300c2ff4dec55563973731", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/planner/dependency_resolver.ts": "6f87025830e827cba0e7e74ecd3ff663a8298fbed778e70860efbe66d3b68f9b", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/planner/injection_utils.ts": "53b78c46726be1d1a79b5046f02f4d09570606b4e2fc1191a303f28551d472cc", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/planner/mod.ts": "470be78433a2a16493730524fc5f0bdc3e7d926d03b16f7a4610ece8994b3dcc", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/planner/parameter_transformer.ts": "2926e403cbe7688e442d430dc407b28c659f8689fe583d1741fc244bbcb04ddd", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/planner/policies.ts": "0b489f1dd93efafdeee41b5fdaa6d32c69b615e8b23f7a12d6a53b9c8b52811d", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/query_engine.ts": "089771e5249035aeae83db926b819405747b3df20fa58dec1f7818159e3aa036", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/stage_id.ts": "090aa004ee3cec27f310571c2ed838d1286346cb1c8b263a0509d2c6e53ae300", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/code_generator.ts": "41671624b36c862b5baa2d8f06b36070fb2d1d4ef97fb0dada3eff2899620d9e", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/common.ts": "2e9abb9eb039f06e336492fa6f5e9b933dcb58643ffc5de423c0b696da6ecc43", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/inline_validators/common.ts": "4861d3aa582275515c9b3741a15505e4431a1f14ad64d86258f22b7c5c9d42b7", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/inline_validators/constraints.ts": "073531c748833cfa99e003ef95183dd9d8543a160807b8046dde3317df923633", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/inline_validators/list.ts": "af81948b4a5847e11c0cf1782a6c608d3c060771b0ba0e7edce4478359333214", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/inline_validators/number.ts": "b685df3ac3a95f6b0e6d5e566ef0059fd3c4d69444268c21bc93aa738dda884d", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/inline_validators/object.ts": "1c56e54ea19052dd3375c7eada0059a5170e5ab5f2e6b0e0e0cf721ed3145ce6", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/inline_validators/string.ts": "580d0cd8280c957acd085390af17447209ad15e994ea58fd1e7151ef4e07a40b", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/input.ts": "2ab8f2737d76bbfe94265c69ebf4c4b80676cd3ce095144a523c1362936e5cc3", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/matching_variant.ts": "651c6d47d3f368a0e47ac475c9803e69265f3d58b08293e8ef8bda17ac00a589", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/engine/typecheck/result.ts": "72c0d67bc35d1d98510d3bc5a3487c7ec63d6741911738869b122cb0bfb9de02", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/errors.ts": "14fe23136ccdcfb6e52c9fd9dfb1d5fbee21869c26f459217117189685428802", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/libs/jsonpath.ts": "af90cb8918ff8f453f9482bdcf7d4078ff0cdc53523a1725b724d0b056644ff8", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/log.ts": "71b949f07461cb6f52a8f45e00065c889234d564c6d4fe3ff2a272a6dbb82e12", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/main.ts": "41dc22a0c6d2a516cc99b4858ab9781d2d149253f4d70e21006d8d251532610b", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/Runtime.ts": "4bd4825b6c42cd74e9a22cccb695f78a8f3fe81a278c2b1a56123770d7e87f99", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/deno.ts": "15badd909f25aa6daee80b04d22f3e5b32333f6b98e9f24acd953a1cbea151fb", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/deno/deno.ts": "c6293dfdba696c26dbba5e5791d8703d2e1f64a5357f999fa5f52ba233123780", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/deno/deno_messenger.ts": "016b86392a3ec0348a3f62ac63372a7da1af9801cb92f625bdff0b2fce1acf96", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/deno/shared_types.ts": "3b9773ecbdf2f2fed97588e0353d02b9e01001c52b2bbb24813e6735602cf5c0", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/deno/worker.ts": "b61f3e3fa181a8cfeae8a3df152171f74a1979428acdebc6d839624bad24fc56", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/graphql.ts": "07bf52adc13086be644a98c7670a2b757cf03a88c5ee9fae6be0bcd677fc70d7", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/grpc.ts": "adc5dad80e1587cc6239f7a7d9ccb86a946f3c4190ae9bcfcafa177dd68cc437", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/http.ts": "09185d4bcc157b8c1c3f49686f8e1c94d2368b2bf510ccfdca36314256260604", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/kv.ts": "312833f6212102d330a4f2648f9e33b99fe917d12f03d397c8b86fa2a2e0191d", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/mod.ts": "73e682bfce50a595711602ba166bb28f8a003fdaa3e367a5e6aa8bd6d226b161", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "a6f602889968694014a71e1e1d2c0f200a933b4cac58b3ca08c8fd56840f83ca", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "2a1f6b3b0e7b0303e1e777dbced1dabaff313d1584a591c48ea2bf439b92571e", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma.ts": "7e6098169f749f15fb0a3c117e4d746ec78cbec75a3b2e0776da92699ef47433", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "7e4710d651695ac34a98da66b9334b2eb783a82a0d5cd3001add5c145757006a", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma/hooks/mod.ts": "3b7323fdbad1b2da89d405686fbe96912ea051b49fc59e35a64ae3c082d88b58", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "07be71a18464f41fbc78cb72b44d8ff8150cfbc4aa42ce3060018e4fc8df9f13", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma/migration.ts": "e9eb6e3c76e616a1f7348dcb00927e53b9802ebf7edaf04c0d07db6ed30aba87", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma/mod.ts": "3e1e42facac57463f227c6408a995716ac364df037a441267bf4ddc55aba1762", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma/prisma.ts": "595216d17e6b5382dbf0f00fc2a94043bf12d1a0aba78b488836e4c5a070d73b", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/prisma/types.ts": "7b2a668263dec4f68d7c6e0cd42e6708f1f70de77945891e4e7513bcb934abe8", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/python.ts": "f71dd91f1f6625243c331e863bdfb05d9881216f8337555961c7cc1a8fdb303d", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/random.ts": "8ebb64cf887f69f1c573a386029e3368c224027ec2e3e4414ba5099f67019273", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/s3.ts": "d4bff2d98429d0226e1021163bf2097de3ddfc852b64be860e7bf917ad7494a8", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/substantial.ts": "24c1ab11ec3cd543227b189b09eb135c2b38458dce2b8a1eac4b42c08a38c9f2", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/substantial/agent.ts": "2fca2ab86542e1307d5bea745a9a19f4147a6c5cbea4e889cdd05c175aa07307", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/substantial/types.ts": "66413dbb2234360db6eb8a78710ce9804290b2a19c1b34453b4850a135a33385", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts": "74c0b5b9cc9be1daafeb5623c9810182710634bbddd4b6c53bb3df43848f2763", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/temporal.ts": "5e0bd1009a40b467c381707d3cb553dff43729f131956f3721f96e037997d19a", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/typegate.ts": "0ee368db6bc8bd3a439e36b35f753ecf6d818c3e2a3cb02c39fd20508f92baef", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/typegraph.ts": "c627209ee947e9067dd580f55759354c942ca1998877b00b6149cbbea5b2f0b7", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/utils/graphql_forward_vars.ts": "466bb67f86b1c5af52f2f1a4eb02fff6f731f066e3bcd264c1c4152d0f055b5d", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/utils/graphql_inline_vars.ts": "c103dbe9967054132f9e1a347a3b9b6981b9bab59979ca5b7e38e8dd556959e7", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/utils/http.ts": "6ef74393421256e4f9945878bed7762af406a12866041f9286e06b2afdef4338", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/wasm_reflected.ts": "588aebf664d4179df3818d6521e3936d248b751637707be3a85ef24f5446531b", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/wasm_wire.ts": "99f5de736cf2492619333d2c465308716f42f8fd493c825514ba5e25be35c48a", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/runtimes/wit_wire/mod.ts": "f8b7f6ca30a384a1441b641dbcc4c6defe1d880a34353990d129fd31f26c7c26", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/artifact_service.ts": "ed90cb99770289c3afb5ceaaab98f56be69d1259e6e6761fd6f1f29c6561f0ea", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/cookies.ts": "194c6c17e915692ba7fceda17109c1da8f426fde3e56d6dfd15a8d077d5bf789", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/mod.ts": "e6401d8b8a9a968f8feaefd618d55fbc7eaea9a16dafe0b70af50af313d86937", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/protocols/basic.ts": "99293b05820becf203822988020568e0cb8e304a477d4a85d887a6e570cb2ea6", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/protocols/internal.ts": "4b31e4780a18a281d27f69062efddf022799a1d4b3b852419f2a78df9f4c3332", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/protocols/jwt.ts": "5792f292d73730b823cd1da3133435dd23f6e1d8a88977c12298f017c5be957c", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/protocols/oauth2.ts": "d7d24eea260c318bdf48d1b31090dd8b4aa54e5320b9bc2140f7eb7f8e19a601", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/protocols/protocol.ts": "61ca77720004360879a6e3e890ef23eca5a97b85a2dd3d8a2f2fc4521c958be3", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/routes/mod.ts": "31d27a1a8edc99db7d5bbb68400821e73447f04b8106ff28f2a633f47ffd8221", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/routes/take.ts": "b6293899b75cc6c110a61fce7a0b49c2608779a01b0f735e5cfe8febe428edc6", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/auth/routes/validate.ts": "0d36f950262b608978aef8caef62900077fce352a0b33da37abd07a1482acef6", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/graphql_service.ts": "2a0bfe4e49b78412cccf2926ba9713871438cbf285df12b6e26979e9f3668dd1", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/info_service.ts": "0c5cb5a9926644b00d8129121655b6654a884f4ab3bb2a56a1b5e33c2fadafe3", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/middlewares.ts": "c996a25dffa58efc8f50e4a8f3f9df14d93b32b2bb6269c95ad0bec3cc05de94", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/playground_service.ts": "570cd407c5000bd93ddbd0a898ca5f50bb8d5f26d67684d1c592ab2c260ffce0", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/responses.ts": "b3e7f74d02e51a719968a417202c4a307b4c4dc73a73ed93ffbb76d73eef683c", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/services/rest_service.ts": "88c0a9b409beeb936ab3fc84a90ada122f38074975644036baa69dd2cf354290", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/sync/replicated_map.ts": "1191c444af253e9afd1b5d99bb203600b318bfa42efe1bfa87f1f5a58147f117", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/sync/typegraph.ts": "69fa06eae9f4676c4e8818fdb29056f4775a5d1ce04e8662a011cb777735e44b", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/system_typegraphs.ts": "a49296517ab9aeefb0a93ccbc2361969a78c8289b213115ddcba0216c359659e", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/transports/graphql/gq.ts": "7150dc876b8d2c423acf6571e4f82cb28b1d84472edbf7aec8f2db3d35099730", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/transports/graphql/graphql.ts": "db28dbff035dc4da27cbbc93596d31b9ae4c4647d8dd1ef8dd8466124dddf819", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/transports/graphql/request_parser.ts": "f808f194897a70be6f9b4125fad793b4ac6840558cae583f757fbe9c1db5cee5", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/transports/graphql/typegraph.ts": "f338320cca137a328aa680ecd8b7ca8e3f2bef18eeea911e1a71a53a247d2d89", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/transports/graphql/utils.ts": "52f41e4acc8c8e1f7438ff421562909fabfa84eee509e5fa7d3d446d631711c8", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/transports/rest/rest_schema_generator.ts": "6143277aa83e620bc1b89f5cc57952c2ed4559d4926b30afd8a7c213865cc142", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/artifacts/local.ts": "67899cac544f6c451420da2e66a7f761e51930ed524be67427409188e62097e0", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/artifacts/mod.ts": "19f8c0972b4d4832d438c6fc6dfcd485c4b3c9bb1a83d3e8a51900795cdcb5f4", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/artifacts/shared.ts": "e4881b2bdd38b1f06ffeaaac6936e963c3802c2113bb97beaf574cb4ab5ef5cc", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/hooks.ts": "fd1d74f6d3a964374e4cd5cc466690f428dbcbd8960f7edff58556698a00f34e", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/memory_register.ts": "6dc0d05a471f4574b969e20ab04b21fb9aa99c8e30cbd0fe043bd8d984cee724", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/mod.ts": "628e2b460b7c309db40aa7fbc656ce36186e9713fa6e4f9c90e91b97134f3094", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/no_limiter.ts": "820f766f78cb9546c916a6db2e1713cb9288ca17b2ab590f05e2f7748d1321af", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/rate_limiter.ts": "83b4d1197acb83065481489ef3cac1a6bf0fc9aa819fc2330c5dd177f4c79302", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegate/register.ts": "864d668ae3704984077d57c05a425cd5c74ba79bb6a42a54ef0112e1560fc543", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraph/mod.ts": "6c27b8838bae4bd683a1f30c5b6574be60341d3512c751b43bee14bb4da2bc29", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraph/type_node.ts": "2122369b68351e336bae60a18006b1329c95a0e82b4e25795ba3e419df493d15", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraph/types.ts": "122af777d054b9b5e6c827fe969762888e4a6634616cd8974713fefbc7ced596", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraph/utils.ts": "ce1a9ac71b86ccbae4334cef66e3424395349b6517bb0fdae31f3032607ac444", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraph/versions.ts": "89787a9cd05f5a630831c6b05ee17d868537aa95dbd0cdf5808030e3149c272d", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraph/visitor.ts": "d3df39cb77be23f6ea6e754db43d9b9b78dcf71fa8ed4a570c69e7102495af99", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraphs/introspection.json": "5b4367b31426e7cf4a302710c23948f30adca3829468029ee92da9fde5c2a660", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraphs/prisma_migration.json": "3a29869405591cd9791b05ed56f4598681491bc307aa218ceacd6441dc5149df", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/typegraphs/typegate.json": "6c2f9cb2c25090173968806f9a8298cfa68d3a339d034b853f0a526a66ba0d3c", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/types.ts": "c00d562e809aa2c773925f69467d42bf5b4146146d1a5e90d8704d0e1d56cfee", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/utils.ts": "37d7289fdfa897317947489c0e58ca4af919c582cec19394f3b49d377e1e3b76", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/utils/hash.ts": "1b0fc152d2b51c1acf542ba49ec383efea5236acb9d52526b7f6568fadb43dfb", - "https://raw.githubusercontent.com/metatypedev/metatype/822437bed9262bef92af79017802867b3542ee61/src/typegate/src/worker_utils.ts": "0b7e9252a0c6449299a4f604b9a5e6eb3f33ae842d3ac7f169627ccbfb285f1a" + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62" }, "workspace": { "members": { diff --git a/ghjk.ts b/ghjk.ts index bb7a4cf3d..b11abd6ae 100644 --- a/ghjk.ts +++ b/ghjk.ts @@ -20,7 +20,7 @@ env("main") .vars({ RUST_LOG: "info,typegate=debug,deno=warn,swc_ecma_codegen=off,tracing::span=off,quaint=off", - TYPEGRAPH_VERSION: "0.0.3", + TYPEGRAPH_VERSION: "0.0.4", CLICOLOR_FORCE: "1", CROSS_CONFIG: "tools/Cross.toml", GIT_CLIFF_CONFIG: "tools/cliff.toml", @@ -164,6 +164,7 @@ task("version-bump", async ($) => { lines: { "./tools/consts.ts": lines, }, + ignores: [".metatype/**/*"], }); await $`ghjk x lock-sed`; }); diff --git a/src/typegate/src/typegate/register.ts b/src/typegate/src/typegate/register.ts index 42d3ebbdc..34d13cb26 100644 --- a/src/typegate/src/typegate/register.ts +++ b/src/typegate/src/typegate/register.ts @@ -61,7 +61,8 @@ export class ReplicatedRegister extends Register { ); // typegraph is updated while being pushed, this is only for initial load - const hasUpgrade = initialLoad && isTypegraphUpToDate(tg); + const hasUpgrade = (initialLoad && isTypegraphUpToDate(tg)) || true; + console.log({ hasUpgrade }); const engine = await typegate.initQueryEngine( hasUpgrade ? upgradeTypegraph(tg) : tg, diff --git a/src/typegate/src/typegraph/versions.ts b/src/typegate/src/typegraph/versions.ts index ae16cf7a7..47ecfdd4a 100644 --- a/src/typegate/src/typegraph/versions.ts +++ b/src/typegate/src/typegraph/versions.ts @@ -4,8 +4,9 @@ import { TypeGraph, type TypeGraphDS } from "../typegraph/mod.ts"; import { globalConfig } from "../config.ts"; import * as semver from "@std/semver"; +import { ObjectNode, Type } from "./type_node.ts"; -const typegraphVersion = "0.0.3"; +const typegraphVersion = "0.0.4"; const typegraphChangelog: Record< string, @@ -38,10 +39,43 @@ const typegraphChangelog: Record< return x; }, }, + "0.0.3": { + "next": "0.0.4", + "transform": (x) => { + console.log("types", x.types.length); + for (const typeNode of x.types) { + if (typeNode.type === Type.FUNCTION) { + // build injection tree from the input type + const path: string[] = []; + const input = x.types[typeNode.input]; + const traverse = (objectNode: ObjectNode) => { + console.log({ path }); + const properties = objectNode.properties; + for (const [name, typeIdx] of Object.entries(properties)) { + path.push(name); + const prop = x.types[typeIdx]; + if ("injection" in prop) { + console.log({ injection: prop.injection, path }); + throw new Error("injection"); + } + if (prop.type === Type.OBJECT) { + traverse(prop); + } + path.pop(); + } + }; + traverse(input); + typeNode.injections = {}; + } + } + return x; + }, + }, }; export function isTypegraphUpToDate(typegraph: TypeGraphDS): boolean { const { meta } = typegraph; + console.log({ typegraphVersion, metaVersion: meta.version }); return semver.equals( semver.parse(typegraphVersion), semver.parse(meta.version), @@ -53,6 +87,7 @@ export function upgradeTypegraph(typegraph: TypeGraphDS): TypeGraphDS { const { meta } = typegraph; let currentVersion = meta.version; + console.log("upgrade", { currentVersion, typegraphVersion }); while ( semver.notEquals( semver.parse(typegraphVersion), @@ -60,6 +95,7 @@ export function upgradeTypegraph(typegraph: TypeGraphDS): TypeGraphDS { ) ) { const migration = typegraphChangelog[currentVersion]; + console.log({ migration }); if (!migration) { throw Error( `typegate ${globalConfig.version} supports typegraph ${typegraphVersion} which is incompatible with ${typegraphName} ${meta.version} (max auto upgrade was ${currentVersion})`, diff --git a/src/typegraph/core/src/typegraph.rs b/src/typegraph/core/src/typegraph.rs index e6ee32fda..b5480ddaf 100644 --- a/src/typegraph/core/src/typegraph.rs +++ b/src/typegraph/core/src/typegraph.rs @@ -67,7 +67,7 @@ thread_local! { static TG: RefCell> = const { RefCell::new(None) }; } -static TYPEGRAPH_VERSION: &str = "0.0.3"; +static TYPEGRAPH_VERSION: &str = "0.0.4"; pub fn with_tg(f: impl FnOnce(&TypegraphContext) -> T) -> Result { TG.with(|tg| { diff --git a/tests/e2e/published/published_test.ts b/tests/e2e/published/published_test.ts index 2d989713f..8eb2eb437 100644 --- a/tests/e2e/published/published_test.ts +++ b/tests/e2e/published/published_test.ts @@ -16,12 +16,11 @@ import { transformSyncConfig } from "@metatype/typegate/config.ts"; import { clearSyncData, setupSync } from "test-utils/hooks.ts"; import { assertEquals } from "@std/assert"; -const previousVersion = PUBLISHED_VERSION; +// const previousVersion = PUBLISHED_VERSION; +const previousVersion = "0.4.10"; const tempDir = $.path(projectDir).join("tmp"); -type Path = typeof tempDir; - function getAssetName(version: string) { return `meta-cli-v${version}-${Deno.build.target}`; } @@ -45,10 +44,14 @@ const syncConfig = transformSyncConfig({ s3_bucket: syncEnvs.SYNC_S3_BUCKET, s3_path_style: true, }); +console.log(syncConfig); -// put here typegraphs that are to be excluded -// from the test -const disabled = [] as string[]; +// TODO remove after the next release +// The build.rs script now uses a META_CMD env var allowing us +// to use meta-old +const disabled = [ + "metagen-rs.ts", +]; async function checkMetaBin(path: typeof tempDir, version: string) { try { @@ -112,40 +115,8 @@ export async function downloadAndExtractCli(version: string) { return metaBin.toString(); } -type CopyCodeParams = { - branch: string; - destDir: Path; - files: (string | [string, string])[]; -}; - -async function copyCode({ branch, files, destDir: dest }: CopyCodeParams) { - const destDir = $.path(dest); - console.log("copyCode", { branch, files, destDir }); - const repoDir = $.path(`.metatype/old/${branch}`); - if (!(await repoDir.exists())) { - await $`git clone https://github.com/metatypedev/metatype.git ${repoDir} --depth 1 --branch ${branch}` - .stdout("inherit") - .stderr("inherit") - .printCommand(); - } - - await $.co( - files.map((file) => { - const [source, dest] = Array.isArray(file) ? file : [file, file]; - // if (dest.endsWith("/")) { - // return $.path(repoDir).join(source).copyToDir(destDir.join(dest), { - // overwrite: true, - // }); - // } - return $.path(repoDir).join(source).copy(destDir.join(dest), { - overwrite: true, - }); - }), - ); -} - // This also tests the published NPM version of the SDK -Meta.test( +Meta.test.only( { name: "typegate upgrade", async setup() { @@ -155,10 +126,6 @@ Meta.test( async teardown() { await clearSyncData(syncConfig); }, - // FIXME temporarily disabled, will be re-enabled the next related - // PR with a typegraph migration script - // - at `src/typegate/src/typegraph/version.ts` - ignore: true, }, async (t) => { let publishedBin = ""; @@ -192,12 +159,12 @@ Meta.test( args: ["typegate"], env: { ...Deno.env.toObject(), + LOG_LEVEL: "DEBUG", PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, TG_SECRET: tgSecret, TG_ADMIN_PASSWORD: "password", TMP_DIR: typegateTempDir, TG_PORT: port, - LOG_LEVEL: "DEBUG", // TODO should not be necessary VERSION: previousVersion, ...syncEnvs, @@ -210,12 +177,16 @@ Meta.test( async () => { const tag = `v${previousVersion}`; - await copyCode({ - branch: tag, - files: ["examples"], - destDir: examplesDir, - }); + // FIXME: cache across test runs + await $`git clone https://github.com/metatypedev/metatype.git --depth 1 --branch ${tag}` + .cwd(repoDir) + .stdout("piped") + .stderr("piped") + .printCommand(); + await $.path(repoDir).join("metatype/examples").copy(examplesDir, { + overwrite: true, + }); const typegraphsDir = examplesDir.join("typegraphs"); for await (const entry of typegraphsDir.readDir()) { const path = typegraphsDir.relative(entry.path); @@ -241,7 +212,7 @@ Meta.test( const stdout = new Lines(proc.stdout); await stdout.readWhile((line) => { console.log(`typegate>`, line); - return !line.includes(`typegate ready on :${port}`); + return !line.includes(`typegate ready on ${port}`); }); stdout.readWhile((line) => { const match = line.match(/Initializing engine '(.+)'/); @@ -254,7 +225,7 @@ Meta.test( await t.should("successfully deploy on the published version", async () => { const command = - `meta-old deploy --target dev --threads=4 --allow-dirty --gate http://localhost:${port} -vvv`; + `meta-old deploy --target dev --threads=4 --allow-dirty --gate http://localhost:${port} -vvv -f func.ts`; const res = await $`bash -c ${command}` .cwd(examplesDir.join("typegraphs")) .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`); @@ -284,7 +255,6 @@ Meta.test( TG_ADMIN_PASSWORD: "password", TMP_DIR: typegateTempDir, TG_PORT: `${port}`, - LOG_LEVEL: "DEBUG", // TODO should not be necessary VERSION: previousVersion, ...syncEnvs, @@ -309,6 +279,8 @@ Meta.test( console.log({ status }); }); + console.log({ typegraphs: typegraphs.sort() }); + await t.should("have the same typegraphs", () => { assertEquals(typegraphs.sort(), typegraphs2.sort()); }); @@ -352,7 +324,6 @@ Meta.test( TG_ADMIN_PASSWORD: "password", TMP_DIR: typegateTempDir.toString(), TG_PORT: `${port}`, - LOG_LEVEL: "DEBUG", // TODO should not be necessary VERSION: previousVersion, DEBUG: "true", @@ -367,7 +338,7 @@ Meta.test( await stdout.readWhile((line) => { console.error("typegate>", line); - return !line.includes(`typegate ready on :${port}`); + return !line.includes(`typegate ready on ${port}`); }); const tgsDir = $.path( @@ -401,16 +372,10 @@ typegraphs: .cwd( npmJsrDir, ); - await copyCode({ - branch: `v${previousVersion}`, - destDir: npmJsrDir, - files: [ - ["examples/typegraphs/func.ts", "tg.ts"], - ["examples/typegraphs/scripts", "scripts"], - ["examples/templates/node/tsconfig.json", "tsconfig.json"], - ], - }); await $.co([ + $.path("examples/typegraphs/func.ts").copy(npmJsrDir.join("tg.ts")), + $.path("examples/typegraphs/scripts").copyToDir(npmJsrDir), + $.path("examples/templates/node/tsconfig.json").copyToDir(npmJsrDir), npmJsrDir .join("package.json") .readJson() @@ -436,20 +401,17 @@ typegraphs: await $`bash -c 'deno add @typegraph/sdk@${PUBLISHED_VERSION}'`.cwd( denoJsrDir, ); - await copyCode({ - branch: `v${previousVersion}`, - files: [ - ["examples/typegraphs/func.ts", "tg.ts"], - ["examples/typegraphs/scripts", "scripts"], - ], - destDir: denoJsrDir, - }); + await $.co([ + $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), + $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), + ]); const command = `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; await $`bash -c ${command}` .cwd(denoJsrDir) .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // FIXME: rename to deno.jsonc on bump 0.4.9 .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) .env("RUST_LOG", "trace"); }); */ diff --git a/tools/consts.ts b/tools/consts.ts index 670acdb47..d5e494bc4 100644 --- a/tools/consts.ts +++ b/tools/consts.ts @@ -9,7 +9,7 @@ export const RUST_VERSION = "1.80.1"; export const DENO_VERSION = "1.46.3"; export const WASMTIME_VERSION = "25.0.2"; export const WASMTIME_PY_VERSION = "25.0.0"; -export const TYPEGRAPH_VERSION = "0.0.3"; +export const TYPEGRAPH_VERSION = "0.0.4"; export const PRISMA_VERSION = "5.20.0"; export const SDK_PACKAGE_NAME_TS = "@typegraph/sdk"; export const PYTHON_VERSION = "3.9.19"; @@ -69,6 +69,9 @@ export const sedLockLines: Record = { ['( TYPEGRAPH_VERSION: ").+(")', TYPEGRAPH_VERSION], ['( GHJK_VERSION: ").+(")', GHJK_VERSION], ], + "ghjk.ts": [ + ['( TYPEGRAPH_VERSION: ").+(",)', TYPEGRAPH_VERSION], + ], "docs/metatype.dev/docusaurus.config.js": [['( tagline: ").+(",)', TAGLINE]], "**/pyproject.toml": [ ['(version = ").+(")', METATYPE_VERSION], diff --git a/whiz.yaml b/whiz.yaml index 336c4e2c4..0808177b2 100644 --- a/whiz.yaml +++ b/whiz.yaml @@ -3,7 +3,7 @@ # process will leak in the bg and hog the port env: - TYPEGRAPH_VERSION: "0.0.3" + TYPEGRAPH_VERSION: "0.0.4" CLICOLOR_FORCE: "1" TIMER_MAX_TIMEOUT_MS: "30000" From a52c517b95d93a549397dec3da15eda2287c200f Mon Sep 17 00:00:00 2001 From: Natoandro Date: Mon, 16 Dec 2024 12:25:46 +0300 Subject: [PATCH 2/6] wip --- .ghjk/deno.lock | 11 + .ghjk/lock.json | 2 +- deno.lock | 3 + ghjk.ts | 24 +- src/common/src/typegraph/mod.rs | 3 + src/typegate/src/engine/planner/mod.ts | 9 +- src/typegate/src/runtimes/deno/deno.ts | 1 + .../src/transports/graphql/typegraph.ts | 23 + src/typegate/src/typegate/mod.ts | 21 +- src/typegate/src/typegate/register.ts | 8 + src/typegate/src/typegraph/types.ts | 2 +- src/typegate/src/typegraph/versions.ts | 2 +- src/typegraph/core/src/typegraph.rs | 2 +- tests/e2e/published/config.ts | 61 +++ tests/e2e/published/published_test.ts | 455 ------------------ tests/e2e/published/sdk_test.ts | 177 +++++++ tests/e2e/published/typegate_upgrade_test.ts | 194 ++++++++ tests/e2e/published/utils.ts | 76 +++ tools/consts.ts | 27 +- tools/deps.ts | 1 + tools/jsr/deno2node.ts | 4 +- tools/jsr/jsr-gen.ts | 4 +- tools/tasks/lock.ts | 38 +- 23 files changed, 650 insertions(+), 498 deletions(-) create mode 100644 tests/e2e/published/config.ts delete mode 100644 tests/e2e/published/published_test.ts create mode 100644 tests/e2e/published/sdk_test.ts create mode 100644 tests/e2e/published/typegate_upgrade_test.ts create mode 100644 tests/e2e/published/utils.ts diff --git a/.ghjk/deno.lock b/.ghjk/deno.lock index 0223fbf50..8674050dd 100644 --- a/.ghjk/deno.lock +++ b/.ghjk/deno.lock @@ -5,6 +5,7 @@ "jsr:@david/dax@0.41.0": "jsr:@david/dax@0.41.0", "jsr:@david/which@^0.4.1": "jsr:@david/which@0.4.1", "jsr:@std/assert@^0.221.0": "jsr:@std/assert@0.221.0", + "jsr:@std/assert@^1.0.3": "jsr:@std/assert@1.0.6", "jsr:@std/bytes@^0.221.0": "jsr:@std/bytes@0.221.0", "jsr:@std/bytes@^1.0.2": "jsr:@std/bytes@1.0.2", "jsr:@std/cli@^1.0.3": "jsr:@std/cli@1.0.5", @@ -14,6 +15,7 @@ "jsr:@std/fs": "jsr:@std/fs@0.221.0", "jsr:@std/fs@0.221.0": "jsr:@std/fs@0.221.0", "jsr:@std/fs@^1.0.1": "jsr:@std/fs@1.0.3", + "jsr:@std/internal@^1.0.4": "jsr:@std/internal@1.0.4", "jsr:@std/io@0.221.0": "jsr:@std/io@0.221.0", "jsr:@std/io@^0.221.0": "jsr:@std/io@0.221.0", "jsr:@std/path": "jsr:@std/path@0.221.0", @@ -49,6 +51,12 @@ "@std/assert@0.221.0": { "integrity": "a5f1aa6e7909dbea271754fd4ab3f4e687aeff4873b4cef9a320af813adb489a" }, + "@std/assert@1.0.6": { + "integrity": "1904c05806a25d94fe791d6d883b685c9e2dcd60e4f9fc30f4fc5cf010c72207", + "dependencies": [ + "jsr:@std/internal@^1.0.4" + ] + }, "@std/bytes@0.221.0": { "integrity": "64a047011cf833890a4a2ab7293ac55a1b4f5a050624ebc6a0159c357de91966" }, @@ -77,6 +85,9 @@ "jsr:@std/path@^1.0.4" ] }, + "@std/internal@1.0.4": { + "integrity": "62e8e4911527e5e4f307741a795c0b0a9e6958d0b3790716ae71ce085f755422" + }, "@std/io@0.221.0": { "integrity": "faf7f8700d46ab527fa05cc6167f4b97701a06c413024431c6b4d207caa010da", "dependencies": [ diff --git a/.ghjk/lock.json b/.ghjk/lock.json index a2e92294b..02bd5a89b 100644 --- a/.ghjk/lock.json +++ b/.ghjk/lock.json @@ -988,7 +988,7 @@ "version-print": { "ty": "denoFile@v1", "key": "version-print", - "desc": "Print $METATYPE_VERSION", + "desc": "Print $CURRENT_VERSION", "envKey": "bciqori26ml2iqph3izifvvfsf4b2ar3yddr344utbfstyk2v33ot3mq" }, "test-rust": { diff --git a/deno.lock b/deno.lock index 12669bd8b..6458ce5a9 100644 --- a/deno.lock +++ b/deno.lock @@ -5,6 +5,8 @@ "jsr:@david/dax@0.41.0": "jsr:@david/dax@0.41.0", "jsr:@david/which@^0.4.1": "jsr:@david/which@0.4.1", "jsr:@std/assert@^0.221.0": "jsr:@std/assert@0.221.0", + "jsr:@std/assert@^1.0.2": "jsr:@std/assert@1.0.6", + "jsr:@std/assert@^1.0.3": "jsr:@std/assert@1.0.6", "jsr:@std/assert@^1.0.4": "jsr:@std/assert@1.0.6", "jsr:@std/assert@^1.0.6": "jsr:@std/assert@1.0.6", "jsr:@std/async@^1.0.3": "jsr:@std/async@1.0.5", @@ -40,6 +42,7 @@ "jsr:@std/path@^1.0.2": "jsr:@std/path@1.0.8", "jsr:@std/path@^1.0.4": "jsr:@std/path@1.0.4", "jsr:@std/path@^1.0.8": "jsr:@std/path@1.0.8", + "jsr:@std/semver": "jsr:@std/semver@1.0.3", "jsr:@std/semver@^1.0.1": "jsr:@std/semver@1.0.3", "jsr:@std/streams@0.221.0": "jsr:@std/streams@0.221.0", "jsr:@std/streams@1": "jsr:@std/streams@1.0.4", diff --git a/ghjk.ts b/ghjk.ts index b11abd6ae..2fa4e33b9 100644 --- a/ghjk.ts +++ b/ghjk.ts @@ -3,8 +3,13 @@ // @ts-nocheck: Deno file -import { METATYPE_VERSION, PUBLISHED_VERSION } from "./tools/consts.ts"; +import { + CURRENT_VERSION, + LATEST_PRE_RELEASE_VERSION, + LATEST_RELEASE_VERSION, +} from "./tools/consts.ts"; import { file, ports, sedLock, semver, stdDeps } from "./tools/deps.ts"; +import { validateVersions } from "./tools/tasks/lock.ts"; import installs from "./tools/installs.ts"; import tasks from "./tools/tasks/mod.ts"; @@ -116,11 +121,12 @@ env("dev") ports.cargobi({ crateName: "git-cliff", locked: true }), ); -task("version-print", () => console.log(METATYPE_VERSION), { - desc: "Print $METATYPE_VERSION", +task("version-print", () => console.log(CURRENT_VERSION), { + desc: "Print $CURRENT_VERSION", }); task("version-bump", async ($) => { + validateVersions(); const bumps = [ "major", "premajor", @@ -140,7 +146,7 @@ task("version-bump", async ($) => { const newVersion = semver.format( semver.increment( - semver.parse(METATYPE_VERSION), + semver.parse(CURRENT_VERSION), bump as semver.ReleaseType, { prerelease: "rc", @@ -148,15 +154,17 @@ task("version-bump", async ($) => { ), ); - $.logStep(`Bumping ${METATYPE_VERSION} → ${newVersion}`); - const lines = [[/^(export const METATYPE_VERSION = ").*(";)$/, newVersion]]; + $.logStep(`Bumping ${CURRENT_VERSION} → ${newVersion}`); + const lines = [[/^(export const CURRENT_VERSION = ").*(";)$/, newVersion]]; if (bump === "prerelease") { $.logStep( - `Bumping published version ${PUBLISHED_VERSION} → ${METATYPE_VERSION}`, + `Bumping published version ${ + LATEST_PRE_RELEASE_VERSION || LATEST_RELEASE_VERSION + } → ${CURRENT_VERSION}`, ); lines.push([ /^(export const PUBLISHED_VERSION = ").*(";)$/, - METATYPE_VERSION, + CURRENT_VERSION, ]); } diff --git a/src/common/src/typegraph/mod.rs b/src/common/src/typegraph/mod.rs index f33c8857e..f43cc59f1 100644 --- a/src/common/src/typegraph/mod.rs +++ b/src/common/src/typegraph/mod.rs @@ -97,6 +97,9 @@ pub struct TypeMeta { pub version: String, pub random_seed: Option, pub artifacts: BTreeMap, + #[serde(skip_serializing_if = "Vec::is_empty")] + #[serde(default)] + pub namespaces: Vec, } #[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] diff --git a/src/typegate/src/engine/planner/mod.ts b/src/typegate/src/engine/planner/mod.ts index 59d77e2a6..9c42d2273 100644 --- a/src/typegate/src/engine/planner/mod.ts +++ b/src/typegate/src/engine/planner/mod.ts @@ -545,12 +545,13 @@ export class Planner { const inputType = this.tg.type(inputIdx, Type.OBJECT); const argumentTypes = mapValues( inputType.properties, - (idx, key) => - this.tg.getGraphQLType( + (idx, key) => { + return this.tg.getGraphQLType( this.tg.type(idx), false, - inputType.id.includes(key), - ), + inputType.id?.includes(key) ?? false, + ); + }, ); const stage = this.createComputeStage(node, { diff --git a/src/typegate/src/runtimes/deno/deno.ts b/src/typegate/src/runtimes/deno/deno.ts index c98ad0f50..bfd8130fa 100644 --- a/src/typegate/src/runtimes/deno/deno.ts +++ b/src/typegate/src/runtimes/deno/deno.ts @@ -215,6 +215,7 @@ export class DenoRuntime extends Runtime { return [stage.withResolver(this.delegate(mat, verbose))]; } + console.log("root type", this.tg.types[0]); if (this.tg.meta.namespaces!.includes(stage.props.typeIdx)) { return [stage.withResolver(() => ({}))]; } diff --git a/src/typegate/src/transports/graphql/typegraph.ts b/src/typegate/src/transports/graphql/typegraph.ts index b504a6cb9..74c94eabe 100644 --- a/src/typegate/src/transports/graphql/typegraph.ts +++ b/src/typegate/src/transports/graphql/typegraph.ts @@ -144,3 +144,26 @@ export function parseGraphQLTypeGraph(tgOrig: TypeGraphDS): TypeGraphDS { return typegraph; } + +// TEMPORARY +export function setNamespaces(tg: TypeGraphDS) { + if (tg.meta.namespaces != null) { + return; + } + const namespaces: number[] = []; + + const rootNode = tg.types[0] as ObjectNode; + + const addNamespacesFrom = (node: ObjectNode, nodeIdx: number) => { + namespaces.push(nodeIdx); + for (const [, typeIdx] of Object.entries(node.properties)) { + const childNode = tg.types[typeIdx]; + if (childNode.type === Type.OBJECT) { + addNamespacesFrom(childNode, typeIdx); + } + } + }; + + addNamespacesFrom(rootNode, 0); + tg.meta.namespaces = namespaces; +} diff --git a/src/typegate/src/typegate/mod.ts b/src/typegate/src/typegate/mod.ts index 05c73ee53..143b3f4d0 100644 --- a/src/typegate/src/typegate/mod.ts +++ b/src/typegate/src/typegate/mod.ts @@ -33,7 +33,9 @@ import { handleGraphQL } from "../services/graphql_service.ts"; import { getLogger } from "../log.ts"; import { MigrationFailure } from "../runtimes/prisma/hooks/run_migrations.ts"; import { DenoFailure } from "../runtimes/deno/hooks/mod.ts"; -import introspectionJson from "../typegraphs/introspection.json" with { type: "json" }; +import introspectionJson from "../typegraphs/introspection.json" with { + type: "json", +}; import { ArtifactService } from "../services/artifact_service.ts"; import type { ArtifactStore } from "./artifacts/mod.ts"; // TODO move from tests (MET-497) @@ -360,6 +362,7 @@ export class Typegate implements AsyncDisposable { ); logger.info(`Registering engine '${name}'`); + logger.info("registering {}", this.register.constructor.name); await this.register.add(engine); const newArtifacts = new Set( @@ -402,14 +405,14 @@ export class Typegate implements AsyncDisposable { const introspection = enableIntrospection ? await TypeGraph.init( - this, - introspectionDef, - new SecretManager(introspectionDef, {}), - { - typegraph: TypeGraphRuntime.init(tgDS, [], {}), - }, - null, - ) + this, + introspectionDef, + new SecretManager(introspectionDef, {}), + { + typegraph: TypeGraphRuntime.init(tgDS, [], {}), + }, + null, + ) : null; const tg = await TypeGraph.init( diff --git a/src/typegate/src/typegate/register.ts b/src/typegate/src/typegate/register.ts index 34d13cb26..213c604c6 100644 --- a/src/typegate/src/typegate/register.ts +++ b/src/typegate/src/typegate/register.ts @@ -11,6 +11,7 @@ import { } from "../typegraph/versions.ts"; import { typegraphIdSchema, type TypegraphStore } from "../sync/typegraph.ts"; import { RedisReplicatedMap } from "../sync/replicated_map.ts"; +import { setNamespaces } from "../transports/graphql/typegraph.ts"; export interface MessageEntry { type: "info" | "warning" | "error"; @@ -60,6 +61,12 @@ export class ReplicatedRegister extends Register { typegraphId, ); + // temparary hack + // FIXME why are namespaces not set?? + if (tg.meta.namespaces == null) { + setNamespaces(tg); + } + // typegraph is updated while being pushed, this is only for initial load const hasUpgrade = (initialLoad && isTypegraphUpToDate(tg)) || true; console.log({ hasUpgrade }); @@ -97,6 +104,7 @@ export class ReplicatedRegister extends Register { } async add(engine: QueryEngine): Promise { + console.debug("meta", engine.tg.tg.meta); if (SystemTypegraph.check(engine.name)) { // no need for a sync this.replicatedMap.memory.set(engine.name, engine); diff --git a/src/typegate/src/typegraph/types.ts b/src/typegate/src/typegraph/types.ts index ce2d855bc..2cdf64c5c 100644 --- a/src/typegate/src/typegraph/types.ts +++ b/src/typegate/src/typegraph/types.ts @@ -68,7 +68,7 @@ export type ObjectNode = { [k: string]: number; }; required?: string[]; - id: string[]; + id?: string[]; }; export type ListNode = { type: "list"; diff --git a/src/typegate/src/typegraph/versions.ts b/src/typegate/src/typegraph/versions.ts index 47ecfdd4a..a6b8b4381 100644 --- a/src/typegate/src/typegraph/versions.ts +++ b/src/typegate/src/typegraph/versions.ts @@ -56,7 +56,7 @@ const typegraphChangelog: Record< const prop = x.types[typeIdx]; if ("injection" in prop) { console.log({ injection: prop.injection, path }); - throw new Error("injection"); + // throw new Error("injection"); } if (prop.type === Type.OBJECT) { traverse(prop); diff --git a/src/typegraph/core/src/typegraph.rs b/src/typegraph/core/src/typegraph.rs index b5480ddaf..fa41dc8d2 100644 --- a/src/typegraph/core/src/typegraph.rs +++ b/src/typegraph/core/src/typegraph.rs @@ -108,7 +108,6 @@ pub fn init(params: TypegraphInitParams) -> Result<()> { dynamic: params.dynamic.unwrap_or(true), endpoints: vec![], }, - cors: params.cors.into(), auths: vec![], prefix: params.prefix, @@ -117,6 +116,7 @@ pub fn init(params: TypegraphInitParams) -> Result<()> { outjection_secrets: vec![], random_seed: Default::default(), artifacts: Default::default(), + namespaces: Default::default(), }, types: vec![], saved_store_state: Some(Store::save()), diff --git a/tests/e2e/published/config.ts b/tests/e2e/published/config.ts new file mode 100644 index 000000000..99e3b447b --- /dev/null +++ b/tests/e2e/published/config.ts @@ -0,0 +1,61 @@ +import { transformSyncConfig } from "@metatype/typegate/config.ts"; +import { clearSyncData, setupSync } from "test-utils/hooks.ts"; + +const defaultSyncEnvs = { + // SYNC_REDIS_URL: "redis://:password@localhost:6379/12", + SYNC_S3_HOST: "http://localhost:9000", + SYNC_S3_REGION: "local", + SYNC_S3_ACCESS_KEY: "minio", + SYNC_S3_SECRET_KEY: "password", + // SYNC_S3_BUCKET: "upgrade-test", + SYNC_S3_PATH_STYLE: "true", +}; + +export function config(p: { redisDb: number; s3Bucket: string }) { + const syncEnvs = { + SYNC_REDIS_URL: `redis://:password@localhost:6379/${p.redisDb}`, + SYNC_S3_BUCKET: p.s3Bucket, + ...defaultSyncEnvs, + }; + const syncConfig = transformSyncConfig({ + redis_url: new URL(syncEnvs.SYNC_REDIS_URL), + s3_host: new URL(syncEnvs.SYNC_S3_HOST), + s3_region: syncEnvs.SYNC_S3_REGION, + s3_access_key: syncEnvs.SYNC_S3_ACCESS_KEY, + s3_secret_key: syncEnvs.SYNC_S3_SECRET_KEY, + s3_bucket: syncEnvs.SYNC_S3_BUCKET, + s3_path_style: true, + }); + + return { syncConfig, syncEnvs }; +} + +export class Config { + syncEnvs: Record; + syncConfig: ReturnType; + + constructor(redisDb: number, s3Bucket: string) { + this.syncEnvs = { + SYNC_REDIS_URL: `redis://:password@localhost:6379/${redisDb}`, + SYNC_S3_BUCKET: s3Bucket, + ...defaultSyncEnvs, + }; + this.syncConfig = transformSyncConfig({ + redis_url: new URL(this.syncEnvs.SYNC_REDIS_URL), + s3_host: new URL(this.syncEnvs.SYNC_S3_HOST), + s3_region: this.syncEnvs.SYNC_S3_REGION, + s3_access_key: this.syncEnvs.SYNC_S3_ACCESS_KEY, + s3_secret_key: this.syncEnvs.SYNC_S3_SECRET_KEY, + s3_bucket: this.syncEnvs.SYNC_S3_BUCKET, + s3_path_style: true, + }); + } + + async clearSyncData() { + await clearSyncData(this.syncConfig); + } + + async setupSync() { + await setupSync(this.syncConfig); + } +} diff --git a/tests/e2e/published/published_test.ts b/tests/e2e/published/published_test.ts deleted file mode 100644 index 8eb2eb437..000000000 --- a/tests/e2e/published/published_test.ts +++ /dev/null @@ -1,455 +0,0 @@ -// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. -// SPDX-License-Identifier: MPL-2.0 - -import { Meta } from "test-utils/mod.ts"; -import { projectDir } from "@local/tools/utils.ts"; -import { $ } from "@local/tools/deps.ts"; -import { PUBLISHED_VERSION, PYTHON_VERSION } from "@local/tools/consts.ts"; -import { download } from "download"; -import { Untar } from "@std/archive/untar"; -import { copy } from "@std/io/copy"; -import { readerFromStreamReader } from "@std/io/reader-from-stream-reader"; -import { encodeBase64 } from "@std/encoding/base64"; -import { Lines } from "test-utils/process.ts"; -import { newTempDir } from "test-utils/dir.ts"; -import { transformSyncConfig } from "@metatype/typegate/config.ts"; -import { clearSyncData, setupSync } from "test-utils/hooks.ts"; -import { assertEquals } from "@std/assert"; - -// const previousVersion = PUBLISHED_VERSION; -const previousVersion = "0.4.10"; - -const tempDir = $.path(projectDir).join("tmp"); - -function getAssetName(version: string) { - return `meta-cli-v${version}-${Deno.build.target}`; -} - -const syncEnvs = { - SYNC_REDIS_URL: "redis://:password@localhost:6379/12", - SYNC_S3_HOST: "http://localhost:9000", - SYNC_S3_REGION: "local", - SYNC_S3_ACCESS_KEY: "minio", - SYNC_S3_SECRET_KEY: "password", - SYNC_S3_BUCKET: "upgrade-test", - SYNC_S3_PATH_STYLE: "true", -}; - -const syncConfig = transformSyncConfig({ - redis_url: new URL(syncEnvs.SYNC_REDIS_URL), - s3_host: new URL(syncEnvs.SYNC_S3_HOST), - s3_region: syncEnvs.SYNC_S3_REGION, - s3_access_key: syncEnvs.SYNC_S3_ACCESS_KEY, - s3_secret_key: syncEnvs.SYNC_S3_SECRET_KEY, - s3_bucket: syncEnvs.SYNC_S3_BUCKET, - s3_path_style: true, -}); -console.log(syncConfig); - -// TODO remove after the next release -// The build.rs script now uses a META_CMD env var allowing us -// to use meta-old -const disabled = [ - "metagen-rs.ts", -]; - -async function checkMetaBin(path: typeof tempDir, version: string) { - try { - if (!(await path.exists())) { - return false; - } - const res = await $`bash -c 'meta-old --version'` - .env("PATH", `${path.parent()!.toString()}:${Deno.env.get("PATH")}`) - .stdout("piped"); - if (res.stdout.includes(version)) { - return true; - } - throw new Error(`version mismatch: ${res.stdout}`); - } catch (e) { - console.error(e); - return false; - } -} - -// download the fat version of the cli on the latest stable release -export async function downloadAndExtractCli(version: string) { - const name = getAssetName(version); - const extractTargetDir = tempDir.join(name); - const metaBin = extractTargetDir.join("meta-old"); - if (await checkMetaBin(metaBin, version)) { - return metaBin.toString(); - } - const url = - `https://github.com/metatypedev/metatype/releases/download/v${version}/${name}.tar.gz`; - console.log("Downloading from", url); - const archiveName = `${name}.tar.gz`; - const _fileObj = await download(url, { - file: archiveName, - dir: tempDir.toString(), - }); - const archivePath = tempDir.join(archiveName); - using file = await Deno.open(archivePath.toString()); - const reader = file.readable.pipeThrough(new DecompressionStream("gzip")); - const untar = new Untar(readerFromStreamReader(reader.getReader())); - - await extractTargetDir.ensureDir(); - - for await (const entry of untar) { - if (entry.fileName !== "meta") { - throw new Error("unexpected"); - } - using target = await Deno.open(metaBin.toString(), { - create: true, - write: true, - mode: 0o755, - }); - const res = await copy(entry, target); - console.log(`successfully written ${res} bytes`); - } - - await Deno.remove(archivePath.toString()); - - if (!(await checkMetaBin(metaBin, version))) { - throw new Error("unexpected"); - } - return metaBin.toString(); -} - -// This also tests the published NPM version of the SDK -Meta.test.only( - { - name: "typegate upgrade", - async setup() { - await clearSyncData(syncConfig); - await setupSync(syncConfig); - }, - async teardown() { - await clearSyncData(syncConfig); - }, - }, - async (t) => { - let publishedBin = ""; - await t.should("download published cli (fat version)", async () => { - publishedBin = await downloadAndExtractCli(previousVersion); - }); - - const metaBinDir = $.path(publishedBin).parent()!.toString(); - const tgSecret = encodeBase64( - globalThis.crypto.getRandomValues(new Uint8Array(64)), - ); - - const typegateTempDir = await newTempDir(); - const repoDir = await newTempDir(); - const examplesDir = $.path( - await newTempDir({ - dir: undefined, - }), - ); - t.addCleanup(async () => { - await $.co([ - $.removeIfExists(typegateTempDir), - $.removeIfExists(repoDir), - // $.removeIfExists(examplesDir), - ]); - }); - - const port = String(t.port + 1); - - const proc = new Deno.Command("meta-old", { - args: ["typegate"], - env: { - ...Deno.env.toObject(), - LOG_LEVEL: "DEBUG", - PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, - TG_SECRET: tgSecret, - TG_ADMIN_PASSWORD: "password", - TMP_DIR: typegateTempDir, - TG_PORT: port, - // TODO should not be necessary - VERSION: previousVersion, - ...syncEnvs, - }, - stdout: "piped", - }).spawn(); - - await t.should( - "download example typegraphs for the published version", - async () => { - const tag = `v${previousVersion}`; - - // FIXME: cache across test runs - await $`git clone https://github.com/metatypedev/metatype.git --depth 1 --branch ${tag}` - .cwd(repoDir) - .stdout("piped") - .stderr("piped") - .printCommand(); - - await $.path(repoDir).join("metatype/examples").copy(examplesDir, { - overwrite: true, - }); - const typegraphsDir = examplesDir.join("typegraphs"); - for await (const entry of typegraphsDir.readDir()) { - const path = typegraphsDir.relative(entry.path); - if (disabled.includes(path.toString())) { - await entry.path.remove().catch((_e) => {}); - } - } - - // NOTE: we clean out the deno.json used by the examples - // before adding the published version - // by default @typegraph/sdk/ needs that trailing slash - // due to https://github.com/WICG/import-maps?tab=readme-ov-file#packages-via-trailing-slashes - await examplesDir.join("deno.json").writeJson({}); - await $.raw`bash -c 'deno add @typegraph/sdk@${previousVersion}'` - .cwd(examplesDir) - .stdout("inherit") - .printCommand(); - }, - ); - - const typegraphs: string[] = []; - - const stdout = new Lines(proc.stdout); - await stdout.readWhile((line) => { - console.log(`typegate>`, line); - return !line.includes(`typegate ready on ${port}`); - }); - stdout.readWhile((line) => { - const match = line.match(/Initializing engine '(.+)'/); - if (match) { - typegraphs.push(match[1]); - } - console.log("typegate counting matches>", line); - return true; - }, null); - - await t.should("successfully deploy on the published version", async () => { - const command = - `meta-old deploy --target dev --threads=4 --allow-dirty --gate http://localhost:${port} -vvv -f func.ts`; - const res = await $`bash -c ${command}` - .cwd(examplesDir.join("typegraphs")) - .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`); - console.log(res); - }); - - await stdout.close(); - proc.kill("SIGKILL"); - const status = await proc.status; - console.log({ status }); - - const typegraphs2: string[] = []; - - await t.should("upgrade the typegate to the current version", async () => { - const port = String(t.port + 2); - const proc = new Deno.Command("meta-full", { - args: [ - "typegate", - `--main-url`, - import.meta.resolve("../../../src/typegate/src/main.ts"), - `--import-map-url`, - import.meta.resolve("../../../import_map.json"), - ], - env: { - ...Deno.env.toObject(), - TG_SECRET: tgSecret, - TG_ADMIN_PASSWORD: "password", - TMP_DIR: typegateTempDir, - TG_PORT: `${port}`, - // TODO should not be necessary - VERSION: previousVersion, - ...syncEnvs, - }, - stdout: "piped", - }).spawn(); - - const stdout = new Lines(proc.stdout); - - await stdout.readWhile((line) => { - console.log("typegate>", line); - const match = $.stripAnsi(line).match(/reloaded addition: (.+)/); - if (match) { - typegraphs2.push(match[1]); - } - return !line.includes(`typegate ready on :${port}`); - }); - - await stdout.close(); - proc.kill("SIGKILL"); - const status = await proc.status; - console.log({ status }); - }); - - console.log({ typegraphs: typegraphs.sort() }); - - await t.should("have the same typegraphs", () => { - assertEquals(typegraphs.sort(), typegraphs2.sort()); - }); - - await Deno.remove(typegateTempDir, { recursive: true }); - }, -); - -Meta.test( - { - name: "published SDK tests", - async setup() { - await clearSyncData(syncConfig); - await setupSync(syncConfig); - }, - async teardown() { - await clearSyncData(syncConfig); - }, - }, - async (t) => { - let publishedBin = ""; - await t.should("download published cli (fat version)", async () => { - publishedBin = await downloadAndExtractCli(previousVersion); - }); - - const metaBinDir = $.path(publishedBin).parent()!.toString(); - - const tmpDir = $.path(t.tempDir); - const tgSecret = encodeBase64( - globalThis.crypto.getRandomValues(new Uint8Array(64)), - ); - - const typegateTempDir = await tmpDir.join(".metatype").ensureDir(); - - const port = String(t.port - 10); - - const proc = $`bash -c 'meta-old typegate -vvvv'` - .env({ - PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, - TG_SECRET: tgSecret, - TG_ADMIN_PASSWORD: "password", - TMP_DIR: typegateTempDir.toString(), - TG_PORT: `${port}`, - // TODO should not be necessary - VERSION: previousVersion, - DEBUG: "true", - ...syncEnvs, - }) - .stdout("piped") - .noThrow() - .spawn(); - - const stdout = new Lines(proc.stdout()); - console.log("waiting on typegate to be ready"); - - await stdout.readWhile((line) => { - console.error("typegate>", line); - return !line.includes(`typegate ready on ${port}`); - }); - - const tgsDir = $.path( - await newTempDir({ - dir: undefined, - }), - ); - // t.addCleanup(() => $.removeIfExists(tgsDir)); - - await tgsDir.join("metatype.yml").writeText(` -typegates: - dev: - url: "http://localhost:${port}" - username: admin - password: password - secrets: - roadmap-func: - POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=roadmap_func2" - BASIC_andim: hunter2 - -typegraphs: - materializers: - prisma: - migrations_path: "migrations" -`); - // FIXME: enable after 0.5.0.-rc.8 releases - /* await t.should("work with JSR npm", async () => { - const npmJsrDir = await tgsDir.join("npm_jsr").ensureDir(); - await $`pnpm init`.cwd(npmJsrDir); - await $`pnpm --package=jsr dlx jsr add @typegraph/sdk@${PUBLISHED_VERSION}` - .cwd( - npmJsrDir, - ); - await $.co([ - $.path("examples/typegraphs/func.ts").copy(npmJsrDir.join("tg.ts")), - $.path("examples/typegraphs/scripts").copyToDir(npmJsrDir), - $.path("examples/templates/node/tsconfig.json").copyToDir(npmJsrDir), - npmJsrDir - .join("package.json") - .readJson() - .then((pkg) => - npmJsrDir - .join("package.json") - .writeJson({ ...(pkg as object), type: "module" }) - ), - ]); - - const command = - `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; - await $`bash -c ${command}` - .cwd(npmJsrDir) - .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - .env("MCLI_LOADER_CMD", "pnpm --package=tsx dlx tsx") - .env("RUST_LOG", "trace"); - }); - - await t.should("work with JSR deno", async () => { - const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); - await denoJsrDir.join("deno.json").writeJson({}); - await $`bash -c 'deno add @typegraph/sdk@${PUBLISHED_VERSION}'`.cwd( - denoJsrDir, - ); - await $.co([ - $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), - $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), - ]); - - const command = - `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; - await $`bash -c ${command}` - .cwd(denoJsrDir) - .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - // FIXME: rename to deno.jsonc on bump 0.4.9 - .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) - .env("RUST_LOG", "trace"); - }); */ - - await t.should("work with pypa", async () => { - const pypaDir = await tgsDir.join("pypa").ensureDir(); - await $ - .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${PUBLISHED_VERSION}` - .cwd( - pypaDir, - ); - await $.co([ - pypaDir.join("README.md").ensureFile(), - $`bash -sx` - .stdinText([ - `python3 -m venv .venv`, - `source .venv/bin/activate`, - `poetry install --no-root`, - ].join("\n")) - .cwd( - pypaDir, - ), - $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), - $.path("examples/typegraphs/scripts").copyToDir(pypaDir), - ]); - - const command = `source .venv/bin/activate &&` + - ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; - await $`bash -c ${command}` - .cwd(pypaDir) - .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - .env("MCLI_LOADER_PY", `poetry run python`) - .env("RUST_LOG", "trace"); - }); - - proc.kill("SIGKILL"); - const status = await proc; - console.log({ status }); - await stdout.close(); - }, -); diff --git a/tests/e2e/published/sdk_test.ts b/tests/e2e/published/sdk_test.ts new file mode 100644 index 000000000..1aa3a889b --- /dev/null +++ b/tests/e2e/published/sdk_test.ts @@ -0,0 +1,177 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { Meta } from "test-utils/mod.ts"; +import { $ } from "@local/tools/deps.ts"; +import { PUBLISHED_VERSION, PYTHON_VERSION } from "@local/tools/consts.ts"; +import { encodeBase64 } from "@std/encoding/base64"; +import { Lines } from "test-utils/process.ts"; +import { newTempDir } from "test-utils/dir.ts"; +import { downloadAndExtractCli } from "./utils.ts"; +import { Config } from "./config.ts"; + +const testConfig = new Config(12, "published-sdk-test"); + +// const previousVersion = PUBLISHED_VERSION; +const previousVersion = "0.4.10"; + +Meta.test.only( + { + name: "published SDK tests", + async setup() { + await testConfig.clearSyncData(); + await testConfig.setupSync(); + }, + async teardown() { + await testConfig.clearSyncData(); + }, + }, + async (t) => { + // const previousVersion = PUBLISHED_VERSION; + let publishedBin = ""; + await t.should("download published cli (fat version)", async () => { + publishedBin = await downloadAndExtractCli(previousVersion); + }); + + const metaBinDir = $.path(publishedBin).parent()!.toString(); + + const tmpDir = $.path(t.tempDir); + const tgSecret = encodeBase64( + globalThis.crypto.getRandomValues(new Uint8Array(64)), + ); + + const typegateTempDir = await tmpDir.join(".metatype").ensureDir(); + + const port = String(t.port - 10); + + const proc = $`bash -c 'meta-old typegate -vvvv'` + .env({ + PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, + TG_SECRET: tgSecret, + TG_ADMIN_PASSWORD: "password", + TMP_DIR: typegateTempDir.toString(), + TG_PORT: `${port}`, + // TODO should not be necessary + VERSION: previousVersion, + DEBUG: "true", + ...testConfig.syncEnvs, + }) + .stdout("piped") + .noThrow() + .spawn(); + + const stdout = new Lines(proc.stdout()); + console.log("waiting on typegate to be ready"); + + await stdout.readWhile((line) => { + console.error("typegate>", line); + return !line.includes(`typegate ready on ${port}`); + }); + + const tgsDir = $.path( + await newTempDir({ + dir: undefined, + }), + ); + // t.addCleanup(() => $.removeIfExists(tgsDir)); + + await tgsDir.join("metatype.yml").writeText(` +typegates: + dev: + url: "http://localhost:${port}" + username: admin + password: password + secrets: + roadmap-func: + POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=roadmap_func2" + BASIC_andim: hunter2 + +typegraphs: + materializers: + prisma: + migrations_path: "migrations" +`); + + // await t.should("work with JSR npm", async () => { + // const npmJsrDir = await tgsDir.join("npm_jsr").ensureDir(); + // await $`pnpm init`.cwd(npmJsrDir); + // await $`pnpm --package=jsr dlx jsr add @typegraph/sdk@${previousVersion}` + // .cwd( + // npmJsrDir, + // ); + // await $.co([ + // $.path("examples/typegraphs/func.ts").copy(npmJsrDir.join("tg.ts")), + // $.path("examples/typegraphs/scripts").copyToDir(npmJsrDir), + // $.path("examples/templates/node/tsconfig.json").copyToDir(npmJsrDir), + // npmJsrDir + // .join("package.json") + // .readJson() + // .then((pkg) => + // npmJsrDir + // .join("package.json") + // .writeJson({ ...(pkg as object), type: "module" }) + // ), + // ]); + // + // const command = + // `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + // await $`bash -c ${command}` + // .cwd(npmJsrDir) + // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // .env("MCLI_LOADER_CMD", "pnpm --package=tsx dlx tsx") + // .env("RUST_LOG", "trace"); + // }); + + // await t.should("work with JSR deno", async () => { + // const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); + // await denoJsrDir.join("deno.json").writeJson({}); + // await $`bash -c 'deno add @typegraph/sdk@${previousVersion}'`.cwd( + // denoJsrDir, + // ); + // await $.co([ + // $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), + // $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), + // ]); + // + // const command = + // `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + // await $`bash -c ${command}` + // .cwd(denoJsrDir) + // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // // FIXME: rename to deno.jsonc on bump 0.4.9 + // .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) + // .env("RUST_LOG", "trace"); + // }); + // + // await t.should("work with pypa", async () => { + // const pypaDir = await tgsDir.join("pypa").ensureDir(); + // await $ + // .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${previousVersion}` + // .cwd( + // pypaDir, + // ); + // await $.co([ + // pypaDir.join("README.md").ensureFile(), + // $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` + // .cwd( + // pypaDir, + // ), + // $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), + // $.path("examples/typegraphs/scripts").copyToDir(pypaDir), + // ]); + // + // const command = `source .venv/bin/activate &&` + + // ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; + // await $`bash -c ${command}` + // .cwd(pypaDir) + // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // .env("MCLI_LOADER_PY", `poetry run python`) + // .env("RUST_LOG", "trace"); + // }); + + proc.kill("SIGKILL"); + const status = await proc; + console.log({ status }); + await stdout.close(); + }, +); diff --git a/tests/e2e/published/typegate_upgrade_test.ts b/tests/e2e/published/typegate_upgrade_test.ts new file mode 100644 index 000000000..59d0c240c --- /dev/null +++ b/tests/e2e/published/typegate_upgrade_test.ts @@ -0,0 +1,194 @@ +import { Meta } from "test-utils/mod.ts"; +import { $ } from "@local/tools/deps.ts"; +import { encodeBase64 } from "@std/encoding/base64"; +import { newTempDir } from "test-utils/dir.ts"; +import { Config } from "./config.ts"; +import { downloadAndExtractCli } from "./utils.ts"; +import { Lines } from "test-utils/process.ts"; +import { assertEquals } from "@std/assert"; +import { LATEST_RELEASE_VERSION } from "@local/tools/consts.ts"; + +// TODO remove after the next release +// The build.rs script now uses a META_CMD env var allowing us +// to use meta-old +const disabled: string[] = [ + "metagen-rs.ts", +]; + +const testConfig = new Config(13, "typegate-upgrade-test"); + +const previousVersion = LATEST_RELEASE_VERSION; + +// This also tests the published NPM version of the SDK +Meta.test( + { + name: "typegate upgrade", + async setup() { + await testConfig.clearSyncData(); + await testConfig.setupSync(); + }, + async teardown() { + await testConfig.clearSyncData(); + }, + }, + async (t) => { + let publishedBin = ""; + await t.should("download published cli (fat version)", async () => { + publishedBin = await downloadAndExtractCli(previousVersion); + }); + + const metaBinDir = $.path(publishedBin).parent()!.toString(); + const tgSecret = encodeBase64( + globalThis.crypto.getRandomValues(new Uint8Array(64)), + ); + + const typegateTempDir = await newTempDir(); + const repoDir = await newTempDir(); + const examplesDir = $.path( + await newTempDir({ + dir: undefined, + }), + ); + t.addCleanup(async () => { + await $.co([ + $.removeIfExists(typegateTempDir), + $.removeIfExists(repoDir), + // $.removeIfExists(examplesDir), + ]); + }); + + const port = String(t.port + 1); + + const proc = new Deno.Command("meta-old", { + args: ["typegate"], + env: { + ...Deno.env.toObject(), + LOG_LEVEL: "DEBUG", + PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, + TG_SECRET: tgSecret, + TG_ADMIN_PASSWORD: "password", + TMP_DIR: typegateTempDir, + TG_PORT: port, + // TODO should not be necessary + VERSION: previousVersion, + ...testConfig.syncEnvs, + }, + stdout: "piped", + }).spawn(); + + await t.should( + "download example typegraphs for the published version", + async () => { + const tag = `v${previousVersion}`; + + // FIXME: cache across test runs + await $`git clone https://github.com/metatypedev/metatype.git --depth 1 --branch ${tag}` + .cwd(repoDir) + .stdout("piped") + .stderr("piped") + .printCommand(); + + await $.path(repoDir).join("metatype/examples").copy(examplesDir, { + overwrite: true, + }); + const typegraphsDir = examplesDir.join("typegraphs"); + for await (const entry of typegraphsDir.readDir()) { + const path = typegraphsDir.relative(entry.path); + if (disabled.includes(path.toString())) { + await entry.path.remove().catch((_e) => {}); + } + } + + // NOTE: we clean out the deno.json used by the examples + // before adding the published version + // by default @typegraph/sdk/ needs that trailing slash + // due to https://github.com/WICG/import-maps?tab=readme-ov-file#packages-via-trailing-slashes + await examplesDir.join("deno.json").writeJson({}); + await $.raw`bash -c 'deno add @typegraph/sdk@${previousVersion}'` + .cwd(examplesDir) + .stdout("inherit") + .printCommand(); + }, + ); + + const typegraphs: string[] = []; + + const stdout = new Lines(proc.stdout); + await stdout.readWhile((line) => { + console.log(`typegate>`, line); + return !line.includes(`typegate ready on ${port}`); + }); + stdout.readWhile((line) => { + const match = line.match(/Initializing engine '(.+)'/); + if (match) { + typegraphs.push(match[1]); + } + console.log("typegate counting matches>", line); + return true; + }, null); + + await t.should("successfully deploy on the published version", async () => { + const command = + `meta-old deploy --target dev --threads=4 --allow-dirty --gate http://localhost:${port} -vvv`; + const res = await $`bash -c ${command}` + .cwd(examplesDir.join("typegraphs")) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`); + console.log(res); + }); + + await stdout.close(); + proc.kill("SIGKILL"); + const status = await proc.status; + console.log({ status }); + + const typegraphs2: string[] = []; + + await t.should("upgrade the typegate to the current version", async () => { + const port = String(t.port + 2); + const proc = new Deno.Command("meta-full", { + args: [ + "typegate", + `--main-url`, + import.meta.resolve("../../../src/typegate/src/main.ts"), + `--import-map-url`, + import.meta.resolve("../../../import_map.json"), + ], + env: { + ...Deno.env.toObject(), + TG_SECRET: tgSecret, + TG_ADMIN_PASSWORD: "password", + TMP_DIR: typegateTempDir, + TG_PORT: `${port}`, + // TODO should not be necessary + VERSION: previousVersion, + ...testConfig.syncEnvs, + }, + stdout: "piped", + }).spawn(); + + const stdout = new Lines(proc.stdout); + + await stdout.readWhile((line) => { + console.log("typegate>", line); + const match = $.stripAnsi(line).match(/reloaded addition: (.+)/); + if (match) { + typegraphs2.push(match[1]); + } + return !line.includes(`typegate ready on :${port}`); + }); + + await stdout.close(); + proc.kill("SIGKILL"); + const status = await proc.status; + console.log({ status }); + }); + + console.log({ typegraphs: typegraphs.sort() }); + + await t.should("have the same typegraphs", () => { + assertEquals(typegraphs.sort(), typegraphs2.sort()); + }); + + await Deno.remove(typegateTempDir, { recursive: true }); + }, +); diff --git a/tests/e2e/published/utils.ts b/tests/e2e/published/utils.ts new file mode 100644 index 000000000..527046344 --- /dev/null +++ b/tests/e2e/published/utils.ts @@ -0,0 +1,76 @@ +import { $ } from "@local/tools/deps.ts"; +import { projectDir } from "@local/tools/utils.ts"; + +import { download } from "download"; +import { Untar } from "@std/archive/untar"; +import { copy } from "@std/io/copy"; +import { encodeBase64 } from "@std/encoding/base64"; +import { readerFromStreamReader } from "@std/io/reader-from-stream-reader"; + +const tempDir = $.path(projectDir).join("tmp"); + +function getAssetName(version: string) { + return `meta-cli-v${version}-${Deno.build.target}`; +} + +async function checkMetaBin(path: typeof tempDir, version: string) { + try { + if (!(await path.exists())) { + return false; + } + const res = await $`bash -c 'meta-old --version'` + .env("PATH", `${path.parent()!.toString()}:${Deno.env.get("PATH")}`) + .stdout("piped"); + if (res.stdout.includes(version)) { + return true; + } + throw new Error(`version mismatch: ${res.stdout}`); + } catch (e) { + console.error(e); + return false; + } +} + +// download the fat version of the cli on the latest stable release +export async function downloadAndExtractCli(version: string) { + const name = getAssetName(version); + const extractTargetDir = tempDir.join(name); + const metaBin = extractTargetDir.join("meta-old"); + if (await checkMetaBin(metaBin, version)) { + return metaBin.toString(); + } + const url = + `https://github.com/metatypedev/metatype/releases/download/v${version}/${name}.tar.gz`; + console.log("Downloading from", url); + const archiveName = `${name}.tar.gz`; + const _fileObj = await download(url, { + file: archiveName, + dir: tempDir.toString(), + }); + const archivePath = tempDir.join(archiveName); + using file = await Deno.open(archivePath.toString()); + const reader = file.readable.pipeThrough(new DecompressionStream("gzip")); + const untar = new Untar(readerFromStreamReader(reader.getReader())); + + await extractTargetDir.ensureDir(); + + for await (const entry of untar) { + if (entry.fileName !== "meta") { + throw new Error("unexpected"); + } + using target = await Deno.open(metaBin.toString(), { + create: true, + write: true, + mode: 0o755, + }); + const res = await copy(entry, target); + console.log(`successfully written ${res} bytes`); + } + + await Deno.remove(archivePath.toString()); + + if (!(await checkMetaBin(metaBin, version))) { + throw new Error("unexpected"); + } + return metaBin.toString(); +} diff --git a/tools/consts.ts b/tools/consts.ts index d5e494bc4..cc4e0e65d 100644 --- a/tools/consts.ts +++ b/tools/consts.ts @@ -1,8 +1,9 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 -export const METATYPE_VERSION = "0.5.0-rc.9"; -export const PUBLISHED_VERSION = "0.5.0-rc.8"; +export const CURRENT_VERSION = "0.5.0"; +export const LATEST_RELEASE_VERSION = "0.4.10"; +export const LATEST_PRE_RELEASE_VERSION = "0.5.0-rc.9"; export const GHJK_VERSION = "v0.2.1"; export const GHJK_ACTION_VERSION = "318209a9d215f70716a4ac89dbeb9653a2deb8bc"; export const RUST_VERSION = "1.80.1"; @@ -23,17 +24,17 @@ export const sedLockLines: Record = { [/([\s-]+uses:\s+metatypedev\/setup-ghjk@).+()/, GHJK_ACTION_VERSION], ], "tests/**/*.snap": [ - [/(\s*static\s*MT_VERSION:\s*&str\s*=\s*").+(";)/, METATYPE_VERSION], + [/(\s*static\s*MT_VERSION:\s*&str\s*=\s*").+(";)/, CURRENT_VERSION], ], "src/typegraph/python/typegraph/__init__.py": [ - ['(version = ").+(")', METATYPE_VERSION], + ['(version = ").+(")', CURRENT_VERSION], ], "src/typegraph/core/src/global_store.rs": [ - [/(\s{4}pub static SDK_VERSION.+=\s?").*(".+;)/, METATYPE_VERSION], + [/(\s{4}pub static SDK_VERSION.+=\s?").*(".+;)/, CURRENT_VERSION], ], "src/typegraph/python/pyproject.toml": [['(description = ").+(")', TAGLINE]], "**/Cargo.toml": [ - [/^(version = ").+(")/, METATYPE_VERSION], + [/^(version = ").+(")/, CURRENT_VERSION], ['(description = ").+(")', TAGLINE], [ /([\w-]+\s*=\s*\{\s*git\s*=\s*"https:\/\/github\.com\/prisma\/prisma-engines"\s*,\s*tag\s*=\s*").+("\s*\})/, @@ -47,7 +48,7 @@ export const sedLockLines: Record = { ['(wasmtime-wasi = ").+(")', WASMTIME_VERSION], ], "src/typegraph/deno/deno.json": [ - [/(\s*"version"\s*:\s*").+(",?)/, METATYPE_VERSION], + [/(\s*"version"\s*:\s*").+(",?)/, CURRENT_VERSION], ], "tools/deps.ts": [[/(.*\/metatypedev\/ghjk\/)[^\/]*(\/.*)/, GHJK_VERSION]], "tools/cross.Dockerfile": [["(ARG GHJK_VERSION=).*()", GHJK_VERSION]], @@ -57,7 +58,7 @@ export const sedLockLines: Record = { ["(ARG GHJK_VERSION=).*()", GHJK_VERSION], ], "src/typegate/src/runtimes/wit_wire/mod.ts": [ - [/(const\s+METATYPE_VERSION = ").*(";)/, METATYPE_VERSION], + [/(const\s+METATYPE_VERSION = ").*(";)/, CURRENT_VERSION], ], "src/typegate/src/typegraph/versions.ts": [ ['(const typegraphVersion = ").*(";)', TYPEGRAPH_VERSION], @@ -74,22 +75,22 @@ export const sedLockLines: Record = { ], "docs/metatype.dev/docusaurus.config.js": [['( tagline: ").+(",)', TAGLINE]], "**/pyproject.toml": [ - ['(version = ").+(")', METATYPE_VERSION], + ['(version = ").+(")', CURRENT_VERSION], [/(wasmtime = "\^).+(")/, WASMTIME_PY_VERSION], ], "examples/templates/**/compose.yml": [ - ["( image: ghcr.io/metatypedev/typegate:v).+()", METATYPE_VERSION], + ["( image: ghcr.io/metatypedev/typegate:v).+()", CURRENT_VERSION], ], "examples/templates/**/pyproject.toml": [ - ['(typegraph = ").+(")', METATYPE_VERSION], + ['(typegraph = ").+(")', CURRENT_VERSION], ], "examples/templates/**/package.json": [ - [/(\s*"@typegraph\/sdk"\s*:\s*"\^).+(",?)/, METATYPE_VERSION], + [/(\s*"@typegraph\/sdk"\s*:\s*"\^).+(",?)/, CURRENT_VERSION], ], "examples/templates/**/*.ts": [ [ /(import\s+.+\s+from "jsr:@typegraph\/sdk@)[^\/]+(\/.+";)/, - METATYPE_VERSION, + CURRENT_VERSION, ], ], "CONTRIBUTING.md": [[/(GHJK_VERSION=").*(")/, GHJK_VERSION]], diff --git a/tools/deps.ts b/tools/deps.ts index 6ebd60a1c..e14846d04 100644 --- a/tools/deps.ts +++ b/tools/deps.ts @@ -46,6 +46,7 @@ export { red, yellow, } from "jsr:@std/fmt@^1.0.0/colors"; +export { assert } from "jsr:@std/assert@^1.0.3"; export { format as formatDuration } from "jsr:@std/fmt@^1.0.0/duration"; export { mergeReadableStreams, TextLineStream } from "jsr:@std/streams@1"; export type {} from "jsr:@std/path@^1.0.2"; diff --git a/tools/jsr/deno2node.ts b/tools/jsr/deno2node.ts index 6254e357e..1fc30fa5a 100644 --- a/tools/jsr/deno2node.ts +++ b/tools/jsr/deno2node.ts @@ -3,7 +3,7 @@ import { dnt, expandGlobSync, join } from "../deps.ts"; import { copyFilesAt, removeExtension } from "../utils.ts"; -import { METATYPE_VERSION, SDK_PACKAGE_NAME_TS, TAGLINE } from "../consts.ts"; +import { CURRENT_VERSION, SDK_PACKAGE_NAME_TS, TAGLINE } from "../consts.ts"; import { fromRoot, outDir } from "./common.ts"; import { srcDir } from "./common.ts"; @@ -56,7 +56,7 @@ await dnt.build({ packageManager: "pnpm", package: { name: SDK_PACKAGE_NAME_TS, - version: METATYPE_VERSION, + version: CURRENT_VERSION, description: TAGLINE, license: "MPL-2.0", repository: { diff --git a/tools/jsr/jsr-gen.ts b/tools/jsr/jsr-gen.ts index 00bb23b62..4aed86de0 100644 --- a/tools/jsr/jsr-gen.ts +++ b/tools/jsr/jsr-gen.ts @@ -1,7 +1,7 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 -import { METATYPE_VERSION, SDK_PACKAGE_NAME_TS } from "../consts.ts"; +import { CURRENT_VERSION, SDK_PACKAGE_NAME_TS } from "../consts.ts"; import { $, existsSync, expandGlob, join } from "../deps.ts"; import { copyFilesAt } from "../utils.ts"; import { removeExtension } from "../utils.ts"; @@ -57,7 +57,7 @@ Deno.writeTextFileSync( JSON.stringify( { name: SDK_PACKAGE_NAME_TS, - version: METATYPE_VERSION, + version: CURRENT_VERSION, // ungitignore // https://jsr.io/docs/troubleshooting#excluded-module-error publish: { diff --git a/tools/tasks/lock.ts b/tools/tasks/lock.ts index b6803b742..3bd3b1b2a 100644 --- a/tools/tasks/lock.ts +++ b/tools/tasks/lock.ts @@ -1,13 +1,22 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 -import { copyLock, type DenoTaskDefArgs, parseArgs, sedLock } from "../deps.ts"; +import { + assert, + copyLock, + type DenoTaskDefArgs, + parseArgs, + sedLock, + semver, +} from "../deps.ts"; import * as consts from "../consts.ts"; export default { "lock-sed": { desc: "Update versions", fn: async ($) => { + validateVersions(); + const args = parseArgs(Deno.args, { boolean: ["check"], default: { version: false, check: false }, @@ -50,3 +59,30 @@ export default { }, }, } satisfies Record; + +export function validateVersions() { + const currentVersion = semver.parse(consts.CURRENT_VERSION); + const latestRelease = semver.parse(consts.LATEST_RELEASE_VERSION); + const latestPreRelease = consts.LATEST_PRE_RELEASE_VERSION == null + ? null + : semver.parse(consts.LATEST_PRE_RELEASE_VERSION); + + const prerelease = currentVersion.prerelease ?? []; + const isPreRelease = prerelease.length > 0; + + if (!isPreRelease || (isPreRelease && prerelease[1] == 0)) { + assert(latestPreRelease == null, "expected no latest pre-release version"); + } + + if (isPreRelease) { + assert( + semver.greaterThan(currentVersion, latestPreRelease!), + "expected current version to be greater than latest pre-release version", + ); + } + + assert( + semver.greaterThan(currentVersion, latestRelease), + "expected current version to be greater than latest release version", + ); +} From 1ac639715403f6a4f711415dad8681c8581a39f8 Mon Sep 17 00:00:00 2001 From: Natoandro Date: Tue, 24 Dec 2024 11:08:39 +0300 Subject: [PATCH 3/6] -wip --- tests/e2e/published/sdk_test.ts | 94 ++++++++++++++++----------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/tests/e2e/published/sdk_test.ts b/tests/e2e/published/sdk_test.ts index 1aa3a889b..5916394a5 100644 --- a/tests/e2e/published/sdk_test.ts +++ b/tests/e2e/published/sdk_test.ts @@ -3,12 +3,12 @@ import { Meta } from "test-utils/mod.ts"; import { $ } from "@local/tools/deps.ts"; -import { PUBLISHED_VERSION, PYTHON_VERSION } from "@local/tools/consts.ts"; import { encodeBase64 } from "@std/encoding/base64"; import { Lines } from "test-utils/process.ts"; import { newTempDir } from "test-utils/dir.ts"; import { downloadAndExtractCli } from "./utils.ts"; import { Config } from "./config.ts"; +import { PYTHON_VERSION } from "@local/tools/consts.ts"; const testConfig = new Config(12, "published-sdk-test"); @@ -122,52 +122,52 @@ typegraphs: // .env("RUST_LOG", "trace"); // }); - // await t.should("work with JSR deno", async () => { - // const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); - // await denoJsrDir.join("deno.json").writeJson({}); - // await $`bash -c 'deno add @typegraph/sdk@${previousVersion}'`.cwd( - // denoJsrDir, - // ); - // await $.co([ - // $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), - // $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), - // ]); - // - // const command = - // `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; - // await $`bash -c ${command}` - // .cwd(denoJsrDir) - // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - // // FIXME: rename to deno.jsonc on bump 0.4.9 - // .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) - // .env("RUST_LOG", "trace"); - // }); - // - // await t.should("work with pypa", async () => { - // const pypaDir = await tgsDir.join("pypa").ensureDir(); - // await $ - // .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${previousVersion}` - // .cwd( - // pypaDir, - // ); - // await $.co([ - // pypaDir.join("README.md").ensureFile(), - // $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` - // .cwd( - // pypaDir, - // ), - // $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), - // $.path("examples/typegraphs/scripts").copyToDir(pypaDir), - // ]); - // - // const command = `source .venv/bin/activate &&` + - // ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; - // await $`bash -c ${command}` - // .cwd(pypaDir) - // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - // .env("MCLI_LOADER_PY", `poetry run python`) - // .env("RUST_LOG", "trace"); - // }); + await t.should("work with JSR deno", async () => { + const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); + await denoJsrDir.join("deno.json").writeJson({}); + await $`bash -c 'deno add @typegraph/sdk@${previousVersion}'`.cwd( + denoJsrDir, + ); + await $.co([ + $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), + $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), + ]); + + const command = + `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + await $`bash -c ${command}` + .cwd(denoJsrDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // FIXME: rename to deno.jsonc on bump 0.4.9 + .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) + .env("RUST_LOG", "trace"); + }); + + await t.should("work with pypa", async () => { + const pypaDir = await tgsDir.join("pypa").ensureDir(); + await $ + .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${previousVersion}` + .cwd( + pypaDir, + ); + await $.co([ + pypaDir.join("README.md").ensureFile(), + $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` + .cwd( + pypaDir, + ), + $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), + $.path("examples/typegraphs/scripts").copyToDir(pypaDir), + ]); + + const command = `source .venv/bin/activate &&` + + ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; + await $`bash -c ${command}` + .cwd(pypaDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + .env("MCLI_LOADER_PY", `poetry run python`) + .env("RUST_LOG", "trace"); + }); proc.kill("SIGKILL"); const status = await proc; From d3d9fd2e00bcd3ab58b2a05d1146f04ace1255ba Mon Sep 17 00:00:00 2001 From: FITAHIANA Nomeniavo joe <24nomeniavo@gmail.com> Date: Fri, 27 Dec 2024 12:47:36 +0300 Subject: [PATCH 4/6] feat: python code validation (#939) Add python code validation on deploy --- - [x] The change comes with new or modified tests - [ ] Hard-to-understand functions have explanatory comments - [ ] End-user documentation is updated to reflect the change --- .pre-commit-config.yaml | 7 +- Cargo.lock | 185 +++++++++++++++++- Cargo.toml | 19 +- src/typegate/engine/00_runtime.js | 3 + src/typegate/engine/Cargo.toml | 1 + src/typegate/engine/runtime.d.ts | 80 ++++---- src/typegate/engine/src/ext.rs | 2 + src/typegate/engine/src/lib.rs | 1 + src/typegate/engine/src/py_validation.rs | 24 +++ src/typegate/src/runtimes/python/hooks/mod.ts | 68 +++++++ src/typegate/src/typegate/hooks.ts | 36 ++-- src/typegate/src/typegate/mod.ts | 5 + tests/runtimes/python/py_fail/dep_fail.py | 5 + tests/runtimes/python/py_fail/hello_fail.py | 8 + tests/runtimes/python/python_test.ts | 16 +- tests/runtimes/python/python_validation.py | 26 +++ tests/runtimes/wasm_reflected/rust/Cargo.lock | 2 +- 17 files changed, 422 insertions(+), 66 deletions(-) create mode 100644 src/typegate/engine/src/py_validation.rs create mode 100644 src/typegate/src/runtimes/python/hooks/mod.ts create mode 100644 tests/runtimes/python/py_fail/dep_fail.py create mode 100644 tests/runtimes/python/py_fail/hello_fail.py create mode 100644 tests/runtimes/python/python_validation.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bc3a39ce3..87aced340 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -71,6 +71,7 @@ repos: args: - --maxkb=768 - id: check-ast + exclude: tests/runtimes/python/py_fail/.*\.py - id: check-json exclude: .vscode/.*\.json - id: check-toml @@ -137,8 +138,12 @@ repos: rev: "v0.5.1" hooks: - id: ruff + exclude: tests/runtimes/python/py_fail/.*\.py - id: ruff-format - exclude: "tests/metagen/typegraphs/sample/py/client.py" + exclude: (?x)( + tests/metagen/typegraphs/sample/py/client.py"| + tests/runtimes/python/py_fail/.*\.py + ) - repo: https://github.com/commitizen-tools/commitizen rev: v3.27.0 hooks: diff --git a/Cargo.lock b/Cargo.lock index 658d11491..c0518f22c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5007,6 +5007,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -6143,6 +6152,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -6353,6 +6371,12 @@ dependencies = [ "urlencoding", ] +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" + [[package]] name = "lazy-regex" version = "3.1.0" @@ -6717,6 +6741,64 @@ dependencies = [ "libc", ] +[[package]] +name = "malachite" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5616515d632967cd329b6f6db96be9a03ea0b3a49cdbc45b0016803dad8a77b7" +dependencies = [ + "malachite-base", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-base" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46059721011b0458b7bd6d9179be5d0b60294281c23320c207adceaecc54d13b" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.11.0", + "libm", + "ryu", +] + +[[package]] +name = "malachite-bigint" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17703a19c80bbdd0b7919f0f104f3b0597f7de4fc4e90a477c15366a5ba03faa" +dependencies = [ + "derive_more 0.99.17", + "malachite", + "num-integer", + "num-traits", + "paste", +] + +[[package]] +name = "malachite-nz" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1503b27e825cabd1c3d0ff1e95a39fb2ec9eab6fd3da6cfa41aec7091d273e78" +dependencies = [ + "itertools 0.11.0", + "libm", + "malachite-base", +] + +[[package]] +name = "malachite-q" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a475503a70a3679dbe3b9b230a23622516742528ba614a7b2490f180ea9cb514" +dependencies = [ + "itertools 0.11.0", + "malachite-base", + "malachite-nz", +] + [[package]] name = "malloc_buf" version = "0.0.6" @@ -6753,7 +6835,7 @@ checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" dependencies = [ "log", "phf 0.10.1", - "phf_codegen", + "phf_codegen 0.10.0", "string_cache", "string_cache_codegen", "tendril", @@ -8396,6 +8478,16 @@ dependencies = [ "phf_shared 0.10.0", ] +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", +] + [[package]] name = "phf_generator" version = "0.10.0" @@ -10067,6 +10159,63 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "rustpython-ast" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cdaf8ee5c1473b993b398c174641d3aa9da847af36e8d5eb8291930b72f31a5" +dependencies = [ + "is-macro", + "malachite-bigint", + "rustpython-parser-core", + "static_assertions", +] + +[[package]] +name = "rustpython-parser" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868f724daac0caf9bd36d38caf45819905193a901e8f1c983345a68e18fb2abb" +dependencies = [ + "anyhow", + "is-macro", + "itertools 0.11.0", + "lalrpop-util", + "log", + "malachite-bigint", + "num-traits", + "phf 0.11.2", + "phf_codegen 0.11.2", + "rustc-hash 1.1.0", + "rustpython-ast", + "rustpython-parser-core", + "tiny-keccak", + "unic-emoji-char", + "unic-ucd-ident", + "unicode_names2", +] + +[[package]] +name = "rustpython-parser-core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b6c12fa273825edc7bccd9a734f0ad5ba4b8a2f4da5ff7efe946f066d0f4ad" +dependencies = [ + "is-macro", + "memchr", + "rustpython-parser-vendored", +] + +[[package]] +name = "rustpython-parser-vendored" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04fcea49a4630a3a5d940f4d514dc4f575ed63c14c3e3ed07146634aed7f67a6" +dependencies = [ + "memchr", + "once_cell", +] + [[package]] name = "rustversion" version = "1.0.17" @@ -12838,6 +12987,7 @@ dependencies = [ "query-engine-metrics", "regex", "request-handlers", + "rustpython-parser", "schema-connector", "schema-core", "serde", @@ -12985,6 +13135,17 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" +[[package]] +name = "unic-emoji-char" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b07221e68897210270a38bde4babb655869637af0f69407f96053a34f76494d" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + [[package]] name = "unic-segment" version = "0.9.0" @@ -13103,6 +13264,28 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +[[package]] +name = "unicode_names2" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1673eca9782c84de5f81b82e4109dcfb3611c8ba0d52930ec4a9478f547b2dd" +dependencies = [ + "phf 0.11.2", + "unicode_names2_generator", +] + +[[package]] +name = "unicode_names2_generator" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91e5b84611016120197efd7dc93ef76774f4e084cd73c9fb3ea4a86c570c56e" +dependencies = [ + "getopts", + "log", + "phf_codegen 0.11.2", + "rand 0.8.5", +] + [[package]] name = "unindent" version = "0.2.3" diff --git a/Cargo.toml b/Cargo.toml index 40a4a340b..05e5299a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ members = [ "src/metagen-client-rs", "tests/metagen/typegraphs/sample/rs", "tests/metagen/typegraphs/sample/rs_upload", - ] +] exclude = [ "tests/runtimes/wasm_reflected/rust", @@ -72,19 +72,19 @@ sha2 = "0.10.8" seahash = "4.1.0" # patterns -anyhow = "1.0.89" # FIXME: replace anyhow with eyre +anyhow = "1.0.89" # FIXME: replace anyhow with eyre color-eyre = "0.6.3" -eyre = "0.6.12" # NOTE: keep in sync with verison used by color-eyre +eyre = "0.6.12" # NOTE: keep in sync with verison used by color-eyre thiserror = "1.0.64" indoc = "2.0.5" unindent = "0.2.3" itertools = "0.13.0" -lazy_static = "1.5.0" # FIXME: replace with Lazy Cell +lazy_static = "1.5.0" # FIXME: replace with Lazy Cell crossbeam-channel = "0.5.13" enum_dispatch = "0.3.13" tap = "1.0.1" derive_more = { version = "1", features = ["from"] } -cached = "0.53.1" # FIXME: replace usage with a Lazy Cell + dashmap +cached = "0.53.1" # FIXME: replace usage with a Lazy Cell + dashmap garde = "0.20" paste = "1.0.15" @@ -119,11 +119,12 @@ indexmap = { version = "2.6.0", features = ["serde"] } semver = "1.0.23" dashmap = "6.1.0" connection-string = "0.2.0" -chrono = { version = "0.4.38", features = ["serde"] } +chrono = { version = "0.4.38", features = ["serde"] } tera = { version = "1.20", default-features = false } ordered-float = "4.3.0" graphql-parser = "0.4.0" uuid = "1.10.0" +rustpython-parser = "0.4.0" # wasm wasmtime = "25.0.2" @@ -153,7 +154,7 @@ tracing-unwrap = { version = "1.0.1", features = ["log-location"] } tracing-appender = "0.2.3" # async -futures = "=0.3.30" # pinned due to bug with .31 with zeromq (deno) +futures = "=0.3.30" # pinned due to bug with .31 with zeromq (deno) futures-concurrency = "7.6" futures-lite = "2.3" tokio = { version = "1", features = ["parking_lot"] } @@ -167,7 +168,9 @@ temporal-sdk-core-protos = { git = "https://github.com/temporalio/sdk-core", rev # prisma query-core = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } query-connector = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } -request-handlers = { git = "https://github.com/metatypedev/prisma-engines", features = ["all"], branch = "fix/version-compat" } +request-handlers = { git = "https://github.com/metatypedev/prisma-engines", features = [ + "all", +], branch = "fix/version-compat" } datamodel-renderer = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } user-facing-errors = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } query-engine-metrics = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } diff --git a/src/typegate/engine/00_runtime.js b/src/typegate/engine/00_runtime.js index caf7bb7e7..80b6d867d 100644 --- a/src/typegate/engine/00_runtime.js +++ b/src/typegate/engine/00_runtime.js @@ -85,6 +85,9 @@ const Meta = { unregister: getOp("op_grpc_unregister"), callGrpcMethod: getOp("op_call_grpc_method"), }, + py_validation: { + validate: getOp("op_validate"), + }, }; globalThis.Meta = Meta; diff --git a/src/typegate/engine/Cargo.toml b/src/typegate/engine/Cargo.toml index 6567b7cfb..86d29bfd9 100644 --- a/src/typegate/engine/Cargo.toml +++ b/src/typegate/engine/Cargo.toml @@ -67,6 +67,7 @@ tonic.workspace = true bytes.workspace = true protobuf.workspace = true protobuf-json-mapping.workspace = true +rustpython-parser.workspace = true [dev-dependencies] env_logger.workspace = true diff --git a/src/typegate/engine/runtime.d.ts b/src/typegate/engine/runtime.d.ts index 9b482ccd1..4114b4c8a 100644 --- a/src/typegate/engine/runtime.d.ts +++ b/src/typegate/engine/runtime.d.ts @@ -86,6 +86,10 @@ export type MetaNS = { inp: EnumerateAllChildrenInput, ) => Promise>; }; + + py_validation: { + validate: (inp: string) => void; + }; }; interface WasmInput { @@ -116,16 +120,16 @@ interface PrismaDevInp { } type PrismaApplyOut = | { - ResetRequired: { - reset_reason: string; - }; - } + ResetRequired: { + reset_reason: string; + }; + } | { - Ok: { - applied_migrations: Array; - reset_reason: string | undefined | null; + Ok: { + applied_migrations: Array; + reset_reason: string | undefined | null; + }; }; - }; interface PrismaDeployOut { migration_count: number; applied_migrations: Array; @@ -237,14 +241,14 @@ export type WitWireReq = { export type WitWireHandleError = | { - InstanceNotFound: string; - } + InstanceNotFound: string; + } | { - ModuleErr: string; - } + ModuleErr: string; + } | { - MatErr: string; - }; + MatErr: string; + }; export type WitWireMatInfo = { op_name: string; @@ -261,29 +265,29 @@ export type WitWireInitArgs = { export type WitWireInitResponse = object; export type WitWireInitError = | { - VersionMismatch: string; - } + VersionMismatch: string; + } | { - UnexpectedMat: string; - } + UnexpectedMat: string; + } | { - ModuleErr: string; - } + ModuleErr: string; + } | { - Other: string; - }; + Other: string; + }; export type WitWireHandleResponse = | { - Ok: string; - } + Ok: string; + } | "NoHandler" | { - InJsonErr: string; - } + InJsonErr: string; + } | { - HandlerErr: string; - }; + HandlerErr: string; + }; export type GrpcRegisterInput = { proto_file_content: string; @@ -301,20 +305,20 @@ export type Backend = | { type: "fs" } | { type: "memory" } | { - type: "redis"; - connection_string: string; - }; + type: "redis"; + connection_string: string; + }; export type OperationEvent = | { type: "Sleep"; id: number; start: string; end: string } | { - type: "Save"; - id: number; - value: - | { type: "Retry"; wait_until: string; counter: number } - | { type: "Resolved"; payload: unknown } - | { type: "Failed"; err: unknown }; - } + type: "Save"; + id: number; + value: + | { type: "Retry"; wait_until: string; counter: number } + | { type: "Resolved"; payload: unknown } + | { type: "Failed"; err: unknown }; + } | { type: "Send"; event_name: string; value: unknown } | { type: "Stop"; result: unknown } | { type: "Start"; kwargs: Record } diff --git a/src/typegate/engine/src/ext.rs b/src/typegate/engine/src/ext.rs index 72d4c1368..3d434a4f1 100644 --- a/src/typegate/engine/src/ext.rs +++ b/src/typegate/engine/src/ext.rs @@ -3,6 +3,7 @@ use crate::interlude::*; use crate::{ + py_validation, runtimes::{grpc, prisma, substantial, temporal, wasm, wit_wire}, typegraph, }; @@ -59,6 +60,7 @@ deno_core::extension!( substantial::op_sub_metadata_write_workflow_link, substantial::op_sub_metadata_write_parent_child_link, substantial::op_sub_metadata_enumerate_all_children, + py_validation::op_validate, // FIXME(yohe): this test broke and has proven difficult to fix // #[cfg(test)] diff --git a/src/typegate/engine/src/lib.rs b/src/typegate/engine/src/lib.rs index a7e83d53a..bec02096a 100644 --- a/src/typegate/engine/src/lib.rs +++ b/src/typegate/engine/src/lib.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: MPL-2.0 mod ext; +mod py_validation; mod runtimes; // mod snapshot; mod typegraph; diff --git a/src/typegate/engine/src/py_validation.rs b/src/typegate/engine/src/py_validation.rs new file mode 100644 index 000000000..107645aeb --- /dev/null +++ b/src/typegate/engine/src/py_validation.rs @@ -0,0 +1,24 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use std::{fs::File, io::Read}; + +use anyhow::Result; +use rustpython_parser::{ast, Parse}; + +#[rustfmt::skip] +use deno_core as deno_core; + +fn read_file(path: &str) -> Result { + let mut output = String::new(); + let mut file = File::open(path)?; + file.read_to_string(&mut output)?; + Ok(output) +} + +#[deno_core::op2(fast)] +pub fn op_validate(#[string] input: String) -> Result<()> { + let python_source = read_file(&input)?; + ast::Suite::parse(&python_source, "")?; + Ok(()) +} diff --git a/src/typegate/src/runtimes/python/hooks/mod.ts b/src/typegate/src/runtimes/python/hooks/mod.ts new file mode 100644 index 000000000..1a02a48e8 --- /dev/null +++ b/src/typegate/src/runtimes/python/hooks/mod.ts @@ -0,0 +1,68 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { getLogger } from "../../../log.ts"; +import { PushFailure, PushHandler } from "../../../typegate/hooks.ts"; +import { createArtifactMeta } from "../../utils/deno.ts"; + +const logger = getLogger("typegate"); + +export class ValidationFailure extends Error { + failure: PushFailure; + + constructor(message: string) { + super(message); + this.failure = { reason: "ValidationError", message }; + } +} + +export const codeValidations: PushHandler = async ( + typegraph, + _secretManager, + _response, + artifactStore, +) => { + const { title } = typegraph.types[0]; + const { artifacts } = typegraph.meta; + + for (const mat of typegraph.materializers) { + if (mat.name === "import_function") { + const pyModMat = typegraph.materializers[mat.data.mod as number]; + const entryPoint = artifacts[pyModMat.data.entryPoint as string]; + const moduleMeta = createArtifactMeta(title, entryPoint); + const depMetas = (pyModMat.data.deps as string[]).map((dep) => + createArtifactMeta(title, artifacts[dep]) + ); + const entryModulePath = await artifactStore.getLocalPath( + moduleMeta, + depMetas, + ); + + if (entryModulePath.split(".").slice(-1)[0] == "py") { + try { + logger.info( + `Validating Python code at entry point: ${entryPoint.path}`, + ); + Meta.py_validation.validate(entryModulePath); + + for (const dep of depMetas) { + const depPath = await artifactStore.getLocalPath(dep); + logger.info(`Validating Python code for dependency: ${depPath}`); + Meta.py_validation.validate(depPath); + } + + logger.info( + `Successfully validated Python code at entry point: ${entryPoint.path}`, + ); + } catch (err) { + console.error({ err }); + throw new ValidationFailure( + `Python code validation error at entry point '${entryPoint.path}': ${err.message}`, + ); + } + } + } + } + + return typegraph; +}; diff --git a/src/typegate/src/typegate/hooks.ts b/src/typegate/src/typegate/hooks.ts index 1802d6157..3b72a619d 100644 --- a/src/typegate/src/typegate/hooks.ts +++ b/src/typegate/src/typegate/hooks.ts @@ -13,25 +13,29 @@ const Message = { export type PushFailure = | { - reason: "DatabaseResetRequired"; - message: string; - runtimeName: string; - } + reason: "DatabaseResetRequired"; + message: string; + runtimeName: string; + } | { - reason: "NullConstraintViolation"; - message: string; - runtimeName: string; - column: string; - table: string; - } + reason: "NullConstraintViolation"; + message: string; + runtimeName: string; + column: string; + table: string; + } | { - reason: "DenoImportError"; - message: string; - } + reason: "DenoImportError"; + message: string; + } + | { + reason: "ValidationError"; + message: string; + } | { - reason: "Unknown"; - message: string; - }; + reason: "Unknown"; + message: string; + }; export class PushResponse { tgName?: string; diff --git a/src/typegate/src/typegate/mod.ts b/src/typegate/src/typegate/mod.ts index 143b3f4d0..b25338766 100644 --- a/src/typegate/src/typegate/mod.ts +++ b/src/typegate/src/typegate/mod.ts @@ -20,6 +20,7 @@ import { upgradeTypegraph } from "../typegraph/versions.ts"; import { parseGraphQLTypeGraph } from "../transports/graphql/typegraph.ts"; import * as PrismaHooks from "../runtimes/prisma/hooks/mod.ts"; import * as DenoHooks from "../runtimes/deno/hooks/mod.ts"; +import * as PythonHooks from "../runtimes/python/hooks/mod.ts"; import { type RuntimeResolver, SecretManager, @@ -33,6 +34,7 @@ import { handleGraphQL } from "../services/graphql_service.ts"; import { getLogger } from "../log.ts"; import { MigrationFailure } from "../runtimes/prisma/hooks/run_migrations.ts"; import { DenoFailure } from "../runtimes/deno/hooks/mod.ts"; +import { ValidationFailure } from "../runtimes/python/hooks/mod.ts"; import introspectionJson from "../typegraphs/introspection.json" with { type: "json", }; @@ -173,6 +175,7 @@ export class Typegate implements AsyncDisposable { this.#onPush(PrismaHooks.generateSchema); this.#onPush(PrismaHooks.runMigrations); this.#onPush(DenoHooks.cacheModules); + this.#onPush(PythonHooks.codeValidations); this.#artifactService = new ArtifactService(artifactStore); } @@ -204,6 +207,8 @@ export class Typegate implements AsyncDisposable { response.setFailure(e.errors[0]); } else if (e instanceof DenoFailure) { response.setFailure(e.failure); + } else if (e instanceof ValidationFailure) { + response.setFailure(e.failure); } else { response.setFailure({ reason: "Unknown", diff --git a/tests/runtimes/python/py_fail/dep_fail.py b/tests/runtimes/python/py_fail/dep_fail.py new file mode 100644 index 000000000..d95177880 --- /dev/null +++ b/tests/runtimes/python/py_fail/dep_fail.py @@ -0,0 +1,5 @@ +# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +# SPDX-License-Identifier: MPL-2.0 + +def hello(name: str: + return f"Hello {name}" diff --git a/tests/runtimes/python/py_fail/hello_fail.py b/tests/runtimes/python/py_fail/hello_fail.py new file mode 100644 index 000000000..c3fedb198 --- /dev/null +++ b/tests/runtimes/python/py_fail/hello_fail.py @@ -0,0 +1,8 @@ +# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +# SPDX-License-Identifier: MPL-2.0 + +from typing import Dict + + +def say_hello(x: Dict): + print(f"hello: {undefind}") diff --git a/tests/runtimes/python/python_test.ts b/tests/runtimes/python/python_test.ts index 93b378dd6..15f2afa9f 100644 --- a/tests/runtimes/python/python_test.ts +++ b/tests/runtimes/python/python_test.ts @@ -1,7 +1,7 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 -import { assert, assertEquals } from "@std/assert"; +import { assert, assertEquals, assertRejects } from "@std/assert"; import { gql, Meta } from "test-utils/mod.ts"; import { WitWireMessenger } from "@metatype/typegate/runtimes/wit_wire/mod.ts"; import { QueryEngine } from "@metatype/typegate/engine/query_engine.ts"; @@ -478,3 +478,17 @@ Meta.test( ); }, ); + +Meta.test( + { + name: "Python code validation on deploy", + }, + async (t) => { + await t.should("fail on validation", async () => { + await assertRejects( + async () => await t.engine("runtimes/python/python_validation.py"), + "ValidationError", + ); + }); + }, +); diff --git a/tests/runtimes/python/python_validation.py b/tests/runtimes/python/python_validation.py new file mode 100644 index 000000000..41b5705b5 --- /dev/null +++ b/tests/runtimes/python/python_validation.py @@ -0,0 +1,26 @@ +# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +# SPDX-License-Identifier: MPL-2.0 + +from typegraph.graph.typegraph import Graph +from typegraph.policy import Policy +from typegraph.runtimes.python import PythonRuntime + +from typegraph import t, typegraph + + +@typegraph() +def python(g: Graph): + public = Policy.public() + python = PythonRuntime() + + g.expose( + testValidation=( + python.import_( + t.struct({"name": t.string()}), + t.string(), + module="py_fail/hello_fail.py", + deps=["py_fail/dep_fail.py"], + name="sayHello", + ).with_policy(public), + ) + ) diff --git a/tests/runtimes/wasm_reflected/rust/Cargo.lock b/tests/runtimes/wasm_reflected/rust/Cargo.lock index 6160ba1c0..d6b3aeef1 100644 --- a/tests/runtimes/wasm_reflected/rust/Cargo.lock +++ b/tests/runtimes/wasm_reflected/rust/Cargo.lock @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "rust" -version = "0.5.0-rc.8" +version = "0.5.0-rc.7" dependencies = [ "wit-bindgen", ] From 23c7625a6586ed9a52194b72256e648c43f5d0f1 Mon Sep 17 00:00:00 2001 From: Natoandro Date: Mon, 16 Dec 2024 12:25:46 +0300 Subject: [PATCH 5/6] wip --- tests/e2e/published/sdk_test.ts | 94 ++++++++++++++++----------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/tests/e2e/published/sdk_test.ts b/tests/e2e/published/sdk_test.ts index 5916394a5..1aa3a889b 100644 --- a/tests/e2e/published/sdk_test.ts +++ b/tests/e2e/published/sdk_test.ts @@ -3,12 +3,12 @@ import { Meta } from "test-utils/mod.ts"; import { $ } from "@local/tools/deps.ts"; +import { PUBLISHED_VERSION, PYTHON_VERSION } from "@local/tools/consts.ts"; import { encodeBase64 } from "@std/encoding/base64"; import { Lines } from "test-utils/process.ts"; import { newTempDir } from "test-utils/dir.ts"; import { downloadAndExtractCli } from "./utils.ts"; import { Config } from "./config.ts"; -import { PYTHON_VERSION } from "@local/tools/consts.ts"; const testConfig = new Config(12, "published-sdk-test"); @@ -122,52 +122,52 @@ typegraphs: // .env("RUST_LOG", "trace"); // }); - await t.should("work with JSR deno", async () => { - const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); - await denoJsrDir.join("deno.json").writeJson({}); - await $`bash -c 'deno add @typegraph/sdk@${previousVersion}'`.cwd( - denoJsrDir, - ); - await $.co([ - $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), - $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), - ]); - - const command = - `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; - await $`bash -c ${command}` - .cwd(denoJsrDir) - .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - // FIXME: rename to deno.jsonc on bump 0.4.9 - .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) - .env("RUST_LOG", "trace"); - }); - - await t.should("work with pypa", async () => { - const pypaDir = await tgsDir.join("pypa").ensureDir(); - await $ - .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${previousVersion}` - .cwd( - pypaDir, - ); - await $.co([ - pypaDir.join("README.md").ensureFile(), - $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` - .cwd( - pypaDir, - ), - $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), - $.path("examples/typegraphs/scripts").copyToDir(pypaDir), - ]); - - const command = `source .venv/bin/activate &&` + - ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; - await $`bash -c ${command}` - .cwd(pypaDir) - .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - .env("MCLI_LOADER_PY", `poetry run python`) - .env("RUST_LOG", "trace"); - }); + // await t.should("work with JSR deno", async () => { + // const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); + // await denoJsrDir.join("deno.json").writeJson({}); + // await $`bash -c 'deno add @typegraph/sdk@${previousVersion}'`.cwd( + // denoJsrDir, + // ); + // await $.co([ + // $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), + // $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), + // ]); + // + // const command = + // `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + // await $`bash -c ${command}` + // .cwd(denoJsrDir) + // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // // FIXME: rename to deno.jsonc on bump 0.4.9 + // .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) + // .env("RUST_LOG", "trace"); + // }); + // + // await t.should("work with pypa", async () => { + // const pypaDir = await tgsDir.join("pypa").ensureDir(); + // await $ + // .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${previousVersion}` + // .cwd( + // pypaDir, + // ); + // await $.co([ + // pypaDir.join("README.md").ensureFile(), + // $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` + // .cwd( + // pypaDir, + // ), + // $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), + // $.path("examples/typegraphs/scripts").copyToDir(pypaDir), + // ]); + // + // const command = `source .venv/bin/activate &&` + + // ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; + // await $`bash -c ${command}` + // .cwd(pypaDir) + // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // .env("MCLI_LOADER_PY", `poetry run python`) + // .env("RUST_LOG", "trace"); + // }); proc.kill("SIGKILL"); const status = await proc; From ae36c620a261a273e2c13dd3fcea33edf517241e Mon Sep 17 00:00:00 2001 From: natoandro Date: Sat, 28 Dec 2024 18:08:07 +0100 Subject: [PATCH 6/6] wip --- deno.lock | 403 +++++++++++++++++- .../src/transports/graphql/typegraph.ts | 1 + .../src/typegraphs/introspection.json | 2 +- .../src/typegraphs/prisma_migration.json | 2 +- src/typegate/src/typegraphs/typegate.json | 2 +- tests/e2e/published/common.ts | 51 +++ tests/e2e/published/sdk_test.ts | 333 ++++++++------- 7 files changed, 624 insertions(+), 170 deletions(-) create mode 100644 tests/e2e/published/common.ts diff --git a/deno.lock b/deno.lock index 6458ce5a9..0d74a113b 100644 --- a/deno.lock +++ b/deno.lock @@ -4,6 +4,7 @@ "specifiers": { "jsr:@david/dax@0.41.0": "jsr:@david/dax@0.41.0", "jsr:@david/which@^0.4.1": "jsr:@david/which@0.4.1", + "jsr:@std/archive@^0.225.0": "jsr:@std/archive@0.225.4", "jsr:@std/assert@^0.221.0": "jsr:@std/assert@0.221.0", "jsr:@std/assert@^1.0.2": "jsr:@std/assert@1.0.6", "jsr:@std/assert@^1.0.3": "jsr:@std/assert@1.0.6", @@ -26,13 +27,15 @@ "jsr:@std/fmt@^1.0.3": "jsr:@std/fmt@1.0.3", "jsr:@std/fs@0.221.0": "jsr:@std/fs@0.221.0", "jsr:@std/fs@^1.0.1": "jsr:@std/fs@1.0.6", - "jsr:@std/fs@^1.0.3": "jsr:@std/fs@1.0.3", + "jsr:@std/fs@^1.0.3": "jsr:@std/fs@1.0.6", "jsr:@std/fs@^1.0.6": "jsr:@std/fs@1.0.6", "jsr:@std/http@^1.0.3": "jsr:@std/http@1.0.12", + "jsr:@std/internal@^1.0.3": "jsr:@std/internal@1.0.5", + "jsr:@std/internal@^1.0.4": "jsr:@std/internal@1.0.5", "jsr:@std/internal@^1.0.5": "jsr:@std/internal@1.0.5", "jsr:@std/io@0.221.0": "jsr:@std/io@0.221.0", "jsr:@std/io@^0.221.0": "jsr:@std/io@0.221.0", - "jsr:@std/io@^0.224.5": "jsr:@std/io@0.224.7", + "jsr:@std/io@^0.224.5": "jsr:@std/io@0.224.9", "jsr:@std/io@^0.224.7": "jsr:@std/io@0.224.7", "jsr:@std/io@^0.224.9": "jsr:@std/io@0.224.9", "jsr:@std/io@^0.225.0": "jsr:@std/io@0.225.0", @@ -40,13 +43,14 @@ "jsr:@std/path@0.221.0": "jsr:@std/path@0.221.0", "jsr:@std/path@^0.221.0": "jsr:@std/path@0.221.0", "jsr:@std/path@^1.0.2": "jsr:@std/path@1.0.8", - "jsr:@std/path@^1.0.4": "jsr:@std/path@1.0.4", + "jsr:@std/path@^1.0.4": "jsr:@std/path@1.0.8", "jsr:@std/path@^1.0.8": "jsr:@std/path@1.0.8", "jsr:@std/semver": "jsr:@std/semver@1.0.3", "jsr:@std/semver@^1.0.1": "jsr:@std/semver@1.0.3", "jsr:@std/streams@0.221.0": "jsr:@std/streams@0.221.0", "jsr:@std/streams@1": "jsr:@std/streams@1.0.4", "jsr:@std/testing@^1.0.1": "jsr:@std/testing@1.0.2", + "jsr:@std/url@^0.225.0": "jsr:@std/url@0.225.1", "jsr:@std/uuid@^1.0.1": "jsr:@std/uuid@1.0.3", "jsr:@std/yaml@^1.0.4": "jsr:@std/yaml@1.0.5", "npm:@noble/hashes@1.4.0": "npm:@noble/hashes@1.4.0", @@ -80,11 +84,20 @@ "@david/which@0.4.1": { "integrity": "896a682b111f92ab866cc70c5b4afab2f5899d2f9bde31ed00203b9c250f225e" }, + "@std/archive@0.225.4": { + "integrity": "59fe5d1834cbb6a2a7913b102d41c11d51475328d5b843bea75b94a40b44a115", + "dependencies": [ + "jsr:@std/io@^0.224.9" + ] + }, "@std/assert@0.221.0": { "integrity": "a5f1aa6e7909dbea271754fd4ab3f4e687aeff4873b4cef9a320af813adb489a" }, "@std/assert@1.0.6": { - "integrity": "1904c05806a25d94fe791d6d883b685c9e2dcd60e4f9fc30f4fc5cf010c72207" + "integrity": "1904c05806a25d94fe791d6d883b685c9e2dcd60e4f9fc30f4fc5cf010c72207", + "dependencies": [ + "jsr:@std/internal@^1.0.4" + ] }, "@std/assert@1.0.9": { "integrity": "a9f0c611a869cc791b26f523eec54c7e187aab7932c2c8e8bea0622d13680dcd", @@ -92,6 +105,9 @@ "jsr:@std/internal@^1.0.5" ] }, + "@std/async@1.0.5": { + "integrity": "31d68214bfbb31bd4c6022401d484e3964147c76c9220098baa703a39b6c2da6" + }, "@std/async@1.0.9": { "integrity": "c6472fd0623b3f3daae023cdf7ca5535e1b721dfbf376562c0c12b3fb4867f91" }, @@ -172,6 +188,23 @@ "@std/io@0.224.7": { "integrity": "a70848793c44a7c100926571a8c9be68ba85487bfcd4d0540d86deabe1123dc9" }, + "@std/io@0.224.9": { + "integrity": "4414664b6926f665102e73c969cfda06d2c4c59bd5d0c603fd4f1b1c840d6ee3", + "dependencies": [ + "jsr:@std/bytes@^1.0.2" + ] + }, + "@std/io@0.225.0": { + "integrity": "c1db7c5e5a231629b32d64b9a53139445b2ca640d828c26bf23e1c55f8c079b3" + }, + "@std/log@0.224.11": { + "integrity": "df5e5a6d6ab8bcea016a17982cd2435f65234d6618bf631925587c0b2eae2a4e", + "dependencies": [ + "jsr:@std/fmt@^1.0.3", + "jsr:@std/fs@^1.0.6", + "jsr:@std/io@^0.225.0" + ] + }, "@std/log@0.224.7": { "integrity": "021941e5cd16de60cb11599c9b36f892aea95987fe66c753922808da27909e18", "dependencies": [ @@ -207,12 +240,27 @@ "jsr:@std/bytes@^1.0.2-rc.3" ] }, + "@std/streams@1.0.4": { + "integrity": "a1a5b01c74ca1d2dcaacfe1d4bbb91392e765946d82a3471bd95539adc6da83a", + "dependencies": [ + "jsr:@std/bytes@^1.0.2" + ] + }, "@std/streams@1.0.8": { "integrity": "b41332d93d2cf6a82fe4ac2153b930adf1a859392931e2a19d9fabfb6f154fb3", "dependencies": [ "jsr:@std/bytes@^1.0.3" ] }, + "@std/testing@1.0.2": { + "integrity": "9e8a7f4e26c219addabe7942d09c3450fa0a74e9662341961bc0ef502274dec3", + "dependencies": [ + "jsr:@std/assert@^1.0.4", + "jsr:@std/fs@^1.0.3", + "jsr:@std/internal@^1.0.3", + "jsr:@std/path@^1.0.4" + ] + }, "@std/testing@1.0.6": { "integrity": "9192ded2d34065f4c959fdc1921fe836770abb9194410c2cc8a0fff4eff5c893", "dependencies": [ @@ -1199,12 +1247,131 @@ "https://deno.land/x/zod@v3.22.2/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", "https://deno.land/x/zod@v3.22.2/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", "https://deno.land/x/zod@v3.22.2/types.ts": "18cbe3d895f42977c43fa9411da214b06d0d682cf2f4c9dd26cc8c3737740d40", + "https://esm.sh/@aws-sdk/client-s3@3.335.0?pin=v131": "0633878ddbd4e8d10cb685fedd109df3480c2536e72702c62f7e3b010ab912fc", "https://esm.sh/@aws-sdk/client-s3@3.700.0?pin=v135": "c4e66ce2669ce810cd7f060e52e9702a37f02fc0912f69b1dc020a29b4d6e70f", "https://esm.sh/@aws-sdk/lib-storage@3.626.0?pin=v135": "ff6d1c100467d3c4ff6515cb4d0b36fceef2a944ff8474412ff248ceb58ce7e6", "https://esm.sh/@aws-sdk/lib-storage@3.700.0?pin=v135": "20499413966c9d494f4bff63361359e095f174c4a41ee79da3a0fbeb62dc947f", + "https://esm.sh/@aws-sdk/s3-request-presigner@3.335.0?pin=v131": "f32c826ef4de3839aca3e48ed856426019a2f16cc787e1c09d2214d24dd448cb", "https://esm.sh/@aws-sdk/s3-request-presigner@3.700.0?pin=v135": "806a2f5f0c65996434f031fbeb3983ee271239e9b22c70cf3624b79b2667cdce", "https://esm.sh/ajv@8.12.0?pin=v131": "f8dc3d8e4d6d69f48381749333cc388e54177f66601125b43246c3e43d3145d6", "https://esm.sh/jszip@3.7.1": "f3872a819b015715edb05f81d973b5cd05d3d213d8eb28293ca5471fe7a71773", + "https://esm.sh/v131/@aws-crypto/crc32@3.0.0/denonext/crc32.mjs": "a7b2905678c9acb4294fedf6f75c0d01c2a7c4a031acea1c816fd22b1372ad4a", + "https://esm.sh/v131/@aws-crypto/crc32c@3.0.0/denonext/crc32c.mjs": "b5b36bedb1a00f79183720f5d4c54cb672e8f9877ca820550bb333f778ce912e", + "https://esm.sh/v131/@aws-crypto/ie11-detection@3.0.0/denonext/ie11-detection.mjs": "7cbccafb093d6c2c1a5b9f3e8535533220cc612dfb2bf228ea793e69376f8a0f", + "https://esm.sh/v131/@aws-crypto/sha1-browser@3.0.0/denonext/sha1-browser.mjs": "8d00cbfad40fad9737dde1e190e26bd6c0f7925c1aff7c2c1685b825d817e57c", + "https://esm.sh/v131/@aws-crypto/sha256-browser@3.0.0/denonext/sha256-browser.mjs": "55e8c7cf121d71c0001a16e8c6eae414c626f37bc894c4f43cd5796c084caf00", + "https://esm.sh/v131/@aws-crypto/sha256-js@3.0.0/denonext/sha256-js.mjs": "ba78960638c2969e03f6f69175ab51e0aa1167196a32f4baa2d9a3be54c7be2a", + "https://esm.sh/v131/@aws-crypto/supports-web-crypto@3.0.0/denonext/supports-web-crypto.mjs": "361a53acba49a257feed671c9636779f9884723d590a22db56d7a00731dc435c", + "https://esm.sh/v131/@aws-crypto/util@3.0.0/denonext/util.mjs": "2f9527b5030c246599f883288161258583d6edb7eec6567119a9e48b0166b460", + "https://esm.sh/v131/@aws-sdk/chunked-blob-reader@3.310.0/denonext/chunked-blob-reader.mjs": "4401b1a6c954c398db355225a6d937e9403192f9e79310be7ff22c2a33e05f14", + "https://esm.sh/v131/@aws-sdk/client-s3@3.335.0/denonext/client-s3.mjs": "2990cd07204aac8c6c4046f19d5b33c71d37e36a9335ef7346025e8b2f0e1d9c", + "https://esm.sh/v131/@aws-sdk/config-resolver@3.329.0/denonext/config-resolver.mjs": "00b134417c639e27b2107d74ebf91ed93c603b91733f1c4ada4cd8cf3da3527b", + "https://esm.sh/v131/@aws-sdk/eventstream-codec@3.329.0/denonext/eventstream-codec.mjs": "2671176e614b701e53f3982689898875862be983427d78c69be6aab4b4a4ad53", + "https://esm.sh/v131/@aws-sdk/eventstream-serde-browser@3.329.0/denonext/eventstream-serde-browser.mjs": "40d2cdd4cd67f08266b299b36e5d1741c0a258897c565a9eecd63d3ca1d03c91", + "https://esm.sh/v131/@aws-sdk/eventstream-serde-config-resolver@3.329.0/denonext/eventstream-serde-config-resolver.mjs": "18ade7f876637f79053957e80bb0775c0bc78c357007cfa26a27a86931fc70a6", + "https://esm.sh/v131/@aws-sdk/eventstream-serde-universal@3.329.0/denonext/eventstream-serde-universal.mjs": "6a8fc6bc7d5f0801300340f8ab85ed4b7fbee303359767702791e51ea68e3457", + "https://esm.sh/v131/@aws-sdk/fetch-http-handler@3.329.0/denonext/fetch-http-handler.mjs": "d6d30c1712ac8e300af4fb082e6093a07aa607c50d0db61a7b25126bbff3a794", + "https://esm.sh/v131/@aws-sdk/hash-blob-browser@3.329.0/denonext/hash-blob-browser.mjs": "b34c3fd7f2faf2f60e99834a354d35067602f6a8d479f1a29f2196f0986ae65b", + "https://esm.sh/v131/@aws-sdk/invalid-dependency@3.329.0/denonext/invalid-dependency.mjs": "a2f92f8a138d476805c719a2c03f069460c3b6c7842ca86dc93edcedaa0206cd", + "https://esm.sh/v131/@aws-sdk/is-array-buffer@3.310.0/denonext/is-array-buffer.mjs": "6e439346764944fba7c50cc310a0d7d2242e87aaaf4fc342095422ff766bb9ee", + "https://esm.sh/v131/@aws-sdk/md5-js@3.329.0/denonext/md5-js.mjs": "b835157ac7a0bfe2c88a83a2b098fe92b6dfddcc8776b4a315ca238175394a62", + "https://esm.sh/v131/@aws-sdk/middleware-content-length@3.329.0/denonext/middleware-content-length.mjs": "0f170830741c27fbd2c274deb09d5d16545ee899c1be4ab7254a43b103b96bf0", + "https://esm.sh/v131/@aws-sdk/middleware-endpoint@3.329.0/denonext/middleware-endpoint.mjs": "aa77d6acf58e7fb12585b8d0b9d42a6cd188b6046b50dd2fe9002c52abd7014b", + "https://esm.sh/v131/@aws-sdk/middleware-expect-continue@3.329.0/denonext/middleware-expect-continue.mjs": "c8eb9ae0fbb9bd182eb84d0ceb68e8142c951cc6a6e35b2b6d6e27a21048fc80", + "https://esm.sh/v131/@aws-sdk/middleware-flexible-checksums@3.331.0/denonext/middleware-flexible-checksums.mjs": "999978cc064148fe7081eaccadd3bc8ac9b063fb550620a981cf81597d1f01a7", + "https://esm.sh/v131/@aws-sdk/middleware-host-header@3.329.0/denonext/middleware-host-header.mjs": "c0e33ae2c1dd2ad52ce753f5d9035e244fd7780dd15d499422ab2e4c7234e085", + "https://esm.sh/v131/@aws-sdk/middleware-location-constraint@3.329.0/denonext/middleware-location-constraint.mjs": "d58ff62eb0db60c6f3811ddc4f7a0ac48df1f76d2ba430a89fec2b829cd15cf0", + "https://esm.sh/v131/@aws-sdk/middleware-logger@3.329.0/denonext/middleware-logger.mjs": "3edceb18bf204dbc9a0fc4e9801f8aea23b5652dbb920fd05d3a70b37ff83d09", + "https://esm.sh/v131/@aws-sdk/middleware-recursion-detection@3.329.0/denonext/middleware-recursion-detection.mjs": "1998b36c65ed29e70cafc9b7dbad528a345ff7078d3e73e7ae9b6b838af942a5", + "https://esm.sh/v131/@aws-sdk/middleware-retry@3.329.0/denonext/middleware-retry.mjs": "2f7e543d69c95305999b2aa7b079c23a02d870b18d85d6d44ffbab001ded7e81", + "https://esm.sh/v131/@aws-sdk/middleware-sdk-s3@3.329.0/denonext/middleware-sdk-s3.mjs": "8084087a54dba109fd3e29782f25da7996d4f1f4bae5517c9d2fbaf3b36d8d2a", + "https://esm.sh/v131/@aws-sdk/middleware-serde@3.329.0/denonext/middleware-serde.mjs": "6cc2658658bbed61570b1aa86022af3c009ade420c5689a060c741a411f07306", + "https://esm.sh/v131/@aws-sdk/middleware-signing@3.329.0/denonext/middleware-signing.mjs": "caa4a5eeaac855c555cec5f51b8780ea77aa72ac7759a535d1e3a27b79e2c51c", + "https://esm.sh/v131/@aws-sdk/middleware-ssec@3.329.0/denonext/middleware-ssec.mjs": "893e62fa5b5981e8801273220f8af582974bc7ec19a75ae7be34da5fe55acfd6", + "https://esm.sh/v131/@aws-sdk/middleware-stack@3.329.0/denonext/middleware-stack.mjs": "fb99b7b75f28f75710d7c4335eed550049b5fb3a88bb803c9144dc94027126e4", + "https://esm.sh/v131/@aws-sdk/middleware-user-agent@3.332.0/denonext/middleware-user-agent.mjs": "59435f9dd7f0fb160500eada671164fb0f4d518213f8b474a91b54106d5b54b1", + "https://esm.sh/v131/@aws-sdk/property-provider@3.329.0/denonext/property-provider.mjs": "bc96051e0fae3b0a01d011b1b8e247ebf89caa52fbd3522fab77728f4f639345", + "https://esm.sh/v131/@aws-sdk/protocol-http@3.329.0/denonext/protocol-http.mjs": "4256a8110ed08f52124aac742d8df429d84b0b55b29147ebfa5b5db44b2990f6", + "https://esm.sh/v131/@aws-sdk/querystring-builder@3.329.0/denonext/querystring-builder.mjs": "cf0776b4fcc30f0b4911011e5184eb0d996c6e1c045d63c7c0ac8f75507982f0", + "https://esm.sh/v131/@aws-sdk/querystring-parser@3.329.0/denonext/querystring-parser.mjs": "40ff8f84d555f74f8996757645b31276755755412865833e1c2b73cb3c099233", + "https://esm.sh/v131/@aws-sdk/s3-request-presigner@3.335.0/denonext/s3-request-presigner.mjs": "41551ded4796e73be68e20a9be5af919979e9f15ef47808cd677e77577c69050", + "https://esm.sh/v131/@aws-sdk/service-error-classification@3.329.0/denonext/service-error-classification.mjs": "8d188836f247e51643e694518958375d6c24f38f8115438052e95a6fe11e790c", + "https://esm.sh/v131/@aws-sdk/signature-v4-crt@3.391.0/denonext/signature-v4-crt.mjs": "6791fe556546ffea4a106d0a30fa54d351a57c1a8a7ad2de071e1d194e94b683", + "https://esm.sh/v131/@aws-sdk/signature-v4-multi-region@3.329.0/denonext/signature-v4-multi-region.mjs": "c85bd24f342d6d35e4bb63beb8b5b059c557955200dcea37ab29360305b4c748", + "https://esm.sh/v131/@aws-sdk/signature-v4@3.329.0/denonext/signature-v4.mjs": "d6643233bc5e5a566b52e805a649a3eb01b7e1c87af221ccf03337a34fff1807", + "https://esm.sh/v131/@aws-sdk/smithy-client@3.329.0/denonext/smithy-client.mjs": "da930042fd268a64eeb89bf7d5d83aaedcf97ab1abd0739ed2cc493ea56992e2", + "https://esm.sh/v131/@aws-sdk/types@3.329.0/denonext/types.mjs": "f687ff69c53e1af2cc7af841af00691674fbb22889d12a2ae8cb1517600ee67c", + "https://esm.sh/v131/@aws-sdk/url-parser@3.329.0/denonext/url-parser.mjs": "d5963d8f1e62a1f73b4af00ff2e8bed11dc69a39156251b44ce5e9d59add55c1", + "https://esm.sh/v131/@aws-sdk/util-arn-parser@3.310.0/denonext/util-arn-parser.mjs": "da6927c63827861d70a20f1581d399fd5510ebb311f6ba23bb4f41ee6cb13ee4", + "https://esm.sh/v131/@aws-sdk/util-base64@3.310.0/denonext/util-base64.mjs": "dfaecb0f8ce33d1b670861e3eb420e12990dbb71b42574c32064ae86d17d8df0", + "https://esm.sh/v131/@aws-sdk/util-body-length-browser@3.310.0/denonext/util-body-length-browser.mjs": "606de31e860d9a8ef454bde44a42b77311340567e9246b72c42b2c2c604dbd56", + "https://esm.sh/v131/@aws-sdk/util-config-provider@3.310.0/denonext/util-config-provider.mjs": "9c3b6a127cce262b43e339c7f26d8d5444fc887ccda27cc4ca5483e050dfb2cf", + "https://esm.sh/v131/@aws-sdk/util-defaults-mode-browser@3.329.0/denonext/util-defaults-mode-browser.mjs": "acc59887a35a66d5fdcaa2101ac0dcf71141d332b243dc6808534c6ed5212f77", + "https://esm.sh/v131/@aws-sdk/util-endpoints@3.332.0/denonext/util-endpoints.mjs": "02da62ce90e11394aa5428b17b48fdfa74ff81003a689a53b522541101a9608b", + "https://esm.sh/v131/@aws-sdk/util-format-url@3.329.0/denonext/util-format-url.mjs": "6dedc088febc86ddbb24ed628f818ae6caf13ccdedb7d369c1ecc7884e1d0e2b", + "https://esm.sh/v131/@aws-sdk/util-hex-encoding@3.310.0/denonext/util-hex-encoding.mjs": "a0eefaaeb52f512fda170d4ba78b87df41f2588efabc96bc998d12fe7af83c9e", + "https://esm.sh/v131/@aws-sdk/util-locate-window@3.310.0/denonext/util-locate-window.mjs": "894879f284b5a41fc830b8fe40e2a7038b124d5f5b7a3fde841c3314366c56c5", + "https://esm.sh/v131/@aws-sdk/util-middleware@3.329.0/denonext/util-middleware.mjs": "c9e423e7b96aa3eb038defc3b70a7db2e20260e504ec846cff5bd233f34fe09d", + "https://esm.sh/v131/@aws-sdk/util-retry@3.329.0/denonext/util-retry.mjs": "ed702a959997b4820d93bf89503decc8d5a9734729bdbe5bd247f2db693e680b", + "https://esm.sh/v131/@aws-sdk/util-stream-browser@3.329.0/denonext/util-stream-browser.mjs": "7cf71ee2a0a20b67ea57e6834e23bd5076ad74674418d65e8d924f33cc378a06", + "https://esm.sh/v131/@aws-sdk/util-uri-escape@3.310.0/denonext/util-uri-escape.mjs": "c0888b31da1e24f84ce208869244230c4f67caacddcdacdea70b3ae01c0c30bd", + "https://esm.sh/v131/@aws-sdk/util-user-agent-browser@3.329.0/denonext/util-user-agent-browser.mjs": "3fae0af61dd1d0a5764275b34f497ac9511e87529a0fa9f5a30ccfb2a2683856", + "https://esm.sh/v131/@aws-sdk/util-utf8-browser@3.259.0/denonext/util-utf8-browser.mjs": "79fc8ce5cd61204fe274363d637902a5d49ea40688e8d40cbd5b6ecf56f782b7", + "https://esm.sh/v131/@aws-sdk/util-utf8@3.310.0/denonext/util-utf8.mjs": "b988a756b1d6e53db92e105d52a25c298e6fdbd749d24e9ac70a688c96565dc8", + "https://esm.sh/v131/@aws-sdk/util-waiter@3.329.0/denonext/util-waiter.mjs": "756743c076c5ef4d9b842f239bfde5e28903641b2475c4bdbb411e01b445782f", + "https://esm.sh/v131/@aws-sdk/xml-builder@3.310.0/denonext/xml-builder.mjs": "66aa1e7ed650d5da4a99f3ca05f5026fa6efcff293f720221b6cd63102f33dad", + "https://esm.sh/v131/@httptoolkit/websocket-stream@6.0.1/denonext/websocket-stream.mjs": "c5819a529fab01eaa27ec17550cc7b9dae4d0e3e5552f81c0ecb37c746c025c2", + "https://esm.sh/v131/@smithy/eventstream-codec@2.0.2/denonext/eventstream-codec.mjs": "af08552ab22199c7071e6449046a87d5461cbb92ece49c565c11a3d01e3106bb", + "https://esm.sh/v131/@smithy/is-array-buffer@2.0.0/denonext/is-array-buffer.mjs": "8fcbe490a3730ac1eac71766b5e1cb41ccba2f2abf646badb0e50a95340b3623", + "https://esm.sh/v131/@smithy/protocol-http@1.2.0/denonext/protocol-http.mjs": "29f698026fbe2c9c139d356a8ca5f7e197fe34d4f5d9fb364da0a4340729aa12", + "https://esm.sh/v131/@smithy/querystring-parser@2.0.3/denonext/querystring-parser.mjs": "2f656d24d351a2f741fbe5dbeae352f51bf73d80258a0e2d39893c69786843c8", + "https://esm.sh/v131/@smithy/signature-v4@2.0.1/denonext/signature-v4.mjs": "01efbf6f929d92a7d01edc68f5e4d6488684d462c22383955cbf1a7ca5f2ac8e", + "https://esm.sh/v131/@smithy/types@1.2.0/denonext/types.mjs": "e7310b4830d09404b64c0e5512232b86d6374023aaf950049615b99caaed51ec", + "https://esm.sh/v131/@smithy/util-hex-encoding@2.0.0/denonext/util-hex-encoding.mjs": "48b73551d6dc8f87fff840debe36f207f56b04a36c3c21fe2099613457c9d22d", + "https://esm.sh/v131/@smithy/util-middleware@2.0.0/denonext/util-middleware.mjs": "89a29c46c58825db0566b99d517476aa973d4cc09fcd5e82413f018599db8f26", + "https://esm.sh/v131/@smithy/util-uri-escape@2.0.0/denonext/util-uri-escape.mjs": "1e46ae4ab088b9dfcb5dd73715de2a2530747e920cf5b405012aed7d944e2976", + "https://esm.sh/v131/@smithy/util-utf8@2.0.0/denonext/util-utf8.mjs": "c50f8d6d64a39a8717e88184dee0fec145cb2d17a0d0a456e007eae02062bae5", + "https://esm.sh/v131/aws-crt@1.15.16/denonext/aws-crt.mjs": "382aad6bd02cf4f568160bb79b01a47d0332aa4021e1451eaed0b74498d7de9c", + "https://esm.sh/v131/axios@0.24.0/denonext/axios.mjs": "895bb627711160f383d2674e7cae963f8e2734ed90b1972918a35f81d6139675", + "https://esm.sh/v131/bl@4.1.0/denonext/bl.mjs": "77f87a325a0e68eb01e3a3b40856d42a037d0c111a6e3949a82ce6b50c24181a", + "https://esm.sh/v131/bowser@2.11.0/denonext/bowser.mjs": "3fd0c5d68c4bb8b3243c1b0ac76442fa90f5e20ee12773ce2b2f476c2e7a3615", + "https://esm.sh/v131/bufferutil@4.0.7/denonext/bufferutil.mjs": "abe42a54dfdc6365872850cd4395be09f2198b84a1d46022b88c98a6196f6e1f", + "https://esm.sh/v131/core-util-is@1.0.3/denonext/core-util-is.mjs": "f19dfe63f62278ae0c5a25bd85ffeac5bbdb099b22f005d01bbb62673505deec", + "https://esm.sh/v131/crypto-js@4.1.1/denonext/crypto-js.mjs": "b25d264259764a5c95fe9dfe04820d3aa6b22e063776db1dd1d0e7ac2e106eb3", + "https://esm.sh/v131/debug@4.3.4/denonext/debug.mjs": "892826bb4505deb6337df2f0f72b1e355e5377e702dd739b78774539d7482f5c", + "https://esm.sh/v131/duplexify@3.7.1/denonext/duplexify.mjs": "ac16b0738f66a2009a5f40e52f69e534df9577e694da65d1ba709c47081ff6e8", + "https://esm.sh/v131/duplexify@4.1.2/denonext/duplexify.mjs": "8e183775cd15c5752a4ba69439c3efbbfaa47b20c504b97a5ff4c3ef13c9f944", + "https://esm.sh/v131/end-of-stream@1.4.4/denonext/end-of-stream.mjs": "77a90d627b92ff8a6b577d3ce46e7f26ba55808557d1cfca70c540b76bd96af2", + "https://esm.sh/v131/fast-xml-parser@4.1.2/denonext/fast-xml-parser.mjs": "909a019fba61593212441bfc4db1e0e8652c28f108dda2db1435a2f6203bea19", + "https://esm.sh/v131/inherits@2.0.4/denonext/inherits.mjs": "8095f3d6aea060c904fb24ae50f2882779c0acbe5d56814514c8b5153f3b4b3b", + "https://esm.sh/v131/isarray@1.0.0/denonext/isarray.mjs": "6368a41cf02c83843453ac571deb4c393c14e6f5e1d9ca6bbe43a4623f3856c8", + "https://esm.sh/v131/isomorphic-ws@5.0.0/denonext/isomorphic-ws.mjs": "6ebc8e183811a7b10ff098e9e76f2ceaf14682a045e199b4885a47d211e61aac", + "https://esm.sh/v131/js-sdsl@4.3.0/denonext/js-sdsl.mjs": "b9d39574526cc0ea4021040025ad9c6184efc8ba32ced483fd5c785afffa49f1", + "https://esm.sh/v131/lru-cache@6.0.0/denonext/lru-cache.mjs": "24583c5c6a66ad0c20393bb59f45bb5bf77a4bff6545d2f22c4718f48d943840", + "https://esm.sh/v131/mqtt-packet@6.10.0/denonext/mqtt-packet.mjs": "cbab199254918314ec410ff47ed4c2c0753a872b3749c999aad1054155570278", + "https://esm.sh/v131/mqtt@4.3.7/denonext/mqtt.mjs": "c5c3a58d1f400e1c34b985c76ed2bfe7d271488a31af8bb3d515c3995bb2ab3b", + "https://esm.sh/v131/ms@2.1.2/denonext/ms.mjs": "aa4dc45ba72554c5011168f8910cc646c37af53cfff1a15a4decced838b8eb14", + "https://esm.sh/v131/node-gyp-build@4.6.0/denonext/node-gyp-build.mjs": "58fc8e41b3ffd2f8a6b2a1694292976e6e12768d6e3895b9c8c13239562ffe64", + "https://esm.sh/v131/number-allocator@1.0.14/denonext/number-allocator.mjs": "31973164cee3564b8bc660006622bb89fde09ac1aff800ec27b4afd01bbdc74a", + "https://esm.sh/v131/once@1.4.0/denonext/once.mjs": "b4eb5beddf7f0f8ab4db5e56987d53e5f0fd77961eac5dd554ab75aa79ef0202", + "https://esm.sh/v131/process-nextick-args@2.0.1/denonext/process-nextick-args.mjs": "a57885eb600374afb2521e1d47e92df4d292d49c90c31496da5d0dde2f0d0b5f", + "https://esm.sh/v131/readable-stream@2.3.8/denonext/readable-stream.mjs": "9c2952f308e93db73ce18182be01e4e820866fdf35042a60ef29c317a4ffa72b", + "https://esm.sh/v131/readable-stream@3.6.2/denonext/readable-stream.mjs": "6d839ff306020b3a33ba1c9e46ee4f6c73a6edf453fe5c706db14a2e6ab3d987", + "https://esm.sh/v131/reinterval@1.1.0/denonext/reinterval.mjs": "6697cf544429f073376f5b8fcc5696097917bbedab45792b74d3f785e7747b58", + "https://esm.sh/v131/rfdc@1.3.0/denonext/default.js": "14b787ae4011ae4dfd0507974a9b6c11741367a1c31de2fcb3e13c92d8c4f91c", + "https://esm.sh/v131/safe-buffer@5.1.2/denonext/safe-buffer.mjs": "bf91200afdaf8be92e5c7d4c79e4dc9b5c534f76e104f1b37e5891d6f81eaca2", + "https://esm.sh/v131/safe-buffer@5.2.1/denonext/safe-buffer.mjs": "facbcb4f4622e13062978522fa12c42cae4e12f55b0e1d3fa1c4bc751bd827c7", + "https://esm.sh/v131/stream-shift@1.0.1/denonext/stream-shift.mjs": "1ec867cd3a4f89303a28e3f50e56a1d60c200b9204e9678e1a7f908f91ccccd9", + "https://esm.sh/v131/strnum@1.0.5/denonext/strnum.mjs": "1ffef4adec2f74139e36a2bfed8381880541396fe1c315779fb22e081b17468b", + "https://esm.sh/v131/tslib@1.14.1/denonext/tslib.mjs": "5e49e8960f064d11fb709e3338f5437e2ede57e7df873a09d7834c2a0bf533f7", + "https://esm.sh/v131/utf-8-validate@6.0.3/denonext/utf-8-validate.mjs": "6197c86d1731c0c56002eac5d14d7dc6a23d7f8de06623eeef5587aa63aa968b", + "https://esm.sh/v131/util-deprecate@1.0.2/denonext/util-deprecate.mjs": "f69f67cf655c38428b0934e0f7c865c055834a87cc3866b629d6b2beb21005e9", + "https://esm.sh/v131/uuid@8.3.2/denonext/uuid.mjs": "2cea289bbecc01fab6f701b719513f6ac8a3c21a5e52aa3f8682cf61d70a5dc5", + "https://esm.sh/v131/wrappy@1.0.2/denonext/wrappy.mjs": "3c31e4782e0307cf56b319fcec6110f925dafe6cb47a8fa23350d480f5fa8b06", + "https://esm.sh/v131/ws@7.5.9/denonext/ws.mjs": "bb14a389271bb68778d59f498428caee8048221eea59cc7522898b44aad66d88", + "https://esm.sh/v131/ws@8.13.0/denonext/ws.mjs": "ed9425cc1b9c9b9987590c15646b9adcd8e7d4c4cfff745fdc273a46cbc2b7cc", + "https://esm.sh/v131/xtend@4.0.2/denonext/xtend.mjs": "503056f181793967e90c0566a737612694366fa7191172f4a106099b5c2a80d2", + "https://esm.sh/v131/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82", "https://esm.sh/v135/@aws-crypto/crc32@5.2.0/denonext/crc32.mjs": "6a9bc8418c01e2539665b528ccea843f1319a3b32d759fcbb1d4468156c25100", "https://esm.sh/v135/@aws-crypto/crc32c@5.2.0/denonext/crc32c.mjs": "1e8985997bd2c0807d349acaf192a54147d779e5349faf6507f51aa8becb85ca", "https://esm.sh/v135/@aws-crypto/sha1-browser@5.2.0/denonext/sha1-browser.mjs": "d80868d5524769e0334b50124d547ce9875fb05f9924acca4c42ed877b41ce7f", @@ -1430,7 +1597,233 @@ "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/mod.ts": "25901b5a03625353cc0d9c024daca806eb2513b153faede5ecad73b428542721", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/unarchive.ts": "f6d0e9e75f470eeef5aecd0089169f4350fc30ebfdc05466bb7b30042294d6d3", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/url.ts": "e1ada6fd30fc796b8918c88456ea1b5bbd87a07d0a0538b092b91fd2bb9b7623", - "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62" + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/engine/bindings.ts": "e9391491bf5c4f682267a5cb4ae384ef33ed7c15273fcada13bea7b064cf1270", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/config.ts": "2d15bf427ed74be3203e81d56d3bc5c6ecdae74bca18fdf5160482ea2b4b0385", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/config/loader.ts": "91cc2b67cc9bee413b0b44f9aa2ea7814f50e2465e6bc114eece248554d7477d", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/config/shared.ts": "b2cc53588d6651b5261de312c4b92f517f0b764cd95eb1b8771e46c3f46376a0", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/config/types.ts": "04013979ff0c001e8a19547a14bfe2ee0a2c49dc346b22ceefd99f8c8aecb7f8", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/crypto.ts": "f550775b9e5bf9e7ec286a1596246a631b117fd91e093169bcad4898fb729634", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/computation_engine.ts": "c61c224909a334e6024c2b1f929ebb2721bbd00e5418178ec68bbcdc5391090f", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/planner/args.ts": "3cea07d4c49784c1cddbd449f5dcc7e5627c2c6c5a9056b5ccadb8542d13f3ed", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/planner/dependency_resolver.ts": "b851f4a6e2d500f9427dd1a59920d6c71f10904b31863bb1fac4d26e01d02b67", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/planner/injection_utils.ts": "d7dcd7d10fe7c610731b9a98905bb97eb96d591521245d9645f8b9a8a8ad510d", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/planner/mod.ts": "cb5ec29f08bb4617cad7581b28d453873227b246321f91175833b0264bf16ff1", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/planner/parameter_transformer.ts": "4407bc6f75215431b8790cd2ba39ec348c25a9f9c377a80d0bd7315e72a9afb3", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/planner/policies.ts": "3c316e95ab4cc28e5684b0362afdb1e0ba198c7d49453bdfa2470fd39c44104b", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/query_engine.ts": "dbbbe1f233f67fae4e0574ab8ceafe3f4a03f3c62fa0a9f7cc8d02c44fe79bc5", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/stage_id.ts": "b3b3c62215ff421103788079b77943af8f0026a56eafaa929415cb39ccde3cca", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/code_generator.ts": "edb77e2b98da2f040d3f7567d204dba2a3d8c66ae1a7c2709c049e464763f0cd", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/common.ts": "b585975e1a978dfa966df1a549261049ab159077bc90203a33bfe8ae055b3c6f", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/inline_validators/common.ts": "112f56c8e590215b0af0c1b46dc84b85cb5b9b43621a52646876c35a43103499", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/inline_validators/constraints.ts": "3237d0acce31aca8b2f2bbc0cae8a82d86f3671fcc7fabc3158037c4f79008f5", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/inline_validators/list.ts": "bd70fef3bc3840cfb6255a518de5fdb3db79a68a4481594475aebcbdd6a10102", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/inline_validators/number.ts": "9890c8af998dca2e573fc2ad02e63d9abc9b506b4a0c451d31f5916a8888e401", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/inline_validators/object.ts": "bd4f8891ee823bf82481df2ee181256514fd7299b5fe4fd7cd7194defa228f57", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/inline_validators/string.ts": "914a2b809a344075279578cb35ac3d03cb6025eb9f62c1f9f86958191b9857da", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/input.ts": "e34fec32501c9e4d9b427b097fd6565f54065562e101732e62b4c2799e60288c", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/matching_variant.ts": "aca8db649194921a01aca42b02113d0735262bb63d41ec44174e61c4cfa85369", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/engine/typecheck/result.ts": "b2ac55373242b157396f4b400112d02b45abb623e72d2ccfa6e168a10845211b", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/errors.ts": "29dfbfdc8b7a85ee9551831d6db882e50a4e0104102b5885b2bd9a42878365f6", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/libs/jsonpath.ts": "f6851288fb8600dec0e62d5f804f41332b6197b255b6497360ba7e4b7f375cba", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/log.ts": "50d9fd5a225312118b04317c89155ae5a37f66b3ff31af4b7ed92880fa7c6694", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/main.ts": "af5c054d8188afa43b3f5cf3f779a3b0fe2c2bccf2cb7dbde942f469a0ebaad7", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/Runtime.ts": "7ebf8f1903c46ddeb9b795c548561105e643ab5867319e4a9f1f72920048d14d", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/deno.ts": "c893dcf170b38547239d550080a856aca46a788de9922f282bbacf9b5841b5fe", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/deno/deno.ts": "c540c9049261a302e0cefd510fcca6e51e5d527ac2d432a32060d98fa5202ad3", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/deno/deno_messenger.ts": "81160c8a9c9817b46b52c4eee15cde880fb3f6b013c3b5110ee07a4c9c7f7a5e", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/deno/worker.ts": "64604d323ffd85f864c4a15419077e5131561de1680504041157a05f8ad9b5eb", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/graphql.ts": "e7b1126e80c433a3fa851aff47239b2571ba4ee0b175b25bda6d85804e8b50bd", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/http.ts": "f598a33aa3cafcf37a1f33d84c06bfd0ef5fd768f72837042c83ac6ae1d90762", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/kv.ts": "ea5365bf5cb3a2c1a7a82482d4b5c1f9fb5e84ed331edce4187464a4ca4e5801", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/mod.ts": "8be5c49d628052d172da6c6d8d40d416ec3212ac9776aad658c904a9ada06d02", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "40644e011e3a258138ff1fb7a5323754a547016da9c1deb2114cfc471ee28bf0", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "b93d5e7252231d27d6b76ec4172d67cc23880b78411fb371d0cba2db712e2161", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma.ts": "e4b679c3b5e28a323d72bde5ebbcc113abe0efc8da82d70b3b2e390149c57d84", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "45d00aee4082e93e817f748fe27d765e5869373c69097a0186ddfcc62f0e152f", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma/hooks/mod.ts": "3e33752e3676b538c7016f3ddd4f1f49d75e217c410bcaa6319d33ed987d3c60", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "aa21425f2383068d08accf99e40ca31046a3f8cec30bf5302a345fbf7fda019f", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma/migration.ts": "f501540557b13a32f7b57e5a87f4ae1794cdd95214a49b34a429d7a33a96d5d8", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma/mod.ts": "a0e44e86a45aad8b2bb0357ddbe8ba02802e6979451553940ec3688be571127f", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma/prisma.ts": "2d9c5b0dd0805f043e7aabe4fc5ad39571a8bf01194dadc1f0ef17b121be2fc6", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/prisma/types.ts": "b4912f164aa8cdb1db3a98238a0271882864ff2778c10920dd7f0f3d59165dd6", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/python.ts": "00fefc5201b7f8600a5788ddf7f2db1d53098b34654c24f4f37c78052056645e", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/random.ts": "8623fa125804dd6302b3c18dc882a4988ce8f2510be55cdc3ddf9af84d05b8e7", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/s3.ts": "2f028f0564d07e789923dd8811ceaf3b4c92a57e390f10d235ac5da7cf18b4e5", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/temporal.ts": "ff8a21af119e67e30c4cb31f7ac677555ac3945fa6f94431c4535009bf9a4c9c", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/typegate.ts": "3f629905c99c49f372be0e05cc8ec27a113b0959f446273134d5eb75a3da8db4", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/typegraph.ts": "075d4a054ced6424529d9b7e8770d9e2579b3bcb3362007226e6b479afaa6013", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/utils/graphql_forward_vars.ts": "f0bb091aadd191eb1491dd86b7abd311ab60e09f532d226c8328b2cfa6025d9e", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/utils/graphql_inline_vars.ts": "9c3c339ee596c93cf65cda696d756c9ef08d34b78e4136472e27a92f2254ec8a", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/utils/http.ts": "842af99040fd0e3456690f7674311da3a0b9ea64c608d7bc588df1ab28f163a3", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/wasm_reflected.ts": "f27fc767b0d42d65729d7489ee61336ce2419a45cb1d52debec67ad3c1559084", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/wasm_wire.ts": "8d8ba5bc68bf6fa7842c193b7e86af0833087ff44da40d83ccf600e62a29d484", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/runtimes/wit_wire/mod.ts": "e13ca5e0384357da52744640f9d535c2f84da668c8eb92893fe454c9cd66fb2b", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/artifact_service.ts": "84285d8e1e569d5f30918f6bf0c7a97011b37b2ab529787f0308194b875c4de3", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/cookies.ts": "ee17535cb19eab884732cefcdc46e63a2905041d5b5942e9ad6783c50a1f8624", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/mod.ts": "5b15823ec19cec1c985a77d525ee2e9e5c5aa367f5e24c96e305e485b6c633a9", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/protocols/basic.ts": "3c233ae1ccd0d3a8ff47a32c74682921abaf84e0de7c096f220f63b05756fc58", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/protocols/internal.ts": "7a9173406fbc1b885e08dd74a8dd34f168de2f1e9bedef4cdd88dad613e59166", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/protocols/jwt.ts": "e39249df7c2d088da07af1ccf5e97815addb46a994469efd4a335f6ae8618bc5", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/protocols/oauth2.ts": "7172cc6da5ecba71775bbc2d467d52d1f78505204e55452170f35004923b847b", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/protocols/protocol.ts": "158c55618be6165a9ee393ccd1a9da267b084ff04df7e627af1e4fc8fe636644", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/routes/mod.ts": "8fe85c16feb3da7086d3d6fd19a4579585b632893f3534c533c60aed84b9413a", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/routes/take.ts": "bc343c5d34870aeeaf9b0cc9473ba18fe7b324a23a630a57c9fd41eea4418a46", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/auth/routes/validate.ts": "56e52bb6d1660735683bdd398a86936f24ad8a00e402b7d88790867ad559e476", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/graphql_service.ts": "458e3cedcd22a44e166e531bcac4c65972916d81f3776c8161b2440ad212626f", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/info_service.ts": "a9a1f6ebdcbe64d55806597b879dd5714c32b8b861bed695a944f5e2f1213beb", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/middlewares.ts": "8af6277ce67c940564538f4def8e6567b5783b51f7c5f38c902736d620ffe405", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/playground_service.ts": "2cc8689899be7c31ad6c2e9c2c5adde0c6cc1f1442b27a55e8ead830e867dbe5", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/responses.ts": "5c45923c1374aab1ac8dd5b1a09ae69062ab34a448f8e92630678a236e38b2ba", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/services/rest_service.ts": "ae6ffdbddaccdbc7ed11dfb86511f2917332dcf5ae22ed814e1059e640ff7b08", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/sync/replicated_map.ts": "6b94fb884ce81d7e17572ae0abbeb91ceadb31f9356c4e9255982a00edcfe729", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/sync/typegraph.ts": "6dca5ca5c09289512252180e7db47f6cbb2a7881fb860e158ee711f4bf9ae991", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/system_typegraphs.ts": "51299d60c1bb75b3e74998eb77bdf1680ee9d4a2f29a267d3ca90b2867c577fb", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/transports/graphql/gq.ts": "78435e53ec1c5b7aec29364c051eb8f10802714050d24ee68a65e1e263495d7d", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/transports/graphql/graphql.ts": "9f4aa79276e05acc6020da2a18472a1cc54c0ecf42efcbf017d67a88b0b90af2", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/transports/graphql/request_parser.ts": "afbc95debcb1bbfa6fc2b88937d7abedbed1f4335bb2d17bf98c7293761cfdb0", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/transports/graphql/typegraph.ts": "d1ff14176f6ab1d6b3ba54cb2334e555ede11e769f832c4b1d6ac8ec1872185f", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/transports/graphql/utils.ts": "d09147add80f5e53a643ed3126ee8675a1655480728311de2def04ffe6262a4b", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/transports/rest/rest_schema_generator.ts": "c776e83c6a55e9bee3ec72c36c1d771b3ca711e4086b3728e4983ab866472624", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/artifacts/local.ts": "11482d663545af6110e4b75a46b21675c68f6c4df625d7867e0cdab9e267065a", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/artifacts/mod.ts": "5d207550b83b865d8df4cf023f8304935f410c81b3d18894aaefb570e56fbd93", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/artifacts/shared.ts": "7f6d99bcc6499446dcf019d1c3e7735ff5a7b590bfd8fbae89a94d06ac18d9f8", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/hooks.ts": "ea97c08285388300802676d03dbc06caadf060093736abce07ef8f99a60e9a04", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/memory_register.ts": "6eab24914a941f85c233037013dc13749d8b689c5f9ffb38600df4c7b00a94f0", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/mod.ts": "ce468fd7d0a32676f2867bf183c73e59da063f0a5ad3f0cde05d5f40e2bbf280", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/no_limiter.ts": "1e98610a737bd74668f80b7014c64669a59a801355340eaa14411e07f4a8a94e", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/rate_limiter.ts": "b5718ab9e718314f11f5d88d84795bd0e61575856470793f1fe83d499f4a9d40", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegate/register.ts": "d7a8732386ad019d4dcee0372b6cab93bfc55e0146729842db2aaecf1411b15d", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraph/mod.ts": "71503ba14d0ad1e77d320d0fa044b93cba76e43ea2800828e0833cc4f0e36401", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraph/type_node.ts": "76fcb35bfad244af1fcaa45798b29a7536f5a2a45e8c824ae36a0a8cb87aeab5", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraph/utils.ts": "04ab4bd79523a4a599275a288c8ecb37798cb1615c73e97f080a0bd79b1c2c44", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraph/versions.ts": "cdab4b07960f78c1f18511a8cc464a7e97c4c1fd15c6e8678c109483d3c26508", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraph/visitor.ts": "0fb0f89d92cb1654c1b010494a14c1aad88c7923102ea3e89866b232d3bcdf04", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraphs/introspection.json": "76e8796d99a71f93c6fd57e6af9708ef2d8f587f9ceca2ae9aec3f49d242e43e", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraphs/prisma_migration.json": "05bcf740259abcedb1bb2d8b34e6d62cf2ef124481e01379b93ddaf05e99b1c1", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/typegraphs/typegate.json": "99da5fb4052c82a35a65ac18f94cbce47d7e49afdf7678b8127e2f4677805cdb", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/utils.ts": "51b8167e4f1d992d68e99b70cb326cc1793593b196c1e17c01775f210652871b", + "https://raw.githubusercontent.com/metatypedev/metatype/67c1d0fa3f16ec6459ef28aa750db508a1758271/src/typegate/src/utils/hash.ts": "df6cf462c7a6a805b91dce9d3e7bbbd00ea3bfd8dcc973fb3e6c94e48e33d9b9", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/engine/bindings.ts": "f74df81c428c6ac60f254ad15667efdd08f6d2a4836635c9d8c8dd98269e9df0", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/config.ts": "fd9ba90adb5c2d1d2459a36822b12bafcfe9d96cd25e8af622259872174ea277", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/config/loader.ts": "e901da195b255644fbd24649fc998d2c2058a104cc124dc7736cf6a2ed2ee922", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/config/shared.ts": "bca558a1581acf2d564d25957c7a491f6a5fad2c9a9e22c784fd75ecf5a8873c", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/config/types.ts": "a5b10b956d6d1b0349e758692bf26dddd44eb60f926fbd702df0dda15ac2896e", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/crypto.ts": "9f982b57238af8200cb698afb7ee3b2b816b0cc189e7a7d6559bedb8edde1866", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/computation_engine.ts": "4b2e7fd9e21bf9c790f1b4025a745712ef69110dd899418ae9059f83d4c5e9bc", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/injection/dynamic.ts": "a9d8a317294f048571755e90fb6f574e816083c194e7e15153829e2aefb45d06", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/planner/args.ts": "a6b3e6613a7f85fc2db0d86d1f16cb0030b2ad0af9e4000aed1fd5cfd2565be1", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/planner/dependency_resolver.ts": "6f87025830e827cba0e7e74ecd3ff663a8298fbed778e70860efbe66d3b68f9b", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/planner/injection_utils.ts": "e249397a889e680ae52d52f924bf884ba6a1a33c1015e58c9f9e46016d618bfa", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/planner/mod.ts": "89edff499aaa0b56558dfa30f117a1f40d4f9bd9f7680fde953896586507d8d1", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/planner/parameter_transformer.ts": "2926e403cbe7688e442d430dc407b28c659f8689fe583d1741fc244bbcb04ddd", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/planner/policies.ts": "c224051baf0e2df80a586719fc9e7957933cdc76a72815bb7fec1c15f646710c", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/query_engine.ts": "089771e5249035aeae83db926b819405747b3df20fa58dec1f7818159e3aa036", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/stage_id.ts": "090aa004ee3cec27f310571c2ed838d1286346cb1c8b263a0509d2c6e53ae300", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/code_generator.ts": "41671624b36c862b5baa2d8f06b36070fb2d1d4ef97fb0dada3eff2899620d9e", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/common.ts": "2e9abb9eb039f06e336492fa6f5e9b933dcb58643ffc5de423c0b696da6ecc43", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/inline_validators/common.ts": "4861d3aa582275515c9b3741a15505e4431a1f14ad64d86258f22b7c5c9d42b7", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/inline_validators/constraints.ts": "073531c748833cfa99e003ef95183dd9d8543a160807b8046dde3317df923633", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/inline_validators/list.ts": "af81948b4a5847e11c0cf1782a6c608d3c060771b0ba0e7edce4478359333214", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/inline_validators/number.ts": "b685df3ac3a95f6b0e6d5e566ef0059fd3c4d69444268c21bc93aa738dda884d", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/inline_validators/object.ts": "1c56e54ea19052dd3375c7eada0059a5170e5ab5f2e6b0e0e0cf721ed3145ce6", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/inline_validators/string.ts": "580d0cd8280c957acd085390af17447209ad15e994ea58fd1e7151ef4e07a40b", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/input.ts": "2ab8f2737d76bbfe94265c69ebf4c4b80676cd3ce095144a523c1362936e5cc3", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/matching_variant.ts": "651c6d47d3f368a0e47ac475c9803e69265f3d58b08293e8ef8bda17ac00a589", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/engine/typecheck/result.ts": "962551a615b30796760a9c364d38791e4ba3a71195a1845dbfb1b15daa323ca4", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/errors.ts": "14fe23136ccdcfb6e52c9fd9dfb1d5fbee21869c26f459217117189685428802", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/libs/jsonpath.ts": "af90cb8918ff8f453f9482bdcf7d4078ff0cdc53523a1725b724d0b056644ff8", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/log.ts": "71b949f07461cb6f52a8f45e00065c889234d564c6d4fe3ff2a272a6dbb82e12", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/main.ts": "41dc22a0c6d2a516cc99b4858ab9781d2d149253f4d70e21006d8d251532610b", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/Runtime.ts": "4bd4825b6c42cd74e9a22cccb695f78a8f3fe81a278c2b1a56123770d7e87f99", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/deno.ts": "15badd909f25aa6daee80b04d22f3e5b32333f6b98e9f24acd953a1cbea151fb", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/deno/deno.ts": "68a4a5d6a0f3973fa936359dc99908a074071561ddf9d0da35eecf851815c61f", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/deno/deno_messenger.ts": "016b86392a3ec0348a3f62ac63372a7da1af9801cb92f625bdff0b2fce1acf96", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/deno/hooks/mod.ts": "6de18bf832c48096adb2658f29071365cc191e16d594318c4c3aea9624e6a62b", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/deno/shared_types.ts": "3b9773ecbdf2f2fed97588e0353d02b9e01001c52b2bbb24813e6735602cf5c0", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/deno/worker.ts": "b61f3e3fa181a8cfeae8a3df152171f74a1979428acdebc6d839624bad24fc56", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/graphql.ts": "d4772c1a6d51d7e69f05412db39f748b8452f99f0f3e8cd1d100e41b8cf90269", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/grpc.ts": "adc5dad80e1587cc6239f7a7d9ccb86a946f3c4190ae9bcfcafa177dd68cc437", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/http.ts": "09185d4bcc157b8c1c3f49686f8e1c94d2368b2bf510ccfdca36314256260604", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/kv.ts": "312833f6212102d330a4f2648f9e33b99fe917d12f03d397c8b86fa2a2e0191d", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/mod.ts": "73e682bfce50a595711602ba166bb28f8a003fdaa3e367a5e6aa8bd6d226b161", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "a6f602889968694014a71e1e1d2c0f200a933b4cac58b3ca08c8fd56840f83ca", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "2a1f6b3b0e7b0303e1e777dbced1dabaff313d1584a591c48ea2bf439b92571e", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma.ts": "7e6098169f749f15fb0a3c117e4d746ec78cbec75a3b2e0776da92699ef47433", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "7e4710d651695ac34a98da66b9334b2eb783a82a0d5cd3001add5c145757006a", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma/hooks/mod.ts": "3b7323fdbad1b2da89d405686fbe96912ea051b49fc59e35a64ae3c082d88b58", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "07be71a18464f41fbc78cb72b44d8ff8150cfbc4aa42ce3060018e4fc8df9f13", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma/migration.ts": "e9eb6e3c76e616a1f7348dcb00927e53b9802ebf7edaf04c0d07db6ed30aba87", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma/mod.ts": "3e1e42facac57463f227c6408a995716ac364df037a441267bf4ddc55aba1762", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma/prisma.ts": "595216d17e6b5382dbf0f00fc2a94043bf12d1a0aba78b488836e4c5a070d73b", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/prisma/types.ts": "7b2a668263dec4f68d7c6e0cd42e6708f1f70de77945891e4e7513bcb934abe8", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/python.ts": "f71dd91f1f6625243c331e863bdfb05d9881216f8337555961c7cc1a8fdb303d", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/random.ts": "e3ca4bf8a0554edb97b922df3b162bc995600ca323fc0bdc4c7881f3325b8436", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/s3.ts": "d4bff2d98429d0226e1021163bf2097de3ddfc852b64be860e7bf917ad7494a8", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/substantial.ts": "6d886bba87458fcd9e74f5dd96cb47a287c383688a6478cd906ab616188965f8", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/substantial/agent.ts": "2fca2ab86542e1307d5bea745a9a19f4147a6c5cbea4e889cdd05c175aa07307", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/substantial/filter_utils.ts": "4bea8f62d9d7476d4ea4bf7e4bb716b82fe00d27de5300168bfc308e61372fcf", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/substantial/types.ts": "66413dbb2234360db6eb8a78710ce9804290b2a19c1b34453b4850a135a33385", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts": "74c0b5b9cc9be1daafeb5623c9810182710634bbddd4b6c53bb3df43848f2763", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/temporal.ts": "5e0bd1009a40b467c381707d3cb553dff43729f131956f3721f96e037997d19a", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/typegate.ts": "494bebdc9309f5f9b42fd83b142be628416dee18c00e500bdbbf4cdf73072646", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/typegraph.ts": "baed8a36a738932a7fde3febf9fac5fb1fb417ee84c1458e7706877ba3e596df", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/utils/deno.ts": "3a19d81bb7c611007f9fd9527a14e991a1ce39ae47dfa836c26b11f4be2706e2", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/utils/graphql_forward_vars.ts": "466bb67f86b1c5af52f2f1a4eb02fff6f731f066e3bcd264c1c4152d0f055b5d", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/utils/graphql_inline_vars.ts": "c103dbe9967054132f9e1a347a3b9b6981b9bab59979ca5b7e38e8dd556959e7", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/utils/http.ts": "6ef74393421256e4f9945878bed7762af406a12866041f9286e06b2afdef4338", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/wasm_reflected.ts": "588aebf664d4179df3818d6521e3936d248b751637707be3a85ef24f5446531b", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/wasm_wire.ts": "99f5de736cf2492619333d2c465308716f42f8fd493c825514ba5e25be35c48a", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/runtimes/wit_wire/mod.ts": "9500cfe2b90d126463f499b447367d0dd88d2f6f0b1166b8e3c0205c149aaf6c", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/artifact_service.ts": "ed90cb99770289c3afb5ceaaab98f56be69d1259e6e6761fd6f1f29c6561f0ea", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/cookies.ts": "194c6c17e915692ba7fceda17109c1da8f426fde3e56d6dfd15a8d077d5bf789", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/mod.ts": "e6401d8b8a9a968f8feaefd618d55fbc7eaea9a16dafe0b70af50af313d86937", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/protocols/basic.ts": "99293b05820becf203822988020568e0cb8e304a477d4a85d887a6e570cb2ea6", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/protocols/internal.ts": "4b31e4780a18a281d27f69062efddf022799a1d4b3b852419f2a78df9f4c3332", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/protocols/jwt.ts": "5792f292d73730b823cd1da3133435dd23f6e1d8a88977c12298f017c5be957c", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/protocols/oauth2.ts": "d7d24eea260c318bdf48d1b31090dd8b4aa54e5320b9bc2140f7eb7f8e19a601", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/protocols/protocol.ts": "61ca77720004360879a6e3e890ef23eca5a97b85a2dd3d8a2f2fc4521c958be3", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/routes/mod.ts": "31d27a1a8edc99db7d5bbb68400821e73447f04b8106ff28f2a633f47ffd8221", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/routes/take.ts": "b6293899b75cc6c110a61fce7a0b49c2608779a01b0f735e5cfe8febe428edc6", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/auth/routes/validate.ts": "0d36f950262b608978aef8caef62900077fce352a0b33da37abd07a1482acef6", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/graphql_service.ts": "2a0bfe4e49b78412cccf2926ba9713871438cbf285df12b6e26979e9f3668dd1", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/info_service.ts": "0c5cb5a9926644b00d8129121655b6654a884f4ab3bb2a56a1b5e33c2fadafe3", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/middlewares.ts": "c996a25dffa58efc8f50e4a8f3f9df14d93b32b2bb6269c95ad0bec3cc05de94", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/playground_service.ts": "570cd407c5000bd93ddbd0a898ca5f50bb8d5f26d67684d1c592ab2c260ffce0", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/responses.ts": "b3e7f74d02e51a719968a417202c4a307b4c4dc73a73ed93ffbb76d73eef683c", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/services/rest_service.ts": "88c0a9b409beeb936ab3fc84a90ada122f38074975644036baa69dd2cf354290", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/sync/replicated_map.ts": "1191c444af253e9afd1b5d99bb203600b318bfa42efe1bfa87f1f5a58147f117", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/sync/typegraph.ts": "69fa06eae9f4676c4e8818fdb29056f4775a5d1ce04e8662a011cb777735e44b", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/system_typegraphs.ts": "a49296517ab9aeefb0a93ccbc2361969a78c8289b213115ddcba0216c359659e", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/transports/graphql/gq.ts": "7150dc876b8d2c423acf6571e4f82cb28b1d84472edbf7aec8f2db3d35099730", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/transports/graphql/graphql.ts": "db28dbff035dc4da27cbbc93596d31b9ae4c4647d8dd1ef8dd8466124dddf819", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/transports/graphql/request_parser.ts": "f808f194897a70be6f9b4125fad793b4ac6840558cae583f757fbe9c1db5cee5", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/transports/graphql/typegraph.ts": "3bca366a7d7756d02625132974fb0dc141b3b2d9d4d82679cd1a18a194e3ca86", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/transports/graphql/utils.ts": "52f41e4acc8c8e1f7438ff421562909fabfa84eee509e5fa7d3d446d631711c8", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/transports/rest/rest_schema_generator.ts": "6143277aa83e620bc1b89f5cc57952c2ed4559d4926b30afd8a7c213865cc142", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/artifacts/local.ts": "67899cac544f6c451420da2e66a7f761e51930ed524be67427409188e62097e0", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/artifacts/mod.ts": "19f8c0972b4d4832d438c6fc6dfcd485c4b3c9bb1a83d3e8a51900795cdcb5f4", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/artifacts/shared.ts": "e4881b2bdd38b1f06ffeaaac6936e963c3802c2113bb97beaf574cb4ab5ef5cc", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/hooks.ts": "0c0765b185412c564f3b23f69ade7fff9570e2acb95c548ac7b2f10b448918ab", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/memory_register.ts": "6dc0d05a471f4574b969e20ab04b21fb9aa99c8e30cbd0fe043bd8d984cee724", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/mod.ts": "0d60f19c9286f40ea28891ed235e989d9c6d41c3932d7481db52a54aaffc7ed4", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/no_limiter.ts": "820f766f78cb9546c916a6db2e1713cb9288ca17b2ab590f05e2f7748d1321af", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/rate_limiter.ts": "83b4d1197acb83065481489ef3cac1a6bf0fc9aa819fc2330c5dd177f4c79302", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegate/register.ts": "864d668ae3704984077d57c05a425cd5c74ba79bb6a42a54ef0112e1560fc543", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraph/mod.ts": "74cd1a7908222c865d6b07860630991f6369643d4b328575c5e758d72730cc67", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraph/type_node.ts": "2122369b68351e336bae60a18006b1329c95a0e82b4e25795ba3e419df493d15", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraph/types.ts": "b9bf342ffc0f26cbc7ba0bd05ef6ee037737e587340c6e117abd687b15607acb", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraph/utils.ts": "ce1a9ac71b86ccbae4334cef66e3424395349b6517bb0fdae31f3032607ac444", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraph/versions.ts": "89787a9cd05f5a630831c6b05ee17d868537aa95dbd0cdf5808030e3149c272d", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraph/visitor.ts": "d3df39cb77be23f6ea6e754db43d9b9b78dcf71fa8ed4a570c69e7102495af99", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraphs/introspection.json": "ba6920f3e9e0f37ac3cd51b1a9fa2dee59c54f95ab3729409cbb02bc842829f5", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraphs/prisma_migration.json": "9658354a08c5bfe52b2da6bb0f8860eb107f3a565dded12fd4ba93121771e0a1", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/typegraphs/typegate.json": "7205dcb9923d8354ab9a4cfb9f38a133c047ed4fd7c6436b2df0d66f2d423d37", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/types.ts": "c00d562e809aa2c773925f69467d42bf5b4146146d1a5e90d8704d0e1d56cfee", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/utils.ts": "37d7289fdfa897317947489c0e58ca4af919c582cec19394f3b49d377e1e3b76", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/utils/hash.ts": "1b0fc152d2b51c1acf542ba49ec383efea5236acb9d52526b7f6568fadb43dfb", + "https://raw.githubusercontent.com/metatypedev/metatype/6b68642b983cb94915038dec4926d6fde9b7e0c2/src/typegate/src/worker_utils.ts": "0b7e9252a0c6449299a4f604b9a5e6eb3f33ae842d3ac7f169627ccbfb285f1a" }, "workspace": { "members": { diff --git a/src/typegate/src/transports/graphql/typegraph.ts b/src/typegate/src/transports/graphql/typegraph.ts index 74c94eabe..bf23faa8c 100644 --- a/src/typegate/src/transports/graphql/typegraph.ts +++ b/src/typegate/src/transports/graphql/typegraph.ts @@ -3,6 +3,7 @@ import type { TypeGraphDS } from "../../typegraph/mod.ts"; import type { ObjectNode } from "../../typegraph/type_node.ts"; +import { Type } from "../../typegraph/type_node.ts"; import { PolicyIndices } from "../../typegraph/types.ts"; import { addNode } from "./utils.ts"; diff --git a/src/typegate/src/typegraphs/introspection.json b/src/typegate/src/typegraphs/introspection.json index 66947140e..d8ac20f87 100644 --- a/src/typegate/src/typegraphs/introspection.json +++ b/src/typegate/src/typegraphs/introspection.json @@ -442,7 +442,7 @@ }, "auths": [], "rate": null, - "version": "0.0.3", + "version": "0.0.4", "randomSeed": null, "artifacts": {} } diff --git a/src/typegate/src/typegraphs/prisma_migration.json b/src/typegate/src/typegraphs/prisma_migration.json index 1a4da15dd..96cc49650 100644 --- a/src/typegate/src/typegraphs/prisma_migration.json +++ b/src/typegate/src/typegraphs/prisma_migration.json @@ -365,7 +365,7 @@ "context_identifier": "user", "local_excess": 5 }, - "version": "0.0.3", + "version": "0.0.4", "randomSeed": null, "artifacts": {} } diff --git a/src/typegate/src/typegraphs/typegate.json b/src/typegate/src/typegraphs/typegate.json index 828df86a1..002230ccc 100644 --- a/src/typegate/src/typegraphs/typegate.json +++ b/src/typegate/src/typegraphs/typegate.json @@ -981,7 +981,7 @@ "context_identifier": "user", "local_excess": 5 }, - "version": "0.0.3", + "version": "0.0.4", "randomSeed": null, "artifacts": {} } diff --git a/tests/e2e/published/common.ts b/tests/e2e/published/common.ts new file mode 100644 index 000000000..762c1eb63 --- /dev/null +++ b/tests/e2e/published/common.ts @@ -0,0 +1,51 @@ +import { MetaTest } from "test-utils/test.ts"; +import { $ } from "@local/tools/deps.ts"; +import { downloadAndExtractCli } from "./utils.ts"; +import { newTempDir } from "test-utils/dir.ts"; + +type PreludeStepsOutput = { + publishedBin: string; + examplesDir: string; +}; + +export async function downloadSteps( + t: MetaTest, + version: string, +): Promise { + let publishedBin = ""; + await t.should( + `download published cli (fat version) v${version}`, + async () => { + publishedBin = await downloadAndExtractCli(version); + }, + ); + + const repoDir = await newTempDir(); + const examplesDir = $.path( + await newTempDir({ + dir: undefined, + }), + ); + + await t.should( + "download example typegraphs for the published version", + async () => { + const tag = `v${version}`; + // FIXME: cache across test runs + await $`git clone https://github.com/metatypedev/metatype.git --depth 1 --branch ${tag}` + .cwd(repoDir) + .stdout("piped") + .stderr("piped") + .printCommand(); + + await $.path(repoDir).join("metatype/examples").copy(examplesDir, { + overwrite: true, + }); + }, + ); + + return { + publishedBin, + examplesDir: examplesDir.toString(), + }; +} diff --git a/tests/e2e/published/sdk_test.ts b/tests/e2e/published/sdk_test.ts index 1aa3a889b..474d99ba1 100644 --- a/tests/e2e/published/sdk_test.ts +++ b/tests/e2e/published/sdk_test.ts @@ -3,175 +3,184 @@ import { Meta } from "test-utils/mod.ts"; import { $ } from "@local/tools/deps.ts"; -import { PUBLISHED_VERSION, PYTHON_VERSION } from "@local/tools/consts.ts"; +import { + LATEST_PRE_RELEASE_VERSION, + LATEST_RELEASE_VERSION, + PYTHON_VERSION, +} from "@local/tools/consts.ts"; import { encodeBase64 } from "@std/encoding/base64"; import { Lines } from "test-utils/process.ts"; import { newTempDir } from "test-utils/dir.ts"; import { downloadAndExtractCli } from "./utils.ts"; import { Config } from "./config.ts"; +import { downloadSteps } from "./common.ts"; const testConfig = new Config(12, "published-sdk-test"); -// const previousVersion = PUBLISHED_VERSION; -const previousVersion = "0.4.10"; - -Meta.test.only( - { - name: "published SDK tests", - async setup() { - await testConfig.clearSyncData(); - await testConfig.setupSync(); +const previousVersions = [LATEST_RELEASE_VERSION]; +if (LATEST_PRE_RELEASE_VERSION) { + previousVersions.push(LATEST_PRE_RELEASE_VERSION); +} + +for (const version of previousVersions) { + Meta.test( + { + name: `published SDK tests: v${version}`, + async setup() { + await testConfig.clearSyncData(); + await testConfig.setupSync(); + }, + async teardown() { + await testConfig.clearSyncData(); + }, + // only: version === LATEST_PRE_RELEASE_VERSION, + only: version === LATEST_RELEASE_VERSION, }, - async teardown() { - await testConfig.clearSyncData(); + async (t) => { + const { publishedBin, examplesDir } = await downloadSteps(t, version); + + const metaBinDir = $.path(publishedBin).parent()!.toString(); + + const tmpDir = $.path(t.tempDir); + const tgSecret = encodeBase64( + globalThis.crypto.getRandomValues(new Uint8Array(64)), + ); + + const typegateTempDir = await tmpDir.join(".metatype").ensureDir(); + + const port = String(t.port - 10); + + const proc = $`bash -c 'meta-old typegate -vvvv'` + .env({ + PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, + TG_SECRET: tgSecret, + TG_ADMIN_PASSWORD: "password", + TMP_DIR: typegateTempDir.toString(), + TG_PORT: `${port}`, + // TODO should not be necessary + VERSION: version, + DEBUG: "true", + ...(version.startsWith("0.4") ? { LOG_LEVEL: "DEBUG" } : {}), + ...testConfig.syncEnvs, + }) + .stdout("piped") + .noThrow() + .spawn(); + + const stdout = new Lines(proc.stdout()); + console.log("waiting on typegate to be ready"); + + const readyMessage = version.startsWith("0.5") + ? `typegate ready on :${port}` + : `typegate ready on ${port}`; + await stdout.readWhile((line) => { + console.error("typegate>", line); + return !line.includes(readyMessage); + }); + + const tgsDir = $.path( + examplesDir, + ).join("typegraphs"); + // t.addCleanup(() => $.removeIfExists(tgsDir)); + + await tgsDir.join("metatype.yml").writeText(` + typegates: + dev: + url: "http://localhost:${port}" + username: admin + password: password + secrets: + roadmap-func: + POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=roadmap_func2" + BASIC_andim: hunter2 + + typegraphs: + materializers: + prisma: + migrations_path: "migrations" + `); + + await t.should("work with JSR npm", async () => { + const npmJsrDir = await tgsDir.join("npm_jsr").ensureDir(); + await $`pnpm init`.cwd(npmJsrDir); + await $`pnpm --package=jsr dlx jsr add @typegraph/sdk@${version}` + .cwd( + npmJsrDir, + ); + await $.co([ + $.path("examples/typegraphs/func.ts").copy(npmJsrDir.join("tg.ts")), + $.path("examples/typegraphs/scripts").copyToDir(npmJsrDir), + $.path("examples/templates/node/tsconfig.json").copyToDir(npmJsrDir), + npmJsrDir + .join("package.json") + .readJson() + .then((pkg) => + npmJsrDir + .join("package.json") + .writeJson({ ...(pkg as object), type: "module" }) + ), + ]); + + const command = + `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + await $`bash -c ${command}` + .cwd(npmJsrDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + .env("MCLI_LOADER_CMD", "pnpm --package=tsx dlx tsx") + .env("RUST_LOG", "trace"); + }); + + await t.should("work with JSR deno", async () => { + const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); + await denoJsrDir.join("deno.json").writeJson({}); + await $`bash -c 'deno add @typegraph/sdk@${version}'`.cwd( + denoJsrDir, + ); + await $.co([ + $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), + $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), + ]); + + const command = + `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + await $`bash -c ${command}` + .cwd(denoJsrDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + // FIXME: rename to deno.jsonc on bump 0.4.9 + .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) + .env("RUST_LOG", "trace"); + }); + + await t.should("work with pypa", async () => { + const pypaDir = await tgsDir.join("pypa").ensureDir(); + await $ + .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${version}` + .cwd( + pypaDir, + ); + await $.co([ + pypaDir.join("README.md").ensureFile(), + $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` + .cwd( + pypaDir, + ), + $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), + $.path("examples/typegraphs/scripts").copyToDir(pypaDir), + ]); + + const command = `source .venv/bin/activate &&` + + ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; + await $`bash -c ${command}` + .cwd(pypaDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + .env("MCLI_LOADER_PY", `poetry run python`) + .env("RUST_LOG", "trace"); + }); + + proc.kill("SIGKILL"); + const status = await proc; + console.log({ status }); + await stdout.close(); }, - }, - async (t) => { - // const previousVersion = PUBLISHED_VERSION; - let publishedBin = ""; - await t.should("download published cli (fat version)", async () => { - publishedBin = await downloadAndExtractCli(previousVersion); - }); - - const metaBinDir = $.path(publishedBin).parent()!.toString(); - - const tmpDir = $.path(t.tempDir); - const tgSecret = encodeBase64( - globalThis.crypto.getRandomValues(new Uint8Array(64)), - ); - - const typegateTempDir = await tmpDir.join(".metatype").ensureDir(); - - const port = String(t.port - 10); - - const proc = $`bash -c 'meta-old typegate -vvvv'` - .env({ - PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, - TG_SECRET: tgSecret, - TG_ADMIN_PASSWORD: "password", - TMP_DIR: typegateTempDir.toString(), - TG_PORT: `${port}`, - // TODO should not be necessary - VERSION: previousVersion, - DEBUG: "true", - ...testConfig.syncEnvs, - }) - .stdout("piped") - .noThrow() - .spawn(); - - const stdout = new Lines(proc.stdout()); - console.log("waiting on typegate to be ready"); - - await stdout.readWhile((line) => { - console.error("typegate>", line); - return !line.includes(`typegate ready on ${port}`); - }); - - const tgsDir = $.path( - await newTempDir({ - dir: undefined, - }), - ); - // t.addCleanup(() => $.removeIfExists(tgsDir)); - - await tgsDir.join("metatype.yml").writeText(` -typegates: - dev: - url: "http://localhost:${port}" - username: admin - password: password - secrets: - roadmap-func: - POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=roadmap_func2" - BASIC_andim: hunter2 - -typegraphs: - materializers: - prisma: - migrations_path: "migrations" -`); - - // await t.should("work with JSR npm", async () => { - // const npmJsrDir = await tgsDir.join("npm_jsr").ensureDir(); - // await $`pnpm init`.cwd(npmJsrDir); - // await $`pnpm --package=jsr dlx jsr add @typegraph/sdk@${previousVersion}` - // .cwd( - // npmJsrDir, - // ); - // await $.co([ - // $.path("examples/typegraphs/func.ts").copy(npmJsrDir.join("tg.ts")), - // $.path("examples/typegraphs/scripts").copyToDir(npmJsrDir), - // $.path("examples/templates/node/tsconfig.json").copyToDir(npmJsrDir), - // npmJsrDir - // .join("package.json") - // .readJson() - // .then((pkg) => - // npmJsrDir - // .join("package.json") - // .writeJson({ ...(pkg as object), type: "module" }) - // ), - // ]); - // - // const command = - // `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; - // await $`bash -c ${command}` - // .cwd(npmJsrDir) - // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - // .env("MCLI_LOADER_CMD", "pnpm --package=tsx dlx tsx") - // .env("RUST_LOG", "trace"); - // }); - - // await t.should("work with JSR deno", async () => { - // const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); - // await denoJsrDir.join("deno.json").writeJson({}); - // await $`bash -c 'deno add @typegraph/sdk@${previousVersion}'`.cwd( - // denoJsrDir, - // ); - // await $.co([ - // $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), - // $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), - // ]); - // - // const command = - // `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; - // await $`bash -c ${command}` - // .cwd(denoJsrDir) - // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - // // FIXME: rename to deno.jsonc on bump 0.4.9 - // .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) - // .env("RUST_LOG", "trace"); - // }); - // - // await t.should("work with pypa", async () => { - // const pypaDir = await tgsDir.join("pypa").ensureDir(); - // await $ - // .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${previousVersion}` - // .cwd( - // pypaDir, - // ); - // await $.co([ - // pypaDir.join("README.md").ensureFile(), - // $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` - // .cwd( - // pypaDir, - // ), - // $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), - // $.path("examples/typegraphs/scripts").copyToDir(pypaDir), - // ]); - // - // const command = `source .venv/bin/activate &&` + - // ` ${metaBinDir}/meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; - // await $`bash -c ${command}` - // .cwd(pypaDir) - // .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - // .env("MCLI_LOADER_PY", `poetry run python`) - // .env("RUST_LOG", "trace"); - // }); - - proc.kill("SIGKILL"); - const status = await proc; - console.log({ status }); - await stdout.close(); - }, -); + ); +}