diff --git a/.ghjk/deno.lock b/.ghjk/deno.lock index b9be4c0da..7ec8db2ca 100644 --- a/.ghjk/deno.lock +++ b/.ghjk/deno.lock @@ -608,6 +608,7 @@ "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/deps/common.ts": "f775710b66a9099b98651cd3831906466e9b83ef98f2e5c080fd59ee801c28d4", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/deps/ports.ts": "3c60d1f7ab626ffdd81b37f4e83a780910936480da8fe24f4ccceaefa207d339", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/files/deno/mod.ts": "1b8204c3df18b908408b2148b48af788e669d0debbeb8ba119418ab1ddf1ab8f", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/files/deno/worker.ts": "8ded400d70a0bd40e281ceb1ffcdc82578443caf9c481b9eee77166472784282", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/files/mod.ts": "44a8874c6ee9f086b7a521d4956c1802be201d01f9e91329d52a4b96738f7a34", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/host/mod.ts": "af5a9704c3a5b410b322afe0bc8caaaac5b28e1e1591d82b0c5fb53f92cbc97f", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/host/types.ts": "f450d9b9c0eced2650262d02455aa6f794de0edd6b052aade256882148e5697f", diff --git a/Cargo.lock b/Cargo.lock index ef5bc0f50..858622966 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1591,7 +1591,7 @@ dependencies = [ [[package]] name = "common" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "anyhow", "async-trait", @@ -6965,7 +6965,7 @@ dependencies = [ [[package]] name = "meta-cli" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "actix", "assert_cmd", @@ -7032,7 +7032,7 @@ dependencies = [ [[package]] name = "metagen" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "color-eyre", "common", @@ -7055,7 +7055,7 @@ dependencies = [ [[package]] name = "metagen-client" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "derive_more 1.0.0", "futures", @@ -7406,7 +7406,7 @@ dependencies = [ [[package]] name = "mt_deno" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "anyhow", "deno", @@ -10297,7 +10297,7 @@ dependencies = [ [[package]] name = "sample_client" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "metagen-client", "serde", @@ -10307,7 +10307,7 @@ dependencies = [ [[package]] name = "sample_client_upload" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "metagen-client", "serde", @@ -11459,7 +11459,7 @@ dependencies = [ [[package]] name = "substantial" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "anyhow", "chrono", @@ -12950,7 +12950,7 @@ dependencies = [ [[package]] name = "typegate" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "colored", "env_logger 0.11.0", @@ -12963,7 +12963,7 @@ dependencies = [ [[package]] name = "typegate_engine" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "anyhow", "base64 0.22.1", @@ -13009,7 +13009,7 @@ dependencies = [ [[package]] name = "typegraph_core" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "anyhow", "color-eyre", @@ -14828,7 +14828,7 @@ checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" [[package]] name = "xtask" -version = "0.5.0" +version = "0.5.1-rc.0" dependencies = [ "anyhow", "clap", diff --git a/Cargo.toml b/Cargo.toml index 249175d58..35e37d7f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ exclude = [ ] [workspace.package] -version = "0.5.0" +version = "0.5.1-rc.0" edition = "2021" [workspace.dependencies] diff --git a/deno.lock b/deno.lock index 67cd06ca3..c0ed18bd7 100644 --- a/deno.lock +++ b/deno.lock @@ -36,11 +36,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.8", "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.9", + "jsr:@std/url@^0.225.0": "jsr:@std/url@0.225.1", "jsr:@std/uuid@^1.0.1": "jsr:@std/uuid@1.0.4", "jsr:@std/yaml@^1.0.4": "jsr:@std/yaml@1.0.5", "npm:@noble/hashes@1.4.0": "npm:@noble/hashes@1.4.0", @@ -53,7 +56,9 @@ "npm:graphql@16.8.1": "npm:graphql@16.8.1", "npm:lodash@4.17.21": "npm:lodash@4.17.21", "npm:marked": "npm:marked@15.0.6", + "npm:mathjs@11.11.1": "npm:mathjs@11.11.1", "npm:multiformats@13.1.0": "npm:multiformats@13.1.0", + "npm:pg@8.12.0": "npm:pg@8.12.0", "npm:validator@13.12.0": "npm:validator@13.12.0", "npm:yaml": "npm:yaml@2.7.0", "npm:zod-validation-error@3.3.0": "npm:zod-validation-error@3.3.0_zod@3.23.8", @@ -192,6 +197,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.4": { "integrity": "f4233149cc8b4753cc3763fd83a7c4101699491f55c7be78dc7b30281946d7a0", "dependencies": [ @@ -204,6 +215,12 @@ } }, "npm": { + "@babel/runtime@7.26.0": { + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": { + "regenerator-runtime": "regenerator-runtime@0.14.1" + } + }, "@noble/hashes@1.4.0": { "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dependencies": {} @@ -287,6 +304,10 @@ "integrity": "sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA==", "dependencies": {} }, + "complex.js@2.4.2": { + "integrity": "sha512-qtx7HRhPGSCBtGiST4/WGHuW+zeaND/6Ld+db6PbrulIB1i2Ev/2UPiqcmpQNPSyfBKraC0EOvOKCB5dGZKt3g==", + "dependencies": {} + }, "cookie@0.5.0": { "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dependencies": {} @@ -297,6 +318,14 @@ "ms": "ms@2.1.3" } }, + "decimal.js@10.4.3": { + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dependencies": {} + }, + "escape-latex@1.2.0": { + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", + "dependencies": {} + }, "fast-deep-equal@3.1.3": { "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dependencies": {} @@ -305,6 +334,10 @@ "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", "dependencies": {} }, + "fraction.js@4.3.4": { + "integrity": "sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==", + "dependencies": {} + }, "graphql@16.8.1": { "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dependencies": {} @@ -316,6 +349,10 @@ "debug": "debug@4.4.0" } }, + "javascript-natural-sort@0.7.1": { + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dependencies": {} + }, "json-schema-traverse@1.0.0": { "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dependencies": {} @@ -332,6 +369,20 @@ "integrity": "sha512-Y07CUOE+HQXbVDCGl3LXggqJDbXDP2pArc2C1N1RRMN0ONiShoSsIInMd5Gsxupe7fKLpgimTV+HOJ9r7bA+pg==", "dependencies": {} }, + "mathjs@11.11.1": { + "integrity": "sha512-uWrwMrhU31TCqHKmm1yFz0C352njGUVr/I1UnpMOxI/VBTTbCktx/mREUXx5Vyg11xrFdg/F3wnMM7Ql/csVsQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.26.0", + "complex.js": "complex.js@2.4.2", + "decimal.js": "decimal.js@10.4.3", + "escape-latex": "escape-latex@1.2.0", + "fraction.js": "fraction.js@4.3.4", + "javascript-natural-sort": "javascript-natural-sort@0.7.1", + "seedrandom": "seedrandom@3.0.5", + "tiny-emitter": "tiny-emitter@2.1.0", + "typed-function": "typed-function@4.2.1" + } + }, "ms@2.1.3": { "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dependencies": {} @@ -340,18 +391,105 @@ "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", "dependencies": {} }, + "pg-cloudflare@1.1.1": { + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "dependencies": {} + }, + "pg-connection-string@2.7.0": { + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", + "dependencies": {} + }, + "pg-int8@1.0.1": { + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dependencies": {} + }, + "pg-pool@3.7.0_pg@8.12.0": { + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", + "dependencies": { + "pg": "pg@8.12.0" + } + }, + "pg-protocol@1.7.0": { + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", + "dependencies": {} + }, + "pg-types@2.2.0": { + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "pg-int8@1.0.1", + "postgres-array": "postgres-array@2.0.0", + "postgres-bytea": "postgres-bytea@1.0.0", + "postgres-date": "postgres-date@1.0.7", + "postgres-interval": "postgres-interval@1.2.0" + } + }, + "pg@8.12.0": { + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "dependencies": { + "pg-cloudflare": "pg-cloudflare@1.1.1", + "pg-connection-string": "pg-connection-string@2.7.0", + "pg-pool": "pg-pool@3.7.0_pg@8.12.0", + "pg-protocol": "pg-protocol@1.7.0", + "pg-types": "pg-types@2.2.0", + "pgpass": "pgpass@1.0.5" + } + }, + "pgpass@1.0.5": { + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "split2@4.2.0" + } + }, + "postgres-array@2.0.0": { + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dependencies": {} + }, + "postgres-bytea@1.0.0": { + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "dependencies": {} + }, + "postgres-date@1.0.7": { + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dependencies": {} + }, + "postgres-interval@1.2.0": { + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "xtend@4.0.2" + } + }, "punycode@2.3.1": { "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dependencies": {} }, + "regenerator-runtime@0.14.1": { + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dependencies": {} + }, "require-from-string@2.0.2": { "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dependencies": {} }, + "seedrandom@3.0.5": { + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "dependencies": {} + }, + "split2@4.2.0": { + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dependencies": {} + }, + "tiny-emitter@2.1.0": { + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "dependencies": {} + }, "tslib@2.8.1": { "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dependencies": {} }, + "typed-function@4.2.1": { + "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==", + "dependencies": {} + }, "uri-js@4.4.1": { "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { @@ -362,6 +500,10 @@ "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "dependencies": {} }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dependencies": {} + }, "yaml@2.7.0": { "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dependencies": {} @@ -379,6 +521,7 @@ } }, "redirects": { + "https://cdn.pika.dev/big.js/^5.2.2": "https://cdn.skypack.dev/big.js@^5.2.2", "https://deno.land/x/marked/mod.ts": "https://deno.land/x/marked@1.0.2/mod.ts", "https://esm.sh/@types/core-util-is@~1.0.1/index.d.ts": "https://esm.sh/@types/core-util-is@1.0.1/index.d.ts", "https://esm.sh/@types/immediate@~3.2.2/index.d.ts": "https://esm.sh/@types/immediate@3.2.2/index.d.ts", @@ -407,6 +550,8 @@ "https://github.com/levibostian/deno-udd/raw/ignore-prerelease/mod.ts": "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/mod.ts" }, "remote": { + "https://cdn.skypack.dev/-/big.js@v5.2.2-sUR8fKsGHRxsJyqyvOSP/dist=es2019,mode=imports/optimized/bigjs.js": "b6d8e6af0c1f7bdc7e8cd0890819ecee2dcbb0776ec4089eae281de8ebd7b2bd", + "https://cdn.skypack.dev/big.js@^5.2.2": "f74e8935c06af6664d64a5534d1d6db1ab66649df8164696117ab5a1cd10714e", "https://deno.land/std@0.116.0/_util/assert.ts": "2f868145a042a11d5ad0a3c748dcf580add8a0dbc0e876eaa0026303a5488f58", "https://deno.land/std@0.116.0/_util/os.ts": "dfb186cc4e968c770ab6cc3288bd65f4871be03b93beecae57d657232ecffcac", "https://deno.land/std@0.116.0/fs/walk.ts": "31464d75099aa3fc7764212576a8772dfabb2692783e6eabb910f874a26eac54", @@ -511,6 +656,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", @@ -930,6 +1078,32 @@ "https://deno.land/x/jszip@0.11.0/types.ts": "1528d1279fbb64dd118c371331c641a3a5eff2b594336fb38a7659cf4c53b2d1", "https://deno.land/x/levenshtein@v1.0.1/mod.ts": "6b632d4a9bb11ba6d5d02a770c7fc9b0a4125f30bd9c668632ff85e7f05ff4f6", "https://deno.land/x/marked@1.0.2/mod.ts": "57e4fd38be13ae9efd001704eea481570fce83fe502f4fb64aba140fd7fd75cb", + "https://deno.land/x/math@v1.1.0/abs.ts": "d64fe603ae4bb57037f06a1a5004285b99ed016dab6bfcded07c8155efce24b7", + "https://deno.land/x/math@v1.1.0/big/mod.ts": "ba561f56a24ecc9f03542693ed0c81166ed0c921f8017d220ec70c963e935509", + "https://deno.land/x/math@v1.1.0/div.ts": "5dda45b8bb5c1f778f2cfb28cbee648c5c7aa818f915acce336651fd13994f07", + "https://deno.land/x/math@v1.1.0/eq.ts": "145727b71b5bdd993c5d44fd9c9089419dac508527ef3812c590aabcd943236c", + "https://deno.land/x/math@v1.1.0/gt.ts": "6e493f3cc2ecd9be244bb67dde28b1d5ec4d4218747fc9efd6f551a52093aaf7", + "https://deno.land/x/math@v1.1.0/gte.ts": "4eddc58c2b79315974c328d92b512e133796d785e1f570f9e8d232e32d620e66", + "https://deno.land/x/math@v1.1.0/lt.ts": "999e4d118c9a5e8e653bd34a32ef532634a68e0dd4ba6a200ad35cc7fd9ceb31", + "https://deno.land/x/math@v1.1.0/lte.ts": "637c12db7307d33024054d9671f4f932a42dbaad4c60559c47be17c94f39eb1e", + "https://deno.land/x/math@v1.1.0/matrix/eye.ts": "b7b060fc60a6f4ae4e3caa82e5a094cd622bd8519f67ad81e305b197a9d19d1c", + "https://deno.land/x/math@v1.1.0/matrix/identity.ts": "00246e8133f2fac4a1481af7390907cc4cf3e8415a00d29a1e0beb47bdd81074", + "https://deno.land/x/math@v1.1.0/matrix/matrix.ts": "2b80cd4fb8aa0ab9eca31cf6eb1037a2885f37ae7f84e1b7f050fa831089e937", + "https://deno.land/x/math@v1.1.0/matrix/mod.ts": "123212ccd86007864c3400ca3deaa998c7e9453b77538094d06edc1add50f199", + "https://deno.land/x/math@v1.1.0/max.ts": "bf646a3553e8800de240fad977eabbef365c388d33f79ef6fb5f015d8d7ff104", + "https://deno.land/x/math@v1.1.0/min.ts": "9a617f3b2c76045f9169324787399cb709eba81fae8dbd4ff540336ea82eb470", + "https://deno.land/x/math@v1.1.0/minus.ts": "e64bfe637c5d5c790f40dd6681b206dc9996303daacb6cd1533e7dc1969acda6", + "https://deno.land/x/math@v1.1.0/mod.ts": "85f6d29ba8faaae2fb24c4ac3f5772474f1452ee27068714521a7c9aabfd1ee6", + "https://deno.land/x/math@v1.1.0/modulo.ts": "c83ebdc4f4c9ddabf64ade595802502f2333220b1f59010457f4064e4bb94e6c", + "https://deno.land/x/math@v1.1.0/plus.ts": "8d500d86c8f27acc9a754f636c530abe17bdb8f240aea2ece4b29e86ca121f40", + "https://deno.land/x/math@v1.1.0/pow.ts": "47120d27e42fce01572340e724de26039beef6daae25133029af6df6fa7dec4c", + "https://deno.land/x/math@v1.1.0/round.ts": "1b54a5d440f9a0d44d4ff8ba000f59b4895c37a1b2c2aaf5ec59a5fe8081e308", + "https://deno.land/x/math@v1.1.0/sqrt.ts": "50d94b4d1d9077f887eec904d73cf5439c1ef4b724d1949414ba5ec7fb9343b3", + "https://deno.land/x/math@v1.1.0/sum.ts": "6a0fddf3b50a965c79d96edc7fe2e146d4a95915fce90928fb4068abe9d8f059", + "https://deno.land/x/math@v1.1.0/times.ts": "7359e88b8456fc121bdb800543712d637e0ca260777aa1bb0d43724fe576222e", + "https://deno.land/x/math@v1.1.0/to_exponential.ts": "9038215c1cfd430acb835ca5e9c967f1a9da8d0658f7eeab8852662b201596d4", + "https://deno.land/x/math@v1.1.0/to_fixed.ts": "3702a47b14950a9d37f13147e1340b5a3f5f07183d480af59fcdf9d10bb6084e", + "https://deno.land/x/math@v1.1.0/to_precision.ts": "b7fb70b79649c9fd48f3747d285a5086e457487986c0f395a8275302e13a9b5e", "https://deno.land/x/monads@v0.5.10/either/either.ts": "89f539c7d50bd0ee8d9b902f37ef16687c19b62cc9dd23454029c97fbfc15cc6", "https://deno.land/x/monads@v0.5.10/index.ts": "f0e90b8c1dd767efca137d682ac1a19b2dbae4d1990b8a79a40b4e054c69b3d6", "https://deno.land/x/monads@v0.5.10/mod.ts": "f1b16a34d47e58fdf9f1f54c49d2fe6df67b3d2e077e21638f25fbe080eee6cf", @@ -977,6 +1151,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", @@ -990,8 +1165,10 @@ "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.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-formats@3.0.1": "6f020dcf471a8d78d2d8c14fda5c2504c900834b0882db49ec954ba52f66e323", "https://esm.sh/ajv-formats@3.0.1/denonext/ajv-formats.mjs": "bee9a515ff4223dc79efe320f90c7b060f24281c704b820e286c71a2135aeab9", @@ -1034,6 +1211,123 @@ "https://esm.sh/uri-js@4.4.1?target=denonext": "712c0abb88b934bb78fe2919ee64eb73cd17a09867993f879cfe422c15b4172a", "https://esm.sh/util-deprecate@1.0.2/denonext/util-deprecate.mjs": "083639894972cb68837eef26346c43bdd01357977149e0a4493f76192a4008b8", "https://esm.sh/util-deprecate@1.0.2?target=denonext": "859f4df8ba771a4c33143185d3db6a7edb824fab1ed4f9a4b96ac0e6bc3ef1a4", + "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", @@ -1199,6 +1493,231 @@ "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/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/engine/bindings.ts": "f74df81c428c6ac60f254ad15667efdd08f6d2a4836635c9d8c8dd98269e9df0", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/config.ts": "93c667b1af22b82020d3c549a39a7804e03d9fe004f412e43ef1e96c9bd96edd", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/config/loader.ts": "e901da195b255644fbd24649fc998d2c2058a104cc124dc7736cf6a2ed2ee922", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/config/shared.ts": "bca558a1581acf2d564d25957c7a491f6a5fad2c9a9e22c784fd75ecf5a8873c", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/config/types.ts": "e042509b35286548f2c0cd59b8a95b8100cb7f22ef7d518473b8cd2640715ce2", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/crypto.ts": "9f982b57238af8200cb698afb7ee3b2b816b0cc189e7a7d6559bedb8edde1866", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/computation_engine.ts": "4b2e7fd9e21bf9c790f1b4025a745712ef69110dd899418ae9059f83d4c5e9bc", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/injection/dynamic.ts": "a9d8a317294f048571755e90fb6f574e816083c194e7e15153829e2aefb45d06", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/planner/args.ts": "a6b3e6613a7f85fc2db0d86d1f16cb0030b2ad0af9e4000aed1fd5cfd2565be1", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/planner/dependency_resolver.ts": "6f87025830e827cba0e7e74ecd3ff663a8298fbed778e70860efbe66d3b68f9b", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/planner/injection_utils.ts": "e249397a889e680ae52d52f924bf884ba6a1a33c1015e58c9f9e46016d618bfa", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/planner/mod.ts": "e42cf3aa78122319aef7cc515fcb1d2c604be8b16e182a3cd2452921682a1821", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/planner/parameter_transformer.ts": "2926e403cbe7688e442d430dc407b28c659f8689fe583d1741fc244bbcb04ddd", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/planner/policies.ts": "c224051baf0e2df80a586719fc9e7957933cdc76a72815bb7fec1c15f646710c", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/query_engine.ts": "089771e5249035aeae83db926b819405747b3df20fa58dec1f7818159e3aa036", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/stage_id.ts": "090aa004ee3cec27f310571c2ed838d1286346cb1c8b263a0509d2c6e53ae300", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/code_generator.ts": "41671624b36c862b5baa2d8f06b36070fb2d1d4ef97fb0dada3eff2899620d9e", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/common.ts": "2e9abb9eb039f06e336492fa6f5e9b933dcb58643ffc5de423c0b696da6ecc43", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/inline_validators/common.ts": "4861d3aa582275515c9b3741a15505e4431a1f14ad64d86258f22b7c5c9d42b7", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/inline_validators/constraints.ts": "073531c748833cfa99e003ef95183dd9d8543a160807b8046dde3317df923633", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/inline_validators/list.ts": "af81948b4a5847e11c0cf1782a6c608d3c060771b0ba0e7edce4478359333214", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/inline_validators/number.ts": "b685df3ac3a95f6b0e6d5e566ef0059fd3c4d69444268c21bc93aa738dda884d", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/inline_validators/object.ts": "1c56e54ea19052dd3375c7eada0059a5170e5ab5f2e6b0e0e0cf721ed3145ce6", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/inline_validators/string.ts": "580d0cd8280c957acd085390af17447209ad15e994ea58fd1e7151ef4e07a40b", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/input.ts": "2ab8f2737d76bbfe94265c69ebf4c4b80676cd3ce095144a523c1362936e5cc3", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/matching_variant.ts": "651c6d47d3f368a0e47ac475c9803e69265f3d58b08293e8ef8bda17ac00a589", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/engine/typecheck/result.ts": "962551a615b30796760a9c364d38791e4ba3a71195a1845dbfb1b15daa323ca4", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/errors.ts": "14fe23136ccdcfb6e52c9fd9dfb1d5fbee21869c26f459217117189685428802", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/libs/jsonpath.ts": "af90cb8918ff8f453f9482bdcf7d4078ff0cdc53523a1725b724d0b056644ff8", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/log.ts": "71b949f07461cb6f52a8f45e00065c889234d564c6d4fe3ff2a272a6dbb82e12", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/main.ts": "f53d1148d67d35cc5536b9f1cb5e122d30030287be459bf237c11675ce629a75", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/Runtime.ts": "4bd4825b6c42cd74e9a22cccb695f78a8f3fe81a278c2b1a56123770d7e87f99", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/deno.ts": "15badd909f25aa6daee80b04d22f3e5b32333f6b98e9f24acd953a1cbea151fb", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/deno/deno.ts": "9a22d1d413c0f6e239d95b47e622591e7166e823514a38d45217c0faebbd4ca8", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/deno/hooks/mod.ts": "6de18bf832c48096adb2658f29071365cc191e16d594318c4c3aea9624e6a62b", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/deno/hooks/worker.ts": "1d59bbb3b89398cd88212dd863453773ad1013b07d93766f12942931e85f32b0", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/deno/shared_types.ts": "3b9773ecbdf2f2fed97588e0353d02b9e01001c52b2bbb24813e6735602cf5c0", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/deno/types.ts": "a13c6cbe24043bcfea28c4103ad8bcf4041800fd11ad496120863f537c641788", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/deno/worker_manager.ts": "bb518e2e78688d4032cf5e7cca9ef6d7156f3e161c8c9d7c3c54f2aff9a25a13", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/graphql.ts": "d4772c1a6d51d7e69f05412db39f748b8452f99f0f3e8cd1d100e41b8cf90269", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/grpc.ts": "adc5dad80e1587cc6239f7a7d9ccb86a946f3c4190ae9bcfcafa177dd68cc437", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/http.ts": "09185d4bcc157b8c1c3f49686f8e1c94d2368b2bf510ccfdca36314256260604", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/kv.ts": "312833f6212102d330a4f2648f9e33b99fe917d12f03d397c8b86fa2a2e0191d", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/mod.ts": "73e682bfce50a595711602ba166bb28f8a003fdaa3e367a5e6aa8bd6d226b161", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/patterns/worker_manager/deno.ts": "295c9c01c6e28e0686ea0424c911c125325f27f8610dde63ff7530ecc9b1b4cd", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/patterns/worker_manager/mod.ts": "53fd99d64d5481fa82ae8ddabf85183b63204740b907ac9f245837c6f18e9ff0", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/patterns/worker_manager/types.ts": "38b4db70403804ac2fab2fbdea49daeb0a861aec10c75059e15cab5fa69ff070", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma.ts": "7e6098169f749f15fb0a3c117e4d746ec78cbec75a3b2e0776da92699ef47433", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "7e4710d651695ac34a98da66b9334b2eb783a82a0d5cd3001add5c145757006a", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma/hooks/mod.ts": "3b7323fdbad1b2da89d405686fbe96912ea051b49fc59e35a64ae3c082d88b58", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "07be71a18464f41fbc78cb72b44d8ff8150cfbc4aa42ce3060018e4fc8df9f13", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma/migration.ts": "e9eb6e3c76e616a1f7348dcb00927e53b9802ebf7edaf04c0d07db6ed30aba87", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma/mod.ts": "3e1e42facac57463f227c6408a995716ac364df037a441267bf4ddc55aba1762", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma/prisma.ts": "595216d17e6b5382dbf0f00fc2a94043bf12d1a0aba78b488836e4c5a070d73b", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/prisma/types.ts": "7b2a668263dec4f68d7c6e0cd42e6708f1f70de77945891e4e7513bcb934abe8", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/python.ts": "f71dd91f1f6625243c331e863bdfb05d9881216f8337555961c7cc1a8fdb303d", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/python/hooks/mod.ts": "909fde252dcd4210aee25f193ff3adda6f916564c7b67c6fe0f9d4442cdfb623", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/random.ts": "e3ca4bf8a0554edb97b922df3b162bc995600ca323fc0bdc4c7881f3325b8436", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/s3.ts": "d4bff2d98429d0226e1021163bf2097de3ddfc852b64be860e7bf917ad7494a8", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/substantial.ts": "0f6e4c2e12673a70f635c767dfb7b1810d3531b967850d9d9859e9c06f7f7f22", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/substantial/agent.ts": "389a4e049486e3c039ff2a91169daafd1dc3a2d17fbef35845bfd038940c8636", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/substantial/filter_utils.ts": "4bea8f62d9d7476d4ea4bf7e4bb716b82fe00d27de5300168bfc308e61372fcf", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/substantial/types.ts": "0a4665e5b2de01cf7be0c8a2d7084d4bdb55da17d93026982491543c8a5a6760", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts": "e9144de65a7aefb0d467c950ceeacd61fa5db04fa6502b359505f30815c57c1a", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/temporal.ts": "5e0bd1009a40b467c381707d3cb553dff43729f131956f3721f96e037997d19a", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/typegate.ts": "603ab33f15f938ef961503ad05812ca32f9215f397619c6e4124dd94a3ae8cc5", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/typegraph.ts": "baed8a36a738932a7fde3febf9fac5fb1fb417ee84c1458e7706877ba3e596df", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/utils/deno.ts": "3a19d81bb7c611007f9fd9527a14e991a1ce39ae47dfa836c26b11f4be2706e2", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/utils/graphql_forward_vars.ts": "466bb67f86b1c5af52f2f1a4eb02fff6f731f066e3bcd264c1c4152d0f055b5d", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/utils/graphql_inline_vars.ts": "c103dbe9967054132f9e1a347a3b9b6981b9bab59979ca5b7e38e8dd556959e7", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/utils/http.ts": "6ef74393421256e4f9945878bed7762af406a12866041f9286e06b2afdef4338", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/wasm_reflected.ts": "588aebf664d4179df3818d6521e3936d248b751637707be3a85ef24f5446531b", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/wasm_wire.ts": "99f5de736cf2492619333d2c465308716f42f8fd493c825514ba5e25be35c48a", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/runtimes/wit_wire/mod.ts": "f58dbe3781f235bc3fd94abf223ee2463a8d59e6bcac2690ea42657476107513", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/artifact_service.ts": "ed90cb99770289c3afb5ceaaab98f56be69d1259e6e6761fd6f1f29c6561f0ea", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/cookies.ts": "194c6c17e915692ba7fceda17109c1da8f426fde3e56d6dfd15a8d077d5bf789", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/mod.ts": "e6401d8b8a9a968f8feaefd618d55fbc7eaea9a16dafe0b70af50af313d86937", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/protocols/basic.ts": "99293b05820becf203822988020568e0cb8e304a477d4a85d887a6e570cb2ea6", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/protocols/internal.ts": "4b31e4780a18a281d27f69062efddf022799a1d4b3b852419f2a78df9f4c3332", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/protocols/jwt.ts": "5792f292d73730b823cd1da3133435dd23f6e1d8a88977c12298f017c5be957c", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/protocols/oauth2.ts": "d7d24eea260c318bdf48d1b31090dd8b4aa54e5320b9bc2140f7eb7f8e19a601", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/protocols/protocol.ts": "61ca77720004360879a6e3e890ef23eca5a97b85a2dd3d8a2f2fc4521c958be3", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/routes/mod.ts": "31d27a1a8edc99db7d5bbb68400821e73447f04b8106ff28f2a633f47ffd8221", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/routes/take.ts": "b6293899b75cc6c110a61fce7a0b49c2608779a01b0f735e5cfe8febe428edc6", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/auth/routes/validate.ts": "0d36f950262b608978aef8caef62900077fce352a0b33da37abd07a1482acef6", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/graphql_service.ts": "2a0bfe4e49b78412cccf2926ba9713871438cbf285df12b6e26979e9f3668dd1", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/info_service.ts": "0c5cb5a9926644b00d8129121655b6654a884f4ab3bb2a56a1b5e33c2fadafe3", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/middlewares.ts": "c996a25dffa58efc8f50e4a8f3f9df14d93b32b2bb6269c95ad0bec3cc05de94", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/playground_service.ts": "570cd407c5000bd93ddbd0a898ca5f50bb8d5f26d67684d1c592ab2c260ffce0", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/responses.ts": "b3e7f74d02e51a719968a417202c4a307b4c4dc73a73ed93ffbb76d73eef683c", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/services/rest_service.ts": "88c0a9b409beeb936ab3fc84a90ada122f38074975644036baa69dd2cf354290", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/sync/replicated_map.ts": "8b11ac1aa731ac45e454d0c0c98d69669856e9154bd1a7834265f03032f20708", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/sync/typegraph.ts": "69fa06eae9f4676c4e8818fdb29056f4775a5d1ce04e8662a011cb777735e44b", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/system_typegraphs.ts": "a49296517ab9aeefb0a93ccbc2361969a78c8289b213115ddcba0216c359659e", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/transports/graphql/gq.ts": "7150dc876b8d2c423acf6571e4f82cb28b1d84472edbf7aec8f2db3d35099730", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/transports/graphql/graphql.ts": "db28dbff035dc4da27cbbc93596d31b9ae4c4647d8dd1ef8dd8466124dddf819", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/transports/graphql/request_parser.ts": "f808f194897a70be6f9b4125fad793b4ac6840558cae583f757fbe9c1db5cee5", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/transports/graphql/typegraph.ts": "09603f5991ba0578147ab02ee2cb000fefebf020551525363b4d971e9bdc6ece", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/transports/graphql/utils.ts": "52f41e4acc8c8e1f7438ff421562909fabfa84eee509e5fa7d3d446d631711c8", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/transports/rest/rest_schema_generator.ts": "6143277aa83e620bc1b89f5cc57952c2ed4559d4926b30afd8a7c213865cc142", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/artifacts/local.ts": "67899cac544f6c451420da2e66a7f761e51930ed524be67427409188e62097e0", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/artifacts/mod.ts": "3d12ecb13cdec568cb448ab6038f3dd35d6117f41e469000fd94f6cd07505349", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/artifacts/shared.ts": "e4881b2bdd38b1f06ffeaaac6936e963c3802c2113bb97beaf574cb4ab5ef5cc", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/hooks.ts": "ba2eb44d98e32a86bb6c66c2555e5b16b0c15560a8c36eaa12572f5d410c9eb2", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/memory_register.ts": "6dc0d05a471f4574b969e20ab04b21fb9aa99c8e30cbd0fe043bd8d984cee724", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/mod.ts": "5421407d86f6a2bb4fd63bd0063ea0f38a1827b244a125b9a5262c96119ec75f", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/no_limiter.ts": "820f766f78cb9546c916a6db2e1713cb9288ca17b2ab590f05e2f7748d1321af", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/rate_limiter.ts": "83b4d1197acb83065481489ef3cac1a6bf0fc9aa819fc2330c5dd177f4c79302", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegate/register.ts": "2f9c26873b2cd785f79cbe7a84563eab99de62b7f200edc84db1698f7bd1071f", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraph/mod.ts": "74cd1a7908222c865d6b07860630991f6369643d4b328575c5e758d72730cc67", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraph/type_node.ts": "2122369b68351e336bae60a18006b1329c95a0e82b4e25795ba3e419df493d15", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraph/types.ts": "c485bb695b07d3b264fef0bb386fd49dd1a0482ce373a6e99e30505fbafaa850", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraph/utils.ts": "ce1a9ac71b86ccbae4334cef66e3424395349b6517bb0fdae31f3032607ac444", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraph/versions.ts": "fdb37a061b7e2495c920f4c04962356d4e5fb82c5f9a4376dec84462741962ec", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraph/visitor.ts": "d3df39cb77be23f6ea6e754db43d9b9b78dcf71fa8ed4a570c69e7102495af99", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraphs/introspection.json": "3ccdf5b8fcf9315defe18cf1527d37b5068c39301cb5ef02ee7594b213348db6", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraphs/prisma_migration.json": "90a81280955d94989c9f3ffcfbbd4b5c0472e855bbf93f7a4f5ec333b0756a43", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/typegraphs/typegate.json": "3134103b6ac3563e5ed802e43221f1527e67016f7b9181615ae4fa2ab7e9ee76", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/types.ts": "c00d562e809aa2c773925f69467d42bf5b4146146d1a5e90d8704d0e1d56cfee", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/utils.ts": "37d7289fdfa897317947489c0e58ca4af919c582cec19394f3b49d377e1e3b76", + "https://raw.githubusercontent.com/metatypedev/metatype/30d8b1e953d97ef38387160a83edbee247e90f3c/src/typegate/src/utils/hash.ts": "1b0fc152d2b51c1acf542ba49ec383efea5236acb9d52526b7f6568fadb43dfb", + "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/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/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", diff --git a/docs/metatype.dev/docs/reference/typegate/index.mdx b/docs/metatype.dev/docs/reference/typegate/index.mdx index b495f35f5..d0eb0a581 100644 --- a/docs/metatype.dev/docs/reference/typegate/index.mdx +++ b/docs/metatype.dev/docs/reference/typegate/index.mdx @@ -53,32 +53,38 @@ GraphQL, being a query language, offers a great asset for Metatype's philosophy: The following environment variables can be used to configure the typegate. `SYNC_*` variables have special semantics which you can read about [here](/docs/reference/typegate/synchronization). -| Environment variables | Desc | Default | Examples | -| -------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------- | -| HOSTNAME | Hostname that typegate is deployed on. | `getHostname()` result. | `typegate-123` | -| TG_PORT | Tcp port to serve typegate APIs at. | 7890 | 7891 | -| TG_ADMIN_PASSWORD | Password use by the CLI/SDK to configure the typegate. | **Required** | My5up3r53cr37 | -| TG_SECRET | Symmetric key used to encrypt cookies and other things (64-byte binary string encoded in base64). | **Required**. | 0p64wJCpQCTiPqPOEze92HLBieszD3sGLtnx6tWm67kqo1tCYcNZ17rjFjEzMl7HJ/SOFZsTVWU0fUjndMrhsQ== | -| TMP_DIR | Top-level temporary directory. | `$PWD/tmp` | `/tmp/typegate-tmp-dir` | -| DEBUG | Enable debug output and other development paths. | false | true | -| TIMER_MAX_TIMEOUT_MS | Timeout for custom runtime functions and other proccesses. | 3000 | 5000 | -| TIMER_POLICY_EVAL_RETRIES | Number of retries when evaluating policies that have timed out | 1 | 3 | -| TIMER_DESTROY_RESOURCES | Force abort and attempt to restart operations that did not respond after multiple retries | true | false | -| JWT_MAX_DURATION_SEC | The lifetime of generated JWT access tokens. | `30 * 24 * 3600` | `604800` | -| JWT_REFRESH_DURATION_SEC | The lifetime of generated JWT refresh tokens. | `5 * 60` | `600` | -| SENTRY_DSN | Data source name for sentry | `null` | `https://public@sentry.example.com/1` | -| SENTRY_SAMPLE_RATE | The rate of error events to be sent to Sentry (between 0.0 and 1.0) | 1.0 | 0.5 | -| SENTRY_TRACES_SAMPLE_RATE | The rate of transactions be sent to Sentry (between 0.0 and 1.0) | 1.0 | 0.2 | -| TRUST_PROXY | Whether to accept proxy headers when resolving request contexts. | false | true | -| TRUST_HEADER_IP | The header key on which to resolve request origin addresses. | X-Forwarded-For | X-Forwarded-For | -| DENO_V8_FLAGS | Flags for tuning the v8 javascript engine. Use the `--help` flag here to see what options are available. | | `--stack-size=1968` | -| SYNC_REDIS_URL | URL to the Redis database. Must include the database number. | \*\*Required (sync mode) | `http://:password@localhost:6379/0` | -| SYNC_S3_HOST | Hostname of the S3 store. | \*\*Required (sync mode) | `play.min.io:9000` | -| SYNC_S3_REGION | S3 region. | **Required (sync mode)** | `us-west-2` | -| SYNC_S3_ACCESS_KEY | Access key for the S3 store credentials. | **Required (sync mode)** | user | -| SYNC_S3_SECRET_KEY | Access key secret for the S3 store credentials. | **Required (sync mode)** | password | -| SYNC_S3_PATH_STYLE | `true` or `false`, force path style if `true`. | `false` | `true` | -| SYNC_S3_BUCKET | The bucket to be used for the system (dedicated). | **Required (sync mode)** | `mybucket` | -| SUBSTANTIAL_POLL_INTERVAL_SEC | Rate at which new schedules are read. | 1.0 | 0.6 | -| SUBSTANTIAL_LEASE_LIFESPAN_SEC | Lease duration associated to a workflow run | 2.0 | 6 | -| SUBSTANTIAL_MAX_ACQUIRE_PER_TICK | Max amount of new acquired replay requests per tick | 3 | 5 | +| Environment variables | Desc | Default | Examples | +| ---------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------- | +| HOSTNAME | Hostname that typegate is deployed on. | `getHostname()` result. | `typegate-123` | +| TG_PORT | Tcp port to serve typegate APIs at. | 7890 | 7891 | +| TG_ADMIN_PASSWORD | Password use by the CLI/SDK to configure the typegate. | **Required** | My5up3r53cr37 | +| TG_SECRET | Symmetric key used to encrypt cookies and other things (64-byte binary string encoded in base64). | **Required**. | 0p64wJCpQCTiPqPOEze92HLBieszD3sGLtnx6tWm67kqo1tCYcNZ17rjFjEzMl7HJ/SOFZsTVWU0fUjndMrhsQ== | +| TMP_DIR | Top-level temporary directory. | `$PWD/tmp` | `/tmp/typegate-tmp-dir` | +| DEBUG | Enable debug output and other development paths. | false | true | +| TIMER_MAX_TIMEOUT_MS | Timeout for custom runtime functions and other proccesses. | 3000 | 5000 | +| TIMER_POLICY_EVAL_RETRIES | Number of retries when evaluating policies that have timed out | 1 | 3 | +| TIMER_DESTROY_RESOURCES | Force abort and attempt to restart operations that did not respond after multiple retries | true | false | +| JWT_MAX_DURATION_SEC | The lifetime of generated JWT access tokens. | `30 * 24 * 3600` | `604800` | +| JWT_REFRESH_DURATION_SEC | The lifetime of generated JWT refresh tokens. | `5 * 60` | `600` | +| SENTRY_DSN | Data source name for sentry | `null` | `https://public@sentry.example.com/1` | +| SENTRY_SAMPLE_RATE | The rate of error events to be sent to Sentry (between 0.0 and 1.0) | 1.0 | 0.5 | +| SENTRY_TRACES_SAMPLE_RATE | The rate of transactions be sent to Sentry (between 0.0 and 1.0) | 1.0 | 0.2 | +| TRUST_PROXY | Whether to accept proxy headers when resolving request contexts. | false | true | +| TRUST_HEADER_IP | The header key on which to resolve request origin addresses. | X-Forwarded-For | X-Forwarded-For | +| DENO_V8_FLAGS | Flags for tuning the v8 javascript engine. Use the `--help` flag here to see what options are available. | | `--stack-size=1968` | +| SYNC_REDIS_URL | URL to the Redis database. Must include the database number. | \*\*Required (sync mode) | `http://:password@localhost:6379/0` | +| SYNC_S3_HOST | Hostname of the S3 store. | \*\*Required (sync mode) | `play.min.io:9000` | +| SYNC_S3_REGION | S3 region. | **Required (sync mode)** | `us-west-2` | +| SYNC_S3_ACCESS_KEY | Access key for the S3 store credentials. | **Required (sync mode)** | user | +| SYNC_S3_SECRET_KEY | Access key secret for the S3 store credentials. | **Required (sync mode)** | password | +| SYNC_S3_PATH_STYLE | `true` or `false`, force path style if `true`. | `false` | `true` | +| SYNC_S3_BUCKET | The bucket to be used for the system (dedicated). | **Required (sync mode)** | `mybucket` | +| SUBSTANTIAL_POLL_INTERVAL_SEC | Rate at which new schedules are read. | 1.0 | 0.6 | +| SUBSTANTIAL_LEASE_LIFESPAN_SEC | Lease duration associated to a workflow run | 2.0 | 6 | +| SUBSTANTIAL_MAX_ACQUIRE_PER_TICK | Max amount of new acquired replay requests per tick | 3 | 5 | +| MIN_DENO_WORKERS | Minimal number of available deno workers | 2 | 4 | +| MAX_DENO_WORKERS | Maximal number of available deno workers | 8 | 16 | +| DENO_WORKER_WAIT_TIMEOUT_MS | Timeout for waiting for a free deno worker | 5000 | 2000 | +| MIN_SUBSTANTIAL_WORKERS | Minimal number of available substantial workers | 2 | 4 | +| MAX_SUBSTANTIAL_WORKERS | Maximal number of available substantial workers | 8 | 16 | +| SUBSTANTIAL_WORKER_WAIT_TIMEOUT_MS | Timeout for waiting for a free substantial worker | 15000 | 2000 | diff --git a/examples/metatype.yaml b/examples/metatype.yaml index 7f0126cfc..e6cdd5d66 100644 --- a/examples/metatype.yaml +++ b/examples/metatype.yaml @@ -163,6 +163,7 @@ typegraphs: exclude: - "typegraphs/temporal.ts" - "typegraphs/kv.ts" + - "typegraphs/scripts/" include: - "typegraphs/*.ts" javascript: diff --git a/examples/templates/deno/api/example.ts b/examples/templates/deno/api/example.ts index b6639b757..374c69f86 100644 --- a/examples/templates/deno/api/example.ts +++ b/examples/templates/deno/api/example.ts @@ -1,6 +1,6 @@ -import { Policy, t, typegraph } from "jsr:@typegraph/sdk@0.5.0"; -import { PythonRuntime } from "jsr:@typegraph/sdk@0.5.0/runtimes/python"; -import { DenoRuntime } from "jsr:@typegraph/sdk@0.5.0/runtimes/deno"; +import { Policy, t, typegraph } from "jsr:@typegraph/sdk@0.5.1-rc.0"; +import { PythonRuntime } from "jsr:@typegraph/sdk@0.5.1-rc.0/runtimes/python"; +import { DenoRuntime } from "jsr:@typegraph/sdk@0.5.1-rc.0/runtimes/deno"; await typegraph("example", (g) => { const pub = Policy.public(); diff --git a/examples/templates/deno/compose.yml b/examples/templates/deno/compose.yml index 1416bae47..4e4b82e42 100644 --- a/examples/templates/deno/compose.yml +++ b/examples/templates/deno/compose.yml @@ -1,6 +1,6 @@ services: typegate: - image: ghcr.io/metatypedev/typegate:v0.5.0 + image: ghcr.io/metatypedev/typegate:v0.5.1-rc.0 restart: always ports: - "7890:7890" diff --git a/examples/templates/node/compose.yml b/examples/templates/node/compose.yml index ef891c880..78728a50d 100644 --- a/examples/templates/node/compose.yml +++ b/examples/templates/node/compose.yml @@ -1,6 +1,6 @@ services: typegate: - image: ghcr.io/metatypedev/typegate:v0.5.0 + image: ghcr.io/metatypedev/typegate:v0.5.1-rc.0 restart: always ports: - "7890:7890" diff --git a/examples/templates/node/package.json b/examples/templates/node/package.json index f28bc414f..b3c43084f 100644 --- a/examples/templates/node/package.json +++ b/examples/templates/node/package.json @@ -6,7 +6,7 @@ "dev": "MCLI_LOADER_CMD='npm x tsx' meta dev" }, "dependencies": { - "@typegraph/sdk": "^0.5.0" + "@typegraph/sdk": "^0.5.1-rc.0" }, "devDependencies": { "tsx": "^3.13.0", diff --git a/examples/templates/python/compose.yml b/examples/templates/python/compose.yml index ef891c880..78728a50d 100644 --- a/examples/templates/python/compose.yml +++ b/examples/templates/python/compose.yml @@ -1,6 +1,6 @@ services: typegate: - image: ghcr.io/metatypedev/typegate:v0.5.0 + image: ghcr.io/metatypedev/typegate:v0.5.1-rc.0 restart: always ports: - "7890:7890" diff --git a/examples/templates/python/pyproject.toml b/examples/templates/python/pyproject.toml index f2f4cadda..3024c63b6 100644 --- a/examples/templates/python/pyproject.toml +++ b/examples/templates/python/pyproject.toml @@ -1,12 +1,12 @@ [tool.poetry] name = "example" -version = "0.5.0" +version = "0.5.1-rc.0" description = "" authors = [] [tool.poetry.dependencies] python = ">=3.8,<4.0" -typegraph = "0.5.0" +typegraph = "0.5.1-rc.0" [build-system] requires = ["poetry-core"] diff --git a/examples/typegraphs/metagen/rs/fdk.rs b/examples/typegraphs/metagen/rs/fdk.rs index df090e4c3..459f35aaa 100644 --- a/examples/typegraphs/metagen/rs/fdk.rs +++ b/examples/typegraphs/metagen/rs/fdk.rs @@ -109,7 +109,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0"; + static MT_VERSION: &str = "0.5.1-rc.0"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } diff --git a/pyproject.toml b/pyproject.toml index 8000e97af..f6e35ebd3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ [tool.poetry] name = "metatype" -version = "0.5.0" +version = "0.5.1-rc.0" description = "" authors = [] diff --git a/src/pyrt_wit_wire/pyproject.toml b/src/pyrt_wit_wire/pyproject.toml index 2eccd8c82..ffba59c81 100644 --- a/src/pyrt_wit_wire/pyproject.toml +++ b/src/pyrt_wit_wire/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pyrt_wit_wire" -version = "0.5.0" +version = "0.5.1-rc.0" description = "Wasm component implementing the PythonRuntime host using wit_wire protocol." license = "MPL-2.0" readme = "README.md" diff --git a/src/typegate/engine/src/runtimes/wit_wire.rs b/src/typegate/engine/src/runtimes/wit_wire.rs index e74bc1a15..aac7d396e 100644 --- a/src/typegate/engine/src/runtimes/wit_wire.rs +++ b/src/typegate/engine/src/runtimes/wit_wire.rs @@ -405,7 +405,7 @@ pub fn op_wit_wire_destroy( scope: &mut v8::HandleScope<'_>, #[string] instance_id: String, ) { - debug!("destroying wit_wire instnace {instance_id}"); + debug!("destroying wit_wire instance {instance_id}"); let ctx = { let state = state.borrow(); let ctx = state.borrow::(); diff --git a/src/typegate/src/config/types.ts b/src/typegate/src/config/types.ts index a8102255c..b00143735 100644 --- a/src/typegate/src/config/types.ts +++ b/src/typegate/src/config/types.ts @@ -60,6 +60,16 @@ export const globalConfigSchema = z.object({ sentry_sample_rate: z.coerce.number().positive().min(0).max(1), sentry_traces_sample_rate: z.coerce.number().positive().min(0).max(1), deno_v8_flags: z.string().optional(), + min_deno_workers: z.coerce.number().positive().default(2), + max_deno_workers: z.coerce.number().positive().default(8), + deno_worker_wait_timeout_ms: z.coerce.number().positive().default(5000), + // deno_idle_worker_timeout_ms: z.coerce.number().positive().optional(), // auto remove idle workers + min_substantial_workers: z.coerce.number().positive().default(2), + max_substantial_workers: z.coerce.number().positive().default(8), + substantial_worker_wait_timeout_ms: z.coerce.number().positive().default( + 15000, + ), + // substantial_idle_worker_timeout_ms: z.coerce.number().positive().optional(), // auto remove idle workers }); export type GlobalConfig = z.infer; @@ -122,7 +132,7 @@ export type SyncConfigX = { redis: RedisConnectOptions; s3: S3ClientConfig; s3Bucket: string; - forceRemove?: boolean + forceRemove?: boolean; }; export type TypegateConfig = { diff --git a/src/typegate/src/runtimes/deno/deno.ts b/src/typegate/src/runtimes/deno/deno.ts index 5a698ebd8..46364d3b7 100644 --- a/src/typegate/src/runtimes/deno/deno.ts +++ b/src/typegate/src/runtimes/deno/deno.ts @@ -182,7 +182,7 @@ export class DenoRuntime extends Runtime { } async deinit(): Promise { - // await this.workerManager.deinit(); + this.workerManager.deinit(); } materialize( diff --git a/src/typegate/src/runtimes/deno/worker_manager.ts b/src/typegate/src/runtimes/deno/worker_manager.ts index 7b16fca1c..0b295292b 100644 --- a/src/typegate/src/runtimes/deno/worker_manager.ts +++ b/src/typegate/src/runtimes/deno/worker_manager.ts @@ -1,12 +1,14 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 +import { globalConfig } from "../../config.ts"; import { getLogger } from "../../log.ts"; import { DenoWorker } from "../patterns/worker_manager/deno.ts"; import { BaseWorkerManager, createTaskId, } from "../patterns/worker_manager/mod.ts"; +import { WorkerPool } from "../patterns/worker_manager/pooling.ts"; import { TaskId } from "../patterns/worker_manager/types.ts"; import { TaskContext } from "./shared_types.ts"; import { DenoEvent, DenoMessage, TaskSpec } from "./types.ts"; @@ -19,15 +21,27 @@ export type WorkerManagerConfig = { export class WorkerManager extends BaseWorkerManager { + static #pool: WorkerPool | null = null; + static #getPool() { + if (!WorkerManager.#pool) { + WorkerManager.#pool = new WorkerPool( + "deno runtime", + { + minWorkers: globalConfig.min_deno_workers, + maxWorkers: globalConfig.max_deno_workers, + waitTimeoutMs: globalConfig.deno_worker_wait_timeout_ms, + }, + (id: string) => new DenoWorker(id, import.meta.resolve("./worker.ts")), + ); + } + return WorkerManager.#pool!; + } + constructor(private config: WorkerManagerConfig) { - super( - (taskId: TaskId) => { - return new DenoWorker(taskId, import.meta.resolve("./worker.ts")); - }, - ); + super(WorkerManager.#getPool()); } - callFunction( + async callFunction( name: string, modulePath: string, relativeModulePath: string, @@ -35,7 +49,7 @@ export class WorkerManager internalTCtx: TaskContext, ) { const taskId = createTaskId(`${name}@${relativeModulePath}`); - this.createWorker(name, taskId, { + await this.delegateTask(name, taskId, { modulePath, functionName: name, }); @@ -49,13 +63,13 @@ export class WorkerManager return new Promise((resolve, reject) => { const timeoutId = setTimeout(() => { - this.destroyWorker(name, taskId); + this.deallocateWorker(name, taskId); reject(new Error(`${this.config.timeout_ms}ms timeout exceeded`)); }, this.config.timeout_ms); const handler: (event: DenoEvent) => void = (event) => { clearTimeout(timeoutId); - this.destroyWorker(name, taskId); + this.deallocateWorker(name, taskId); switch (event.type) { case "SUCCESS": resolve(event.result); diff --git a/src/typegate/src/runtimes/patterns/worker_manager/deno.ts b/src/typegate/src/runtimes/patterns/worker_manager/deno.ts index b2ec55179..3137e51bf 100644 --- a/src/typegate/src/runtimes/patterns/worker_manager/deno.ts +++ b/src/typegate/src/runtimes/patterns/worker_manager/deno.ts @@ -3,7 +3,7 @@ import { envSharedWithWorkers } from "../../../config/shared.ts"; import { BaseWorker } from "./mod.ts"; -import { BaseMessage, EventHandler, TaskId } from "./types.ts"; +import { BaseMessage, EventHandler } from "./types.ts"; export interface DenoWorkerError extends BaseMessage { type: "WORKER_ERROR"; @@ -15,11 +15,11 @@ export type BaseDenoWorkerMessage = BaseMessage | DenoWorkerError; export class DenoWorker extends BaseWorker { #worker: Worker; - #taskId: TaskId; - constructor(taskId: TaskId, workerPath: string) { + #workerId: string; + constructor(workerId: string, workerPath: string) { super(); this.#worker = new Worker(workerPath, { - name: taskId, + name: workerId, type: "module", deno: { permissions: { @@ -35,7 +35,7 @@ export class DenoWorker }, }, }); - this.#taskId = taskId; + this.#workerId = workerId; } listen(handlerFn: EventHandler) { @@ -43,13 +43,14 @@ export class DenoWorker await handlerFn(message.data as E); }; - this.#worker.onerror = /*async*/ (event) => - handlerFn( + this.#worker.onerror = async (event) => { + await handlerFn( { type: "WORKER_ERROR", event, } as E, ); + }; } send(msg: M) { @@ -61,6 +62,6 @@ export class DenoWorker } get id() { - return this.#taskId; + return this.#workerId; } } diff --git a/src/typegate/src/runtimes/patterns/worker_manager/mod.ts b/src/typegate/src/runtimes/patterns/worker_manager/mod.ts index fe06470cb..7a889b643 100644 --- a/src/typegate/src/runtimes/patterns/worker_manager/mod.ts +++ b/src/typegate/src/runtimes/patterns/worker_manager/mod.ts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: MPL-2.0 import { getLogger } from "../../../log.ts"; +import { WorkerPool } from "./pooling.ts"; import { BaseMessage, EventHandler, TaskId } from "./types.ts"; const logger = getLogger(import.meta, "WARN"); @@ -17,6 +18,12 @@ export abstract class BaseWorker { abstract get id(): TaskId; } +type DeallocateOptions = { + destroy?: boolean; + // only relevant if destroy is true; if true, no pending task will be dequeued + shutdown?: boolean; +}; + export class BaseWorkerManager< T, M extends BaseMessage, @@ -28,14 +35,10 @@ export class BaseWorkerManager< }> = new Map(); #tasksByName: Map> = new Map(); #startedAt: Map = new Map(); + #pool: WorkerPool; - #workerFactory: (taskId: TaskId) => BaseWorker; - protected constructor(workerFactory: (taskId: TaskId) => BaseWorker) { - this.#workerFactory = workerFactory; - } - - get workerFactory() { - return this.#workerFactory; + protected constructor(pool: WorkerPool) { + this.#pool = pool; } protected getActiveTaskNames() { @@ -68,20 +71,13 @@ export class BaseWorkerManager< return startedAt; } - // allocate worker? - protected createWorker(name: string, taskId: TaskId, taskSpec: T) { - const worker = this.#workerFactory(taskId); - // TODO inline - this.addWorker(name, taskId, worker, taskSpec, new Date()); - } - - protected addWorker( + protected async delegateTask( name: string, taskId: TaskId, - worker: BaseWorker, taskSpec: T, - startedAt: Date, - ) { + ): Promise { + const worker = await this.#pool.borrowWorker(this); + if (!this.#tasksByName.has(name)) { this.#tasksByName.set(name, new Set()); } @@ -89,28 +85,45 @@ export class BaseWorkerManager< this.#tasksByName.get(name)!.add(taskId); this.#activeTasks.set(taskId, { worker, taskSpec }); if (!this.#startedAt.has(taskId)) { - this.#startedAt.set(taskId, startedAt); + this.#startedAt.set(taskId, new Date()); } } - protected destroyAllWorkers() { - for (const name of this.getActiveTaskNames()) { - this.destroyWorkersByName(name); + protected deallocateAllWorkers(options: DeallocateOptions = {}) { + const activeTaskNames = this.getActiveTaskNames(); + if (activeTaskNames.length > 0) { + if (options.destroy) { + logger.warn( + `destroying workers for tasks ${ + activeTaskNames.map((w) => `"${w}"`).join(", ") + }`, + ); + } + for (const name of activeTaskNames) { + this.deallocateWorkersByName(name, options); + } } } - protected destroyWorkersByName(name: string) { + protected deallocateWorkersByName( + name: string, + options: DeallocateOptions = {}, + ) { const taskIds = this.#tasksByName.get(name); if (taskIds) { for (const taskId of taskIds) { - this.destroyWorker(name, taskId); + this.deallocateWorker(name, taskId, options); } return true; } return false; } - protected destroyWorker(name: string, taskId: TaskId) { + deallocateWorker( + name: string, + taskId: TaskId, + { destroy = false, shutdown = false }: DeallocateOptions = {}, + ) { const task = this.#activeTasks.get(taskId); if (this.#tasksByName.has(name)) { if (!task) { @@ -120,14 +133,20 @@ export class BaseWorkerManager< return false; } - task.worker.destroy(); this.#activeTasks.delete(taskId); this.#tasksByName.get(name)!.delete(taskId); // startedAt records are not deleted + if (destroy) { + this.#pool.destroyWorker(task.worker, shutdown); + } else { + this.#pool.unborrowWorker(task.worker); + } + return true; } + logger.warn(`Task with name "${name}" does not exist`); return false; } @@ -140,6 +159,12 @@ export class BaseWorkerManager< worker.send(msg); this.logMessage(taskId, msg); } + + deinit() { + this.deallocateAllWorkers({ destroy: true, shutdown: true }); + this.#pool.clear(); // this will be called more than once, but that is ok + return Promise.resolve(); + } } export function createTaskId(name: string) { diff --git a/src/typegate/src/runtimes/patterns/worker_manager/pooling.ts b/src/typegate/src/runtimes/patterns/worker_manager/pooling.ts new file mode 100644 index 000000000..11d04b8af --- /dev/null +++ b/src/typegate/src/runtimes/patterns/worker_manager/pooling.ts @@ -0,0 +1,228 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { BaseWorker, BaseWorkerManager } from "./mod.ts"; +import { BaseMessage } from "./types.ts"; +import { getLogger } from "../../../log.ts"; + +const logger = getLogger(import.meta, "WARN"); + +export type PoolConfig = { + // non-negative integer; 0 means no limit + maxWorkers: number; + // non-negative integer; must be less than or equal to `maxWorkers` if maxWorkers is not 0 + minWorkers: number; + // non-negative integer; 0 means no timeout + waitTimeoutMs: number; +}; + +export type Consumer = (x: T) => void; + +export interface WaitQueue { + push(consumer: Consumer, onCancel: () => void): void; + shift(produce: () => W): boolean; +} + +export function createSimpleWaitQueue(): WaitQueue { + const queue: Array> = []; + return { + push(consumer, _onCancel) { + queue.push(consumer); + }, + shift(produce) { + const consumer = queue.shift(); + if (consumer) { + consumer(produce()); + return true; + } + return false; + }, + }; +} + +export class WaitQueueWithTimeout implements WaitQueue { + #queue: Array<{ + consumer: Consumer; + cancellationHandler: () => void; + addedAt: number; // timestamp + }> = []; + #timerId: number | null = null; + #waitTimeoutMs: number; + + constructor(timeoutMs: number) { + this.#waitTimeoutMs = timeoutMs; + } + + push(consumer: Consumer, onCancel: () => void) { + this.#queue.push({ + consumer, + cancellationHandler: onCancel, + addedAt: Date.now(), + }); + if (this.#timerId == null) { + if (this.#queue.length !== 1) { + throw new Error("unreachable: inconsistent state: no active timer"); + } + this.#updateTimer(); + } + } + + shift(produce: () => W) { + const entry = this.#queue.shift(); + if (entry) { + entry.consumer(produce()); + return true; + } + return false; + } + + #timeoutHandler() { + this.#cancelNextEntry(); + this.#updateTimer(); + } + + #updateTimer() { + if (this.#queue.length > 0) { + const timeoutMs = this.#queue[0].addedAt + this.#waitTimeoutMs - + Date.now(); + if (timeoutMs <= 0) { + this.#cancelNextEntry(); + this.#updateTimer(); + return; + } + this.#timerId = setTimeout(this.#timeoutHandler.bind(this), timeoutMs); + } else { + this.#timerId = null; + } + } + + #cancelNextEntry() { + this.#queue.shift()!.cancellationHandler(); + } + + [Symbol.dispose]() { + if (this.#timerId != null) { + clearTimeout(this.#timerId); + } + } +} + +/// W is the worker type +/// R is the manager type +export class WorkerPool< + T, + M extends BaseMessage, + E extends BaseMessage, + W extends BaseWorker = BaseWorker, + G extends BaseWorkerManager = BaseWorkerManager, +> { + #config: PoolConfig; + // TODO auto-remove idle workers after a certain time + #idleWorkers: Array = []; + #busyWorkers: Map = new Map(); + #waitQueue: WaitQueue; + #workerFactory: () => W; + #nextWorkerId = 1; + + constructor(name: string, config: PoolConfig, factory: (id: string) => W) { + if (config.maxWorkers != 0 && config.minWorkers > config.maxWorkers) { + throw new Error( + "Worker pool configuration error: maxWorkers must be greater than or equal to minWorkers or be 0", + ); + } + + this.#config = config; + this.#workerFactory = () => + factory(`${name} worker #${this.#nextWorkerId++}`); + + if (config.waitTimeoutMs === 0) { + // no timeout + this.#waitQueue = createSimpleWaitQueue(); + } else { + this.#waitQueue = new WaitQueueWithTimeout(config.waitTimeoutMs); + } + } + + #lendWorkerTo(worker: W, manager: G): W { + this.#busyWorkers.set(worker.id, manager); + return worker; + } + + borrowWorker(manager: G) { + const idleWorker = this.#idleWorkers.shift(); + if (idleWorker) { + return Promise.resolve(this.#lendWorkerTo(idleWorker, manager)); + } + if ( + this.#config.maxWorkers === 0 || + this.#busyWorkers.size < this.#config.maxWorkers + ) { + return Promise.resolve( + this.#lendWorkerTo(this.#workerFactory(), manager), + ); + } + + // wait for a worker to become available + return new Promise((resolve, reject) => { + this.#waitQueue.push( + (worker) => resolve(this.#lendWorkerTo(worker, manager)), + () => + reject( + new Error("timeout while waiting for a worker to be available"), + ), + ); + }); + } + + // ensureMinWorkers will be false when we are shutting down. + unborrowWorker(worker: W) { + this.#busyWorkers.delete(worker.id); + const taskAdded = this.#waitQueue.shift(() => worker); + if (!taskAdded) { + // worker has not been reassigned + const { maxWorkers } = this.#config; + // how?? xD + // We might add "urgent" tasks in the future; + // in this case the worker count might exceed `maxWorkers`. + if (maxWorkers !== 0 && this.#workerCount >= maxWorkers) { + worker.destroy(); + } else { + this.#idleWorkers.push(worker); + } + } + } + + // when shutdown is true, new tasks will not be dequeued + destroyWorker(worker: W, shutdown = false) { + this.#busyWorkers.delete(worker.id); + worker.destroy(); + if (!shutdown) { + const taskAdded = this.#waitQueue.shift(() => this.#workerFactory()); + if (!taskAdded) { + // queue was empty: worker not reassigned + const { minWorkers } = this.#config; + if (this.#workerCount < minWorkers) { + this.#idleWorkers.push(this.#workerFactory()); + } + } + } + } + + get #workerCount() { + return this.#idleWorkers.length + this.#busyWorkers.size; + } + + clear() { + logger.warn( + `destroying idle workers: ${ + this.#idleWorkers + .map((w) => `"${w.id}"`) + .join(", ") + }`, + ); + for (const worker of this.#idleWorkers) { + worker.destroy(); + } + this.#idleWorkers = []; + } +} diff --git a/src/typegate/src/runtimes/substantial/agent.ts b/src/typegate/src/runtimes/substantial/agent.ts index 0db626412..5acabcb47 100644 --- a/src/typegate/src/runtimes/substantial/agent.ts +++ b/src/typegate/src/runtimes/substantial/agent.ts @@ -115,7 +115,7 @@ export class Agent { } stop() { - this.workerManager.destroyAllWorkers(); + this.workerManager.deinit(); if (this.pollIntervalHandle !== undefined) { clearInterval(this.pollIntervalHandle); } @@ -282,12 +282,12 @@ export class Agent { run, next.schedule_date, taskContext, - ); - - this.workerManager.listen( - next.run_id, - this.#eventResultHandlerFor(workflow.name, next.run_id), - ); + ).then(() => { + this.workerManager.listen( + next.run_id, + this.#eventResultHandlerFor(workflow.name, next.run_id), + ); + }); } catch (err) { throw err; } finally { @@ -342,7 +342,7 @@ export class Agent { runId: string, { interrupt, schedule, run }: InterruptEvent, ) { - this.workerManager.destroyWorker(workflowName, runId); // ! + this.workerManager.deallocateWorker(workflowName, runId); // ! this.logger.debug(`Interrupt "${workflowName}": ${interrupt}"`); @@ -391,8 +391,7 @@ export class Agent { runId: string, event: WorkflowCompletionEvent, ) { - this.workerManager.destroyWorker(workflowName, runId); - console.log({ event }); + this.workerManager.deallocateWorker(workflowName, runId); const result = event.type == "SUCCESS" ? event.result : event.error; @@ -426,8 +425,6 @@ export class Agent { run: event.run, }); - // console.log("Persisted", run); - await Meta.substantial.storeCloseSchedule({ backend: this.backend, queue: this.queue, diff --git a/src/typegate/src/runtimes/substantial/types.ts b/src/typegate/src/runtimes/substantial/types.ts index 5d38d05ef..969b88e29 100644 --- a/src/typegate/src/runtimes/substantial/types.ts +++ b/src/typegate/src/runtimes/substantial/types.ts @@ -66,12 +66,15 @@ export type ExecutionResultKind = "SUCCESS" | "FAIL"; // Note: Avoid refactoring with inheritance (e.g. `SleepInterrupt extends Interrupt`) // inheritance information is erased when sending exceptions accross workers -export type InterruptType = - | "SLEEP" - | "SAVE_RETRY" - | "WAIT_RECEIVE_EVENT" - | "WAIT_HANDLE_EVENT" - | "WAIT_ENSURE_VALUE"; +const validInterrupts = [ + "SLEEP", + "SAVE_RETRY", + "WAIT_RECEIVE_EVENT", + "WAIT_HANDLE_EVENT", + "WAIT_ENSURE_VALUE", +] as const; + +type InterruptType = (typeof validInterrupts)[number]; export class Interrupt extends Error { private static readonly PREFIX = "SUBSTANTIAL_INTERRUPT_"; @@ -83,7 +86,11 @@ export class Interrupt extends Error { static getTypeOf(err: unknown): InterruptType | null { if (err instanceof Error && err.message.startsWith(this.PREFIX)) { - return err.message.substring(this.PREFIX.length) as InterruptType; + const interrupt = err.message.substring(this.PREFIX.length); + if (validInterrupts.includes(interrupt as any)) { + return interrupt as InterruptType; + } + throw new Error(`Unknown interrupt "${interrupt}"`); } return null; } diff --git a/src/typegate/src/runtimes/substantial/worker.ts b/src/typegate/src/runtimes/substantial/worker.ts index 4de7df8b0..12ea5cc59 100644 --- a/src/typegate/src/runtimes/substantial/worker.ts +++ b/src/typegate/src/runtimes/substantial/worker.ts @@ -60,7 +60,6 @@ self.onmessage = async function (event) { { type: "FAIL", error: errorToString(wfException), - // How?? exception: wfException instanceof Error ? wfException : undefined, diff --git a/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts b/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts index d6176dc30..e68b28d65 100644 --- a/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts +++ b/src/typegate/src/runtimes/substantial/workflow_worker_manager.ts @@ -1,15 +1,19 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 +import { globalConfig } from "../../config.ts"; import { getLogger } from "../../log.ts"; import { TaskContext } from "../deno/shared_types.ts"; import { DenoWorker } from "../patterns/worker_manager/deno.ts"; import { BaseWorkerManager } from "../patterns/worker_manager/mod.ts"; +import { WorkerPool } from "../patterns/worker_manager/pooling.ts"; import { EventHandler, TaskId } from "../patterns/worker_manager/types.ts"; import { Run, WorkflowEvent, WorkflowMessage } from "./types.ts"; const logger = getLogger(import.meta, "WARN"); +// TODO lazy + export type WorkflowSpec = { modulePath: string; }; @@ -21,26 +25,27 @@ export type WorkflowSpec = { */ export class WorkerManager extends BaseWorkerManager { - constructor() { - super((taskId: TaskId) => { - return new DenoWorker(taskId, import.meta.resolve("./worker.ts")); - }); - } - - destroyWorker(name: string, runId: string) { - return super.destroyWorker(name, runId); + static #pool: + | WorkerPool + | null = null; + static #getPool() { + if (!WorkerManager.#pool) { + WorkerManager.#pool = new WorkerPool( + "substantial workflows", + // TODO load from config + { + minWorkers: globalConfig.min_substantial_workers, + maxWorkers: globalConfig.max_substantial_workers, + waitTimeoutMs: globalConfig.substantial_worker_wait_timeout_ms, + }, + (id: string) => new DenoWorker(id, import.meta.resolve("./worker.ts")), + ); + } + return WorkerManager.#pool!; } - destroyAllWorkers() { - logger.warn( - `Destroying workers for ${ - this - .getActiveTaskNames() - .map((w) => `"${w}"`) - .join(", ") - }`, - ); - super.destroyAllWorkers(); + constructor() { + super(WorkerManager.#getPool()); } isOngoing(runId: TaskId) { @@ -77,7 +82,7 @@ export class WorkerManager logger.info(`trigger ${msg.type} for ${runId}`); } - triggerStart( + async triggerStart( name: string, runId: string, workflowModPath: string, @@ -85,7 +90,7 @@ export class WorkerManager schedule: string, internalTCtx: TaskContext, ) { - this.createWorker(name, runId, { + await this.delegateTask(name, runId, { modulePath: workflowModPath, }); this.sendMessage(runId, { diff --git a/src/typegate/src/runtimes/wit_wire/mod.ts b/src/typegate/src/runtimes/wit_wire/mod.ts index 0baa2c11d..18c236d4f 100644 --- a/src/typegate/src/runtimes/wit_wire/mod.ts +++ b/src/typegate/src/runtimes/wit_wire/mod.ts @@ -9,7 +9,7 @@ import { getLogger } from "../../log.ts"; const logger = getLogger(import.meta); -const METATYPE_VERSION = "0.5.0"; +const METATYPE_VERSION = "0.5.1-rc.0"; export class WitWireMessenger { static async init( diff --git a/src/typegate/src/typegraphs/prisma_migration.json b/src/typegate/src/typegraphs/prisma_migration.json index 96cc49650..c47272996 100644 --- a/src/typegate/src/typegraphs/prisma_migration.json +++ b/src/typegate/src/typegraphs/prisma_migration.json @@ -64,17 +64,17 @@ }, { "type": "string", - "title": "root_diff_fn_input_typegraph_string" + "title": "string_57769" }, { "type": "optional", - "title": "root_diff_fn_input_runtime_root_diff_fn_input_typegraph_string_optional", + "title": "string_57769_optional_cbd28", "item": 3, "default_value": null }, { "type": "boolean", - "title": "root_diff_fn_input_script_boolean" + "title": "boolean_3ee65" }, { "type": "object", @@ -134,7 +134,7 @@ }, { "type": "list", - "title": "root_apply_fn_output_appliedMigrations_root_diff_fn_input_typegraph_string_list", + "title": "string_57769_list_3054b", "items": 3 }, { diff --git a/src/typegraph/core/Cargo.toml b/src/typegraph/core/Cargo.toml index c1a1abaa0..1f3fb79a1 100644 --- a/src/typegraph/core/Cargo.toml +++ b/src/typegraph/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "typegraph_core" -version = "0.5.0" +version = "0.5.1-rc.0" edition = "2021" [lib] diff --git a/src/typegraph/core/src/global_store.rs b/src/typegraph/core/src/global_store.rs index fd50066cd..a0c6f7dd4 100644 --- a/src/typegraph/core/src/global_store.rs +++ b/src/typegraph/core/src/global_store.rs @@ -105,7 +105,7 @@ impl Store { thread_local! { pub static STORE: RefCell = RefCell::new(Store::new()); - pub static SDK_VERSION: String = "0.5.0".to_owned(); + pub static SDK_VERSION: String = "0.5.1-rc.0".to_owned(); } fn with_store T>(f: F) -> T { diff --git a/src/typegraph/deno/deno.json b/src/typegraph/deno/deno.json index 6baa3fd40..f2df2978e 100644 --- a/src/typegraph/deno/deno.json +++ b/src/typegraph/deno/deno.json @@ -1,6 +1,6 @@ { "name": "@typegraph/sdk", - "version": "0.5.0", + "version": "0.5.1-rc.0", "publish": { "exclude": [ "!src/gen", diff --git a/src/typegraph/python/pyproject.toml b/src/typegraph/python/pyproject.toml index b3bc83d44..5ecd27b5b 100644 --- a/src/typegraph/python/pyproject.toml +++ b/src/typegraph/python/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "typegraph" -version = "0.5.0" +version = "0.5.1-rc.0" description = "Declarative API development platform. Build backend components with WASM, Typescript and Python, no matter where and how your (legacy) systems are." authors = ["Metatype Contributors "] license = "MPL-2.0" diff --git a/src/typegraph/python/typegraph/__init__.py b/src/typegraph/python/typegraph/__init__.py index 472f696ba..20c403207 100644 --- a/src/typegraph/python/typegraph/__init__.py +++ b/src/typegraph/python/typegraph/__init__.py @@ -5,4 +5,4 @@ from typegraph.policy import Policy # noqa from typegraph import effects as fx # noqa -version = "0.5.0" +version = "0.5.1-rc.0" diff --git a/src/xtask/Cargo.toml b/src/xtask/Cargo.toml index 9892f82a0..a49abb839 100644 --- a/src/xtask/Cargo.toml +++ b/src/xtask/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xtask" -version = "0.5.0" +version = "0.5.1-rc.0" edition = "2021" # this allows us to exclude the rust files diff --git a/tests/e2e/published/sdk_test.ts b/tests/e2e/published/sdk_test.ts index 90463ca73..a7762e0a4 100644 --- a/tests/e2e/published/sdk_test.ts +++ b/tests/e2e/published/sdk_test.ts @@ -31,7 +31,8 @@ for (const version of previousVersions) { async teardown() { await testConfig.clearSyncData(); }, - ignore: version === LATEST_RELEASE_VERSION, + // TODO re-enable after next release + ignore: true, }, async (t) => { const { publishedBin, examplesDir } = await downloadSteps(t, version); diff --git a/tests/e2e/published/typegate_upgrade_test.ts b/tests/e2e/published/typegate_upgrade_test.ts index b422e5e18..1fac95af6 100644 --- a/tests/e2e/published/typegate_upgrade_test.ts +++ b/tests/e2e/published/typegate_upgrade_test.ts @@ -33,7 +33,8 @@ Meta.test( async teardown() { await testConfig.clearSyncData(); }, - ignore: previousVersion === "0.4.10", + // FIXME grpc.ts fails deployment on 0.5.0 + ignore: true, }, async (t) => { let publishedBin = ""; @@ -63,23 +64,6 @@ Meta.test( 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 () => { @@ -115,12 +99,29 @@ Meta.test( }, ); + 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(); + const typegraphs: string[] = []; 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 '(.+)'/); diff --git a/tests/metagen/__snapshots__/metagen_test.ts.snap b/tests/metagen/__snapshots__/metagen_test.ts.snap index 355d8dd03..bccdff370 100644 --- a/tests/metagen/__snapshots__/metagen_test.ts.snap +++ b/tests/metagen/__snapshots__/metagen_test.ts.snap @@ -454,7 +454,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0"; + static MT_VERSION: &str = "0.5.1-rc.0"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } @@ -1253,7 +1253,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0"; + static MT_VERSION: &str = "0.5.1-rc.0"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } diff --git a/tests/metagen/typegraphs/sample/rs/Cargo.toml b/tests/metagen/typegraphs/sample/rs/Cargo.toml index a3b710bca..33102bc1b 100644 --- a/tests/metagen/typegraphs/sample/rs/Cargo.toml +++ b/tests/metagen/typegraphs/sample/rs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "sample_client" edition = "2021" -version = "0.5.0" +version = "0.5.1-rc.0" [dependencies] metagen-client.workspace = true diff --git a/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml b/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml index 699c850d4..7d12e3dfc 100644 --- a/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml +++ b/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "sample_client_upload" edition = "2021" -version = "0.5.0" +version = "0.5.1-rc.0" [dependencies] metagen-client.workspace = true diff --git a/tests/patterns/worker_manager/pooling_test.ts b/tests/patterns/worker_manager/pooling_test.ts new file mode 100644 index 000000000..d5c59794b --- /dev/null +++ b/tests/patterns/worker_manager/pooling_test.ts @@ -0,0 +1,78 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { + createSimpleWaitQueue, + WaitQueueWithTimeout, +} from "@metatype/typegate/runtimes/patterns/worker_manager/pooling.ts"; +import { assert, assertEquals, assertFalse, assertRejects } from "@std/assert"; +import { delay } from "@std/async/delay"; + +Deno.test("simple wait queue", (t) => { + const queue = createSimpleWaitQueue(); + + const history: number[] = []; + + assertFalse(queue.shift(() => 1)); + + queue.push((v) => history.push(v), () => {}); + assertEquals(history.length, 0); + assert(queue.shift(() => 2)); + assertEquals(history.length, 1); + assertEquals(history[0], 2); + + assertFalse(queue.shift(() => 1)); + + queue.push((v) => history.push(v), () => {}); + assertEquals(history.length, 1); + assert(queue.shift(() => 3)); + assertEquals(history.length, 2); + assertEquals(history[1], 3); +}); + +Deno.test("wait queue with timeout", async (t) => { + using queue = new WaitQueueWithTimeout(100); + await t.step("succeed with sync execution", async () => { + const history: number[] = []; + + assertFalse(queue.shift(() => 1)); + + queue.push((v) => history.push(v), () => {}); + assertEquals(history.length, 0); + assert(queue.shift(() => 2)); + assertEquals(history.length, 1); + assertEquals(history[0], 2); + + assertFalse(queue.shift(() => 1)); + + queue.push((v) => history.push(v), () => {}); + assertEquals(history.length, 1); + assert(queue.shift(() => 3)); + assertEquals(history.length, 2); + assertEquals(history[1], 3); + }); + + await t.step("succeed with small delay", async () => { + const resolvers = Promise.withResolvers(); + queue.push(resolvers.resolve, () => resolvers.reject(new Error("timeout"))); + await delay(50); + assert(queue.shift(() => 4)); + assertEquals(await resolvers.promise, 4); + }); + + await t.step("fail with timeout", async () => { + const resolvers = Promise.withResolvers(); + queue.push(resolvers.resolve, () => resolvers.reject(new Error("timeout"))); + // assertEquals(history.length, 2); + await assertRejects( + () => + Promise.race([ + delay(100).then(() => false), + resolvers.promise.then(() => true), + ]), + Error, + "timeout", + ); + await delay(100); + }); +}); diff --git a/tests/runtimes/wasm_reflected/rust/Cargo.toml b/tests/runtimes/wasm_reflected/rust/Cargo.toml index 9125fe278..9b65d3e58 100644 --- a/tests/runtimes/wasm_reflected/rust/Cargo.toml +++ b/tests/runtimes/wasm_reflected/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust" -version = "0.5.0" +version = "0.5.1-rc.0" edition = "2021" [lib] diff --git a/tools/consts.ts b/tools/consts.ts index 60140a8be..b262488a2 100644 --- a/tools/consts.ts +++ b/tools/consts.ts @@ -1,9 +1,9 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 -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 CURRENT_VERSION = "0.5.1-rc.0"; +export const LATEST_RELEASE_VERSION = "0.5.0"; +export const LATEST_PRE_RELEASE_VERSION = null; export const GHJK_VERSION = "v0.2.1"; export const GHJK_ACTION_VERSION = "318209a9d215f70716a4ac89dbeb9653a2deb8bc"; export const RUST_VERSION = "1.80.1"; diff --git a/tools/tasks/lock.ts b/tools/tasks/lock.ts index ac4230788..ac16609f3 100644 --- a/tools/tasks/lock.ts +++ b/tools/tasks/lock.ts @@ -65,15 +65,16 @@ export function validateVersions() { const latestRelease = semver.parse(consts.LATEST_RELEASE_VERSION); const prerelease = currentVersion.prerelease ?? []; const isPreRelease = prerelease.length > 0; - const latestPreRelease = isPreRelease - ? semver.parse(consts.LATEST_PRE_RELEASE_VERSION) - : null; + const latestPreRelease = + isPreRelease && consts.LATEST_PRE_RELEASE_VERSION != null + ? semver.parse(consts.LATEST_PRE_RELEASE_VERSION) + : null; if (!isPreRelease || (isPreRelease && prerelease[1] == 0)) { assert(latestPreRelease == null, "expected no latest pre-release version"); } - if (isPreRelease) { + if (latestPreRelease) { assert( semver.greaterThan(currentVersion, latestPreRelease!), "expected current version to be greater than latest pre-release version",