diff --git a/.ghjk/deno.lock b/.ghjk/deno.lock index b5bce0a918..92d4c3d2ff 100644 --- a/.ghjk/deno.lock +++ b/.ghjk/deno.lock @@ -95,7 +95,11 @@ "https://raw.github.com/metatypedev/ghjk/44d9a41/deps/common.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/deps/common.ts", "https://raw.github.com/metatypedev/ghjk/44d9a41/mod.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/mod.ts", "https://raw.github.com/metatypedev/ghjk/44d9a41/ports/mod.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/mod.ts", - "https://raw.github.com/metatypedev/ghjk/44d9a41/std.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/std.ts" + "https://raw.github.com/metatypedev/ghjk/44d9a41/std.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/std.ts", + "https://raw.github.com/metatypedev/ghjk/8d50518/deps/common.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/deps/common.ts", + "https://raw.github.com/metatypedev/ghjk/8d50518/mod.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/mod.ts", + "https://raw.github.com/metatypedev/ghjk/8d50518/ports/mod.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/mod.ts", + "https://raw.github.com/metatypedev/ghjk/8d50518/std.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/std.ts" }, "remote": { "https://deno.land/std@0.116.0/_util/assert.ts": "2f868145a042a11d5ad0a3c748dcf580add8a0dbc0e876eaa0026303a5488f58", @@ -978,6 +982,156 @@ "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/mod.ts": "25bfdd222d6afec5b3f0a7e647e3d9b12abed6d222b49a4b2e95c6bbe266f533", "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/unarchive.ts": "f6d0e9e75f470eeef5aecd0089169f4350fc30ebfdc05466bb7b30042294d6d3", "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/url.ts": "e1ada6fd30fc796b8918c88456ea1b5bbd87a07d0a0538b092b91fd2bb9b7623", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62" + "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/deps/cli.ts": "aac025f9372ad413b9c2663dc7f61affd597820d9448f010a510d541df3b56ea", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/deps/common.ts": "f775710b66a9099b98651cd3831906466e9b83ef98f2e5c080fd59ee801c28d4", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/deps/ports.ts": "3c60d1f7ab626ffdd81b37f4e83a780910936480da8fe24f4ccceaefa207d339", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/files/mod.ts": "a934ddb4803896e27b40644fe75623d584e01f30bbe1e16eb26bd772aa5b6064", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/host/types.ts": "f450d9b9c0eced2650262d02455aa6f794de0edd6b052aade256882148e5697f", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/install/mod.ts": "aa54eb3e119f28d33e61645c89669da292ee00376068ead8f45be2807e7a9989", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/install/utils.ts": "d4634d4fc0e963f540402b4ca7eb5dcba340eaa0d8fceb43af57d722ad267115", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/mod.ts": "1d31b4f801ae2ebad052d219236699c4f227b6ce53c6e5016deaed5fcd00dbb6", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/envs/inter.ts": "84805fa208754a08f185dca7a5236de3760bbc1d0df96af86ea5fd7778f827a2", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/envs/mod.ts": "5f37b9f155808f8d6d51e1f16f58c07914d8c7d8070bc5c2fb5076ab748798a7", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/envs/posix.ts": "09e410e3fea9c303a5148ff2a22697474320442b9fea0bd3fc932d6828fe820f", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/envs/reducer.ts": "50517084caaf73ce6618141ee4d97795060a0d3169651da7abd7251a3204465a", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/envs/types.ts": "ab9715cf02e9d73f553ae757db347863be23e1e9daf94d18aab716fc27b3dbc1", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/mod.ts": "fc1cb9176c6557b44ae9c6536fa51c6c4f80ac01fc476d15b0a217e70cb0d176", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/ambient.ts": "823ec8d98702a60e6bfcdbeb64b69dc9f5039e73a1f10e87cd51210c1aaf52d5", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/base.ts": "8ef8a8de372420bddcd63a1b363937f43d898059e99478a58621e8432bcd5891", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/db.ts": "a309d1058f66079a481141c3f1733d928b9af8a37b7ce911b1228f70fd24df0f", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/ghrel.ts": "ebbc30a5c31244131d937eadca73fbc099c9e7bdf0ad4f668766d4388ede143c", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/inter.ts": "b3999e73d73d7f928a8de86e5e2261fe6b1450ceedfb54f24537bf0803532ed0", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/mod.ts": "78db7040e724f84c95b1a0fdeaf0cfc53382482e8905cd352189756b953556cc", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/reducers.ts": "d04e813652101f67f946242df68429ed5540e499fbdb7776b8be5703f16754c8", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/std.ts": "985902519aafef6e8e6aecc8922e70abdea5b8e97d5439bf94338b93242fe11f", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/sync.ts": "a7a297f6b098360d56af168692f3cff96f8ceeb5189e5baa249e094f8d9c42ef", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/types.ts": "f4dbd1a3f4b7f539b3a85418617d25adbf710b54144161880d48f6c4ec032eee", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/types/platform.ts": "0ecffeda71919293f9ffdb6c564ddea4f23bc85c4e640b08ea78225d34387fdc", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/utils.ts": "6b14b331cce66bd46e7aec51f02424327d819150f16d3f72a6b0aaf7aee43c09", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/ports/worker.ts": "6b76ba1efb2e47a82582fc48bcc6264fe153a166beffccde1a9a3a185024c337", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/std.ts": "419d6b04680f73f7b252257ab287d68c1571cee4347301c53278e2b53df21c4a", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/tasks/deno.ts": "2b61092e13787df2e9b310702b78259d7af912d53b3957bc1c91a6669cdc53c0", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/tasks/exec.ts": "dd92c2d73f7e8d7f942799ec8216ff0e1b334b7ef3997af55a18edee1b6fe42a", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/tasks/inter.ts": "63e8f2860f7e3b4d95b6f61ca56aeb8567e4f265aa9c22cace6c8075edd6210f", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/tasks/mod.ts": "334b18d7c110cc05483be96353e342425c0033b7410c271a8a47d2b18308c73e", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/tasks/types.ts": "072a34bd0749428bad4d612cc86abe463d4d4f74dc56cf0a48a1f41650e2399b", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/modules/types.ts": "c0f212b686a2721d076e9aeb127596c7cbc939758e2cc32fd1d165a8fb320a87", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/port.ts": "c039a010dee7dfd978478cf4c5e2256c643135e10f33c30a09f8db9915e9d89d", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/act.ts": "2ce6b8fddf61db12ba69b7cad6985237a2962ca79853edbddee5bfb49c47d1ab", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/asdf.ts": "11d41bcad5981e014478343270f05bac265990e801c525e3288113d89bd287be", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/asdf_plugin_git.ts": "a3742fcd994ded231febf33754b087ab56393a799297b26315c2cf8a388a7f82", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/cargo-binstall.ts": "72860580e6f6db9ec7ba74dbe391ad98ed49b4ff43247661b27701f4e683d41b", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/cargobi.ts": "2bf25e20c19acf7badbaa01817263f9924dd3c31b0aaa934a8b6769e235f8a57", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/cmake.ts": "2359a20318694912fea281b144dbcbe542b3c2de72fc3da114e717d2afcd94e1", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/cpy_bs.ts": "4066e5eb094e72be4dec2428fb7f99231dcc5c4e2db7b5ea2373a9ad9ce28662", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/curl.ts": "58acd2a158187f448d940f45bfcd87c9b4884db127dcbaaaef27258bb4ebce92", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/deno_ghrel.ts": "eca02a93ceb62ad9fb7f395361d32da0d5657aba5f7856c8ae0109135da0e070", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/earthly.ts": "7a3c8cae1631f670105a63bc41c47a49da6fc777968c0e9546c55d43fa418619", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/git.ts": "2e68f1fa5ba534ee32db204bcc357f987437dffe5d87c1a0a9c47850fa654419", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/infisical.ts": "77789ea377250f0e762d01f1a8d378636bc520e7291aa9e82c5321c4059b6205", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/jq_ghrel.ts": "f685342c833c96637732fb28556f411f4537e85292046473f2b0d7f28c66ec8c", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/meta_cli_ghrel.ts": "0d5128cd3a15eece3fdf49c0697f5354e37ede6388e058dde572699634df1464", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/mod.ts": "a25ca4a4ca5e640ef436195cd0b5d0b1be33fa7f770e2d40a8eec6fb2b23838a", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/mold.ts": "b916227b48d7aa307ccc7d54c66724a41baa67be82bd558b5b9a35db4179c2f3", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/node.ts": "a98a095d3405a4907acfb620ff43babb0771d51ecaed87af8d1816c1cecd009b", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/npmi.ts": "056c7e733b1157601647630b9d460f19b5416dccc20415dd275d7ce972f09c39", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/opentofu_ghrel.ts": "46ef05d30772d36b91d88a2dc1aae31e096c59ba6ecf82af08359996c1476725", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/pipi.ts": "a4abf1bd197f01e0fbc68bfb60bdb43849d9719654e1033820d3fb4ce4f36449", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/pnpm.ts": "41e7f473a687123ae96ab14a3a04f67ef0c4b44eea6747448826dbdae00bfdde", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/protoc.ts": "ef93af8f37d8186c2220b6d2f760b5da10decaa3e9fe7768003ee319d32335bf", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/ruff.ts": "2a3246bf3d21482ea62c3e801e58ef760fa6b30d4652e5be55c9051ecf6df72e", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/rust.ts": "264e755c4fedb9d6a68b94a3dd2e23d3bff2e6ab538a57babf5d94afa4800deb", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/rustup.ts": "0a8033d24fb6be84585db545b2592b868d36182907565fe23454e9a0262618cc", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/tar.ts": "c3c43a99f8a9b1c160286cbc6240f59658d994856eeacaee479f645ece44d6c4", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/temporal_cli.ts": "a5db59114e294b58715349e72e3d7e868274d4a25d7de027afa0470c5585ed9c", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/terraform.ts": "035fbdd3a6b858bd302c440fc0a588fb40ae57959685af837f8a4e34302b55a7", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/unzip.ts": "c4559c627246f9c051571bbdff8c63ab15780ffd9e71656a9055488cc3bf32c3", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/wasmedge.ts": "b74a35190b79be686d2c8615c291b883da21e0caea36a8a32340fba93694b8e0", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/ports/zstd.ts": "fb8334b7b43ef34ba60ad391460e2fabb62889f77eade7798c823b14842cea45", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/setup_logger.ts": "f8a206bda0595497d6f4718032d4a959000b32ef3346d4b507777eec6a169458", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/std.ts": "74515b1d816e643860b2a94409a49c08d8478d756c1fcae0dce95dde2c5c7162", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/std/copyLock.ts": "a47725f058cc8120914629bd0d4488345f168e80f1b3b286a64d4d1e919d6599", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/std/sedLock.ts": "115bcf40bb13435e579df24919d1a0f9be3d3ec96c442812c9ae4ceb335932aa", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/utils/logger.ts": "fcbafb35ae4b812412b9b301ce6d06b8b9798f94ebebe3f92677e25e4b19af3c", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/utils/mod.ts": "527f13e6196167deaa6c100b39dcb76d9a541afbe68d005d77776b668d07961f", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/utils/unarchive.ts": "f6d0e9e75f470eeef5aecd0089169f4350fc30ebfdc05466bb7b30042294d6d3", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/utils/url.ts": "e1ada6fd30fc796b8918c88456ea1b5bbd87a07d0a0538b092b91fd2bb9b7623", + "https://raw.githubusercontent.com/metatypedev/ghjk/8d50518/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/deps/cli.ts": "aac025f9372ad413b9c2663dc7f61affd597820d9448f010a510d541df3b56ea", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/deps/common.ts": "f775710b66a9099b98651cd3831906466e9b83ef98f2e5c080fd59ee801c28d4", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/deps/ports.ts": "3c60d1f7ab626ffdd81b37f4e83a780910936480da8fe24f4ccceaefa207d339", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/files/mod.ts": "a934ddb4803896e27b40644fe75623d584e01f30bbe1e16eb26bd772aa5b6064", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/host/types.ts": "f450d9b9c0eced2650262d02455aa6f794de0edd6b052aade256882148e5697f", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/install/mod.ts": "aa54eb3e119f28d33e61645c89669da292ee00376068ead8f45be2807e7a9989", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/install/utils.ts": "d4634d4fc0e963f540402b4ca7eb5dcba340eaa0d8fceb43af57d722ad267115", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/mod.ts": "1d31b4f801ae2ebad052d219236699c4f227b6ce53c6e5016deaed5fcd00dbb6", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/envs/inter.ts": "84805fa208754a08f185dca7a5236de3760bbc1d0df96af86ea5fd7778f827a2", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/envs/mod.ts": "5f37b9f155808f8d6d51e1f16f58c07914d8c7d8070bc5c2fb5076ab748798a7", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/envs/posix.ts": "09e410e3fea9c303a5148ff2a22697474320442b9fea0bd3fc932d6828fe820f", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/envs/reducer.ts": "50517084caaf73ce6618141ee4d97795060a0d3169651da7abd7251a3204465a", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/envs/types.ts": "ab9715cf02e9d73f553ae757db347863be23e1e9daf94d18aab716fc27b3dbc1", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/mod.ts": "fc1cb9176c6557b44ae9c6536fa51c6c4f80ac01fc476d15b0a217e70cb0d176", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/ambient.ts": "823ec8d98702a60e6bfcdbeb64b69dc9f5039e73a1f10e87cd51210c1aaf52d5", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/base.ts": "8ef8a8de372420bddcd63a1b363937f43d898059e99478a58621e8432bcd5891", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/db.ts": "a309d1058f66079a481141c3f1733d928b9af8a37b7ce911b1228f70fd24df0f", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/ghrel.ts": "ebbc30a5c31244131d937eadca73fbc099c9e7bdf0ad4f668766d4388ede143c", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/inter.ts": "b3999e73d73d7f928a8de86e5e2261fe6b1450ceedfb54f24537bf0803532ed0", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/mod.ts": "78db7040e724f84c95b1a0fdeaf0cfc53382482e8905cd352189756b953556cc", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/reducers.ts": "d04e813652101f67f946242df68429ed5540e499fbdb7776b8be5703f16754c8", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/std.ts": "985902519aafef6e8e6aecc8922e70abdea5b8e97d5439bf94338b93242fe11f", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/sync.ts": "a7a297f6b098360d56af168692f3cff96f8ceeb5189e5baa249e094f8d9c42ef", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/types.ts": "f4dbd1a3f4b7f539b3a85418617d25adbf710b54144161880d48f6c4ec032eee", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/types/platform.ts": "0ecffeda71919293f9ffdb6c564ddea4f23bc85c4e640b08ea78225d34387fdc", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/utils.ts": "6b14b331cce66bd46e7aec51f02424327d819150f16d3f72a6b0aaf7aee43c09", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/ports/worker.ts": "6b76ba1efb2e47a82582fc48bcc6264fe153a166beffccde1a9a3a185024c337", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/std.ts": "419d6b04680f73f7b252257ab287d68c1571cee4347301c53278e2b53df21c4a", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/tasks/deno.ts": "2b61092e13787df2e9b310702b78259d7af912d53b3957bc1c91a6669cdc53c0", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/tasks/exec.ts": "dd92c2d73f7e8d7f942799ec8216ff0e1b334b7ef3997af55a18edee1b6fe42a", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/tasks/inter.ts": "63e8f2860f7e3b4d95b6f61ca56aeb8567e4f265aa9c22cace6c8075edd6210f", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/tasks/mod.ts": "334b18d7c110cc05483be96353e342425c0033b7410c271a8a47d2b18308c73e", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/tasks/types.ts": "072a34bd0749428bad4d612cc86abe463d4d4f74dc56cf0a48a1f41650e2399b", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/modules/types.ts": "c0f212b686a2721d076e9aeb127596c7cbc939758e2cc32fd1d165a8fb320a87", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/port.ts": "c039a010dee7dfd978478cf4c5e2256c643135e10f33c30a09f8db9915e9d89d", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/act.ts": "2ce6b8fddf61db12ba69b7cad6985237a2962ca79853edbddee5bfb49c47d1ab", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/asdf.ts": "11d41bcad5981e014478343270f05bac265990e801c525e3288113d89bd287be", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/asdf_plugin_git.ts": "a3742fcd994ded231febf33754b087ab56393a799297b26315c2cf8a388a7f82", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargo-binstall.ts": "72860580e6f6db9ec7ba74dbe391ad98ed49b4ff43247661b27701f4e683d41b", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts": "51c95fe47132ee35df2cd34c67d10d2e53dc10edd438c0f4f70eb644e81f2563", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cmake.ts": "745bcfdbffdd5d7cb0314e4e618b764a3a0f7d19246ec8b9134b1ff981bc2091", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cpy_bs.ts": "4066e5eb094e72be4dec2428fb7f99231dcc5c4e2db7b5ea2373a9ad9ce28662", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/curl.ts": "58acd2a158187f448d940f45bfcd87c9b4884db127dcbaaaef27258bb4ebce92", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/deno_ghrel.ts": "eca02a93ceb62ad9fb7f395361d32da0d5657aba5f7856c8ae0109135da0e070", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/earthly.ts": "7a3c8cae1631f670105a63bc41c47a49da6fc777968c0e9546c55d43fa418619", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/git.ts": "2e68f1fa5ba534ee32db204bcc357f987437dffe5d87c1a0a9c47850fa654419", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/infisical.ts": "77789ea377250f0e762d01f1a8d378636bc520e7291aa9e82c5321c4059b6205", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/jq_ghrel.ts": "f685342c833c96637732fb28556f411f4537e85292046473f2b0d7f28c66ec8c", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/meta_cli_ghrel.ts": "0d5128cd3a15eece3fdf49c0697f5354e37ede6388e058dde572699634df1464", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/mod.ts": "a25ca4a4ca5e640ef436195cd0b5d0b1be33fa7f770e2d40a8eec6fb2b23838a", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/mold.ts": "b916227b48d7aa307ccc7d54c66724a41baa67be82bd558b5b9a35db4179c2f3", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/node.ts": "a98a095d3405a4907acfb620ff43babb0771d51ecaed87af8d1816c1cecd009b", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/npmi.ts": "056c7e733b1157601647630b9d460f19b5416dccc20415dd275d7ce972f09c39", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/opentofu_ghrel.ts": "46ef05d30772d36b91d88a2dc1aae31e096c59ba6ecf82af08359996c1476725", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pipi.ts": "a4abf1bd197f01e0fbc68bfb60bdb43849d9719654e1033820d3fb4ce4f36449", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pnpm.ts": "41e7f473a687123ae96ab14a3a04f67ef0c4b44eea6747448826dbdae00bfdde", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/protoc.ts": "ef93af8f37d8186c2220b6d2f760b5da10decaa3e9fe7768003ee319d32335bf", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/ruff.ts": "2a3246bf3d21482ea62c3e801e58ef760fa6b30d4652e5be55c9051ecf6df72e", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/rust.ts": "e8b58f3ccb5411f0bba4bf3aadc040017da11eab4f6820cee03ab8f764383ca2", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/rustup.ts": "0a8033d24fb6be84585db545b2592b868d36182907565fe23454e9a0262618cc", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/tar.ts": "c3c43a99f8a9b1c160286cbc6240f59658d994856eeacaee479f645ece44d6c4", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/temporal_cli.ts": "a5db59114e294b58715349e72e3d7e868274d4a25d7de027afa0470c5585ed9c", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/terraform.ts": "035fbdd3a6b858bd302c440fc0a588fb40ae57959685af837f8a4e34302b55a7", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/unzip.ts": "c4559c627246f9c051571bbdff8c63ab15780ffd9e71656a9055488cc3bf32c3", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/wasmedge.ts": "b74a35190b79be686d2c8615c291b883da21e0caea36a8a32340fba93694b8e0", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/zstd.ts": "fb8334b7b43ef34ba60ad391460e2fabb62889f77eade7798c823b14842cea45", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/setup_logger.ts": "f8a206bda0595497d6f4718032d4a959000b32ef3346d4b507777eec6a169458", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/std.ts": "74515b1d816e643860b2a94409a49c08d8478d756c1fcae0dce95dde2c5c7162", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/std/copyLock.ts": "a47725f058cc8120914629bd0d4488345f168e80f1b3b286a64d4d1e919d6599", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/std/sedLock.ts": "115bcf40bb13435e579df24919d1a0f9be3d3ec96c442812c9ae4ceb335932aa", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/utils/logger.ts": "fcbafb35ae4b812412b9b301ce6d06b8b9798f94ebebe3f92677e25e4b19af3c", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/utils/mod.ts": "647acf23e785d1a44b1d1da53d238fa9d921ccf841b5e65d01c8be0589118395", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/utils/unarchive.ts": "f6d0e9e75f470eeef5aecd0089169f4350fc30ebfdc05466bb7b30042294d6d3", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/utils/url.ts": "e1ada6fd30fc796b8918c88456ea1b5bbd87a07d0a0538b092b91fd2bb9b7623", + "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62" } } diff --git a/.ghjk/lock.json b/.ghjk/lock.json index aa361c9de9..2a504a1c10 100644 --- a/.ghjk/lock.json +++ b/.ghjk/lock.json @@ -5,8 +5,8 @@ "ports": { "version": "0", "configResolutions": { - "bciqos5q4e7g5ykw7yzckpb5uiflkked5rxsjsniknwlsbldm4q3nvcy": { - "version": "v1.43.6", + "bciqf3eso3sdsxu4og5w6igw3mphr3ipbntahdnhe2kwlgci6osntcfq": { + "version": "v1.45.2", "buildDepConfigs": {}, "portRef": "deno_ghrel@0.1.0", "specifiedVersion": true @@ -17,64 +17,71 @@ "portRef": "protoc_ghrel@0.1.0", "specifiedVersion": true }, - "bciqe6tpdv6hffdbc7hql52w3ivpdls47lgpuhsa3hzsryrwx7ty5dgy": { - "version": "3.30.0", + "bciqmpujkkyxmzdz7sxpvi2pmajzfmg6gofplyqn43av2styxu2ng7sy": { + "version": "7.81.0", + "buildDepConfigs": {}, + "portRef": "curl_aa@0.1.0", + "specifiedVersion": false + }, + "bciqngfjdds2gmnwhriiif3fjgqw2hhpm3ssqxlnq4kiwyk53uesmzgy": { + "version": "3.30.1", "buildDepConfigs": { - "cpy_bs_ghrel": { - "version": "3.12.2", + "curl_aa": { + "version": "7.81.0", + "buildDepConfigs": {}, + "portRef": "curl_aa@0.1.0", + "specifiedVersion": false + }, + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + }, + "asdf_plugin_git": { + "version": "d631481e96", "buildDepConfigs": { - "tar_aa": { - "version": "1.35", - "buildDepConfigs": {}, - "portRef": "tar_aa@0.1.0", - "specifiedVersion": false - }, - "zstd_aa": { - "version": "v1.5.6,", + "git_aa": { + "version": "2.34.1", "buildDepConfigs": {}, - "portRef": "zstd_aa@0.1.0", + "portRef": "git_aa@0.1.0", "specifiedVersion": false } }, - "portRef": "cpy_bs_ghrel@0.1.0", - "releaseTag": "20240224", - "specifiedVersion": true + "portRef": "asdf_plugin_git@0.1.0", + "pluginRepo": "https://github.com/asdf-community/asdf-cmake", + "specifiedVersion": false } }, - "portRef": "pipi_pypi@0.1.0", - "packageName": "cmake", + "resolutionDepConfigs": { + "asdf_plugin_git": { + "pluginRepo": "https://github.com/asdf-community/asdf-cmake", + "portRef": "asdf_plugin_git@0.1.0" + } + }, + "portRef": "asdf@0.1.0", + "pluginRepo": "https://github.com/asdf-community/asdf-cmake", + "installType": "version", "specifiedVersion": false }, - "bciqfoek3nbk2jfcgfx5323wcco2bmml75tgrsjgxbdhxe5dn3isgjgi": { - "version": "3.12.2", + "bciqay4m4kmzfduj5t2clgejxgpe5zwper6lyyaxt7rhbjalaqd32nhq": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + }, + "bciqj77qfidghicv6joxixetnt5j3pdpo4j42exeghzsotetd5yhmpui": { + "version": "d631481e96", "buildDepConfigs": { - "tar_aa": { - "version": "1.35", - "buildDepConfigs": {}, - "portRef": "tar_aa@0.1.0", - "specifiedVersion": false - }, - "zstd_aa": { - "version": "v1.5.6,", + "git_aa": { + "version": "2.34.1", "buildDepConfigs": {}, - "portRef": "zstd_aa@0.1.0", + "portRef": "git_aa@0.1.0", "specifiedVersion": false } }, - "portRef": "cpy_bs_ghrel@0.1.0", - "releaseTag": "20240224", - "specifiedVersion": true - }, - "bciqj4p5hoqweghbuvz52rupja7sqze34z63dd62nz632c5zxikv6ezy": { - "version": "1.35", - "buildDepConfigs": {}, - "portRef": "tar_aa@0.1.0", - "specifiedVersion": false - }, - "bciqe6fwheayositrdk7rkr2ngdr4wizldakex23tgivss7w6z7g3q3y": { - "version": "v1.5.6,", - "buildDepConfigs": {}, - "portRef": "zstd_aa@0.1.0", + "portRef": "asdf_plugin_git@0.1.0", + "pluginRepo": "https://github.com/asdf-community/asdf-cmake", "specifiedVersion": false }, "bciqkv7foyoio4wpti4yf2qrw5nphkgk2din6ba7mjv2w7hmgrv725ja": { @@ -107,7 +114,7 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -140,7 +147,7 @@ "specifiedVersion": false }, "bciqeub366wrduva4y3rxegdjkhlebwsud56e5orgcpbkdrbhuxmvuxa": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -160,12 +167,6 @@ "profile": "minimal", "specifiedVersion": false }, - "bciqay4m4kmzfduj5t2clgejxgpe5zwper6lyyaxt7rhbjalaqd32nhq": { - "version": "2.45.2", - "buildDepConfigs": {}, - "portRef": "git_aa@0.1.0", - "specifiedVersion": false - }, "bciqewpyjyfnnk4rbd6bbu5who2w6ve7dyt3inal72zg23cs4qnln32q": { "version": "1.27.1", "buildDepConfigs": { @@ -189,7 +190,7 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -225,13 +226,13 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", "buildDepConfigs": { "git_aa": { - "version": "2.45.2", + "version": "2.34.1", "buildDepConfigs": {}, "portRef": "git_aa@0.1.0", "specifiedVersion": false @@ -295,7 +296,7 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -331,7 +332,7 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -483,7 +484,7 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -519,7 +520,7 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -624,7 +625,7 @@ "specifiedVersion": false }, "rust_rustup": { - "version": "1.78.0", + "version": "1.79.0", "buildDepConfigs": { "rustup_rustlang": { "version": "1.27.1", @@ -649,6 +650,336 @@ "crateName": "cargo-udeps", "locked": true, "specifiedVersion": true + }, + "bciqkdikxlnvysolt3rirxozdyaovts5jo7e6zdhto7pjgxss4rkjeui": { + "version": "0.5.0", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "whiz", + "locked": true, + "specifiedVersion": false + }, + "bciqdm4ezstna7wryjatl75thl72622466u4ht2y25dkhvgu76kcnemi": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + }, + "bciqg6addm4t4fpqgkcpukqvbdrkscd56popl3at6aljs4tfnsfl3iki": { + "version": "0.3.4", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "wit-deps-cli", + "locked": true, + "specifiedVersion": false + }, + "bciqjt35de5uwbp3qv3idkj7or2pu2gcun5jjkdttfupyuseslmjny5i": { + "version": "2.4.0", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "git-cliff", + "locked": true, + "specifiedVersion": false + }, + "bciqnvknjnd6ivod4sz4usxxbxmhhyp4kiahvyy4yn6erblbzfu2s7na": { + "version": "1.33.0", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "cargo-insta", + "locked": true, + "specifiedVersion": true + }, + "bciqgustga36b3bmjpi76xcde43z3efxo2czwmvotcxlktxkhcizywiq": { + "version": "0.2.5", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "cross", + "locked": true, + "specifiedVersion": true + }, + "bciqow7vi5yxnhumjr3am67ct5pnavar2e55wp2vlddesl43oyppw5kq": { + "version": "0.116.1", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "wasm-opt", + "locked": true, + "specifiedVersion": true + }, + "bciqgrinxolr2jfyj4smh3w5vwz6n4aacistocxbat5pz2fwf23glslq": { + "version": "1.208.1", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "wasm-tools", + "locked": true, + "specifiedVersion": true + }, + "bciqe6sahnduk5kofaohmecai2ip7ipjakg7rn32ezstllzr5nixmhyi": { + "version": "nightly-2024-05-26", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + }, + "bciqmdyyew3oomtpx6rnfqnnehe4inls4wf26fq6nat6uxd3oqjwlmyi": { + "version": "0.1.47", + "buildDepConfigs": { + "cargo_binstall_ghrel": { + "version": "v1.7.4", + "buildDepConfigs": {}, + "portRef": "cargo_binstall_ghrel@0.1.0", + "specifiedVersion": false + }, + "rust_rustup": { + "version": "1.79.0", + "buildDepConfigs": { + "rustup_rustlang": { + "version": "1.27.1", + "buildDepConfigs": { + "git_aa": { + "version": "2.34.1", + "buildDepConfigs": {}, + "portRef": "git_aa@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rustup_rustlang@0.1.0", + "specifiedVersion": false + } + }, + "portRef": "rust_rustup@0.1.0", + "profile": "minimal", + "specifiedVersion": true + } + }, + "portRef": "cargobi_cratesio@0.1.0", + "crateName": "cargo-udeps", + "locked": true, + "specifiedVersion": true } } }, @@ -667,207 +998,207 @@ "sets": { "ghjkEnvProvInstSet___main": { "installs": [ - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq" + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet____rust": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet___dev": { "installs": [ - "bciqdvjio2pm2doenrjto6ie2rooebfzk36rfdqfhp764gynvwwwlzli", - "bciqbs34bxkpv5splgajo6lbi7qabrvfygukt23qjtkk3qqf2vxsw46a", - "bciqklnhhbhk3a4jgkm2azdm63nimlphee7bq5cpewg6tqgei624egzq", - "bciqltjx5hrqf2qxibmasyab2aac23ovagtny5eu7xkr7kk66dsqicxq", - "bciqgl7wiw37nktektcqcxy6lqfiect4xqw5h3tmomoscurjsvsd7eea", - "bciqklz4j7zc46l4lwzjjpdradi6sy4mfd5ey27rrslcfxrdcvtek5ya", - "bciqhw6s67have7n4q3kefgvuekg7gktbkkvleadoufl2wpxzag3psyy", - "bciqf62kkjssayjkrr36rr3x3hrpiwiirlmn4exjz46veeaxp32bdqna", - "bciqa6vvvgr27kbbhvyc6hfbszfjkc5x4tssqicefmmljx2myuqwokdq", - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq", - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa", - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha", - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq", - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka", - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy", - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy", - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri" + "bciqddqzemyb6kw24f2nhhy7hyfo62ytfjllvdnfhurqhb7qqlvo4noa", + "bciql6pq2bc6uxp7z5luxf3nn44bx3vdqo7fsz6sonammtbpwsdmwxcy", + "bciqllhtecyu5p4isjgutrvnb2xgkrryhxy6ooacn5p6ol2rriku6zwy", + "bciqfbafead64bhnmec2sxcnc7v4c4m4p4pgehp5fjihkwqxkzkldmoi", + "bciqn62icb2lxjafe2jzh53frwkycch2tk22lhk5aqkhsdl7cwjbpmji", + "bciqjq7sv663snw57fsybwrfefbjibkn6t4psfbd2r3dodboafhr6lmq", + "bciqpqesmcpthtkaswi5pb25yqmdea674er4cz7nl2fsa6lsii6ludwa", + "bciqctytzcjsv7qqv7kynxwfniayjlocaigb2aihikhlrgt5lab3p32i", + "bciqm2woxgqgrhy7aa2mqhrbkce7o7xs65iabadfpqyh3xqre5glgsaa", + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a", + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi", + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli", + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei", + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y", + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq", + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi", + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet____ecma": { "installs": [ - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa", - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha", - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq" + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi", + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli", + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet____python": { "installs": [ - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq" + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet____wasm": { "installs": [ - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka", - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy", - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy", - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq" + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y", + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq", + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi", + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet___ci": { "installs": [ - "bciqklz4j7zc46l4lwzjjpdradi6sy4mfd5ey27rrslcfxrdcvtek5ya", - "bciqhw6s67have7n4q3kefgvuekg7gktbkkvleadoufl2wpxzag3psyy", - "bciqf62kkjssayjkrr36rr3x3hrpiwiirlmn4exjz46veeaxp32bdqna", - "bciqa6vvvgr27kbbhvyc6hfbszfjkc5x4tssqicefmmljx2myuqwokdq", - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq", - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa", - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha", - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq", - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka", - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy", - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy", - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri" + "bciqjq7sv663snw57fsybwrfefbjibkn6t4psfbd2r3dodboafhr6lmq", + "bciqpqesmcpthtkaswi5pb25yqmdea674er4cz7nl2fsa6lsii6ludwa", + "bciqctytzcjsv7qqv7kynxwfniayjlocaigb2aihikhlrgt5lab3p32i", + "bciqm2woxgqgrhy7aa2mqhrbkce7o7xs65iabadfpqyh3xqre5glgsaa", + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a", + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi", + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli", + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei", + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y", + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq", + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi", + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_lint-udeps": { "installs": [ - "bciqjk5pmo3ffapu7zdpwbzrhcrosd6xu4ov2665j5crfmnl3575igaq", - "bciqeyz5nywnqjtzzjw62gvo2tm6ks4usonymnbby52qfxg7oazma25a", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq" + "bciqbrqcdc7q732b2hsphpf7t5rzhvz6h5dfqxfxs345t62asad7zcry", + "bciqjcqwnurxnykxkfkbd7g755fcauqhf4lv5voo5nn62afj3tybfesi", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_dev-website": { "installs": [ - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa", - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha", - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq" + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi", + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli", + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_test-rust": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa", - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha", - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq", - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi", + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli", + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei", + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_dev-eg-tgraphs": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa", - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha", - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq", - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi", + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli", + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei", + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_build-tgraph-core": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka", - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy", - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy", - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y", + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq", + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi", + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_build-tgraph-py": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka", - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy", - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy", - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri", - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y", + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq", + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi", + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq", + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_build-tgraph-ts": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka", - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy", - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy", - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri", - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa", - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha", - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y", + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq", + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi", + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq", + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi", + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli", + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet_______task_env_build-sys-tgraphs": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy", - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq", - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq", + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi", + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" }, "ghjkEnvProvInstSet___oci": { "installs": [ - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq", - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi", - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq", - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka", - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy", - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy", - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri" + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi", + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi", + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y", + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq", + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi", + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq" ], - "allowedBuildDeps": "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy" + "allowedBuildDeps": "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba" } } } @@ -969,13 +1300,13 @@ "ty": "denoFile@v1", "key": "dev-gate2", "desc": "Launch the typegate in sync mode.", - "envKey": "bciqiayvfgfn74jtyb74p3mhbafcy2zwkx5qdqxxs2dggqhes5kfe23a" + "envKey": "bciqjfazgnyxehqdfwztfmuymn25mgqm3uq5yelkqbpd5bcdkyyr5bdq" }, "dev-gate1": { "ty": "denoFile@v1", "key": "dev-gate1", "desc": "Launch the typegate in single-instance mode.", - "envKey": "bciqmexfknd3a3nb6sq7ugjq623j7nedexu4lopqkyi6dumwxiccugaa" + "envKey": "bciqmxq7fex7x2jkdb6dxzvyqcdjopabf6bhclywyvzclkhflp2vi6ci" }, "dev-eg-tgraphs": { "ty": "denoFile@v1", @@ -1008,9 +1339,9 @@ ], "envKey": "bciqjpe3qes7txbsoqf3vxksr3f7wglk2gb2wzi2qu2bmopfrtee56ly" }, - "build-jsr-pub": { + "build-tgraph-ts-jsr": { "ty": "denoFile@v1", - "key": "build-jsr-pub", + "key": "build-tgraph-ts-jsr", "envKey": "bciqdohetprvjln4qpn2tot4epa7ikgm5nrevk2ouajpxvb6aistoroi" }, "build-tgraph-core": { @@ -1081,7 +1412,7 @@ "dev", "gen-pyrt-bind", "build-pyrt", - "build-jsr-pub", + "build-tgraph-ts-jsr", "build-tgraph-core", "build-tgraph-py", "build-tgraph-ts", @@ -1353,7 +1684,7 @@ } ] }, - "bciqmexfknd3a3nb6sq7ugjq623j7nedexu4lopqkyi6dumwxiccugaa": { + "bciqmxq7fex7x2jkdb6dxzvyqcdjopabf6bhclywyvzclkhflp2vi6ci": { "provides": [ { "ty": "posix.envVar", @@ -1410,18 +1741,13 @@ "key": "TG_PORT", "val": "7891" }, - { - "ty": "posix.envVar", - "key": "TMP_DIR", - "val": "/home/yohe/metatype/tmp" - }, { "ty": "ghjk.ports.InstallSetRef", "setId": "ghjkEnvProvInstSet____rust" } ] }, - "bciqiayvfgfn74jtyb74p3mhbafcy2zwkx5qdqxxs2dggqhes5kfe23a": { + "bciqjfazgnyxehqdfwztfmuymn25mgqm3uq5yelkqbpd5bcdkyyr5bdq": { "provides": [ { "ty": "posix.envVar", @@ -1478,11 +1804,6 @@ "key": "TG_PORT", "val": "7892" }, - { - "ty": "posix.envVar", - "key": "TMP_DIR", - "val": "/home/yohe/metatype/tmp" - }, { "ty": "posix.envVar", "key": "SYNC_ENABLED", @@ -1784,8 +2105,8 @@ } ], "blackboard": { - "bciqdagddr7ykkiri2l6xx6kpziflufklhdf6qtzruq7pi766ywwzokq": { - "version": "1.43.6", + "bciqfhtizxh3hxqyszx4cnvcfjqq5t3ox2vr7yekhywsmrcvrau3iqvi": { + "version": "1.45.2", "port": { "ty": "denoWorker@v1", "name": "deno_ghrel", @@ -1798,7 +2119,7 @@ "x86_64-windows" ], "version": "0.1.0", - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/deno_ghrel.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/deno_ghrel.ts" } }, "bciqb6ua63xodzwxngnbjq35hfikiwzb3dclbqkc7e6xgjdt5jin4pia": { @@ -1931,7 +2252,7 @@ "portRef": "zstd_aa@0.1.0" } }, - "bciqc3xhnvka4gkp5o4str4seaudertf5j64u4uexuxsjy2zfkftmgqi": { + "bciqhnfhxvpxn2lci2lbdtigj6i6wqzpqsmijykq2f7bebrpkyrnr7hq": { "manifest": { "ty": "denoWorker@v1", "name": "rustup_rustlang", @@ -1956,13 +2277,13 @@ "name": "git_aa" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/rustup.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/rustup.ts" }, "defaultInst": { "portRef": "rustup_rustlang@0.1.0" } }, - "bciqlhmapsoz5bhawfzkkf5rwg4sv224gh2auxnrycf7jzql4cu2jxga": { + "bciqmcbhawhqin3go4l3rywevxny7lfudhbpffdekhmg35isg7xehvmq": { "manifest": { "ty": "denoWorker@v1", "name": "rust_rustup", @@ -1992,13 +2313,15 @@ "name": "rustup_rustlang" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/rust.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/rust.ts" }, "defaultInst": { - "portRef": "rust_rustup@0.1.0" + "version": "1.79.0", + "portRef": "rust_rustup@0.1.0", + "profile": "minimal" } }, - "bciqds445qrpt27zf4ss4tqj6dn4fspqy6gswhedxkreksbsuegb333a": { + "bciqiiyn3yvadqrhgjmrk7ieqmrsuzd6vbcuvq63x6vpbepgvghhtjja": { "manifest": { "ty": "denoWorker@v1", "name": "cargo_binstall_ghrel", @@ -2009,13 +2332,13 @@ "x86_64-darwin" ], "version": "0.1.0", - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargo-binstall.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargo-binstall.ts" }, "defaultInst": { "portRef": "cargo_binstall_ghrel@0.1.0" } }, - "bciqeaprogjaffmo3sfak7cqtgucz4qroecgwc5l7w5xow3mfy2pssyy": { + "bciqjhhjc4a4vtd7oeyh5ei7zxmztzkxr523h27uh7ps6rlw2r2w4ufi": { "manifest": { "ty": "denoWorker@v1", "name": "pnpm_ghrel", @@ -2028,13 +2351,13 @@ "x86_64-windows" ], "version": "0.1.0", - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pnpm.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pnpm.ts" }, "defaultInst": { "portRef": "pnpm_ghrel@0.1.0" } }, - "bciqhq5alr3djrnyuk3rv7tdew4v4mxbpzu4ghdvx6b3o6br43dfocjy": { + "bciqhlgvuozbxcmjecf7hqedxlg3pgvw5eu5yesdmvo645vet3yhm53q": { "manifest": { "ty": "denoWorker@v1", "name": "asdf_plugin_git", @@ -2057,13 +2380,13 @@ "name": "git_aa" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/asdf_plugin_git.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/asdf_plugin_git.ts" }, "defaultInst": { "portRef": "asdf_plugin_git@0.1.0" } }, - "bciqpycjbprrc6d7acflmq3c4lw6rui7mrxopey2w4fscsw5qvidxeaa": { + "bciqacaeb3q3ltrfkzhtckfjlnjdis4bwrbhwt44hq6qpbcro623sraq": { "manifest": { "ty": "denoWorker@v1", "name": "cpy_bs_ghrel", @@ -2084,7 +2407,7 @@ "name": "zstd_aa" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cpy_bs.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cpy_bs.ts" }, "defaultInst": { "version": "3.12.2", @@ -2092,7 +2415,7 @@ "releaseTag": "20240224" } }, - "bciqetwtii7y237vdtw33z26prnrrhgfncovcv5mzflkfske35vmkz5y": { + "bciqenen4rwswbxtiyvcqphbclntmcpdqmvso2egn4ud4ptrkazouani": { "manifest": { "ty": "denoWorker@v1", "name": "node_org", @@ -2110,28 +2433,28 @@ "name": "tar_aa" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/node.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/node.ts" }, "defaultInst": { "version": "20.8.0", "portRef": "node_org@0.1.0" } }, - "bciqduqrotwckptiuy7f6med5uixh7bq2csx6crdbk5wcytpvzanqcoy": { + "bciqfvoetwxha3e26koqnilar26rz4ikr2m4rst73oz7swrw6557kdba": { "tar_aa": "bciqb6ua63xodzwxngnbjq35hfikiwzb3dclbqkc7e6xgjdt5jin4pia", "git_aa": "bciqfl5s36w335ducrb6f6gwb3vuwup7vzqwwg67pq42xtkngsnxqobi", "curl_aa": "bciqcfe7qyxmokpn6pgtaj35r5qg74jkehuu6cvyrtcsnegvwlm64oqy", "unzip_aa": "bciqgkpwxjmo5phw5se4ugyiz4xua3xrd54quzmk7wdwpq3vghglogjy", "zstd_aa": "bciqmcvyepuficjj3mwshsbfecwdmzch5gwxqo557icnq4zujtdllh4a", - "rustup_rustlang": "bciqc3xhnvka4gkp5o4str4seaudertf5j64u4uexuxsjy2zfkftmgqi", - "rust_rustup": "bciqlhmapsoz5bhawfzkkf5rwg4sv224gh2auxnrycf7jzql4cu2jxga", - "cargo_binstall_ghrel": "bciqds445qrpt27zf4ss4tqj6dn4fspqy6gswhedxkreksbsuegb333a", - "pnpm_ghrel": "bciqeaprogjaffmo3sfak7cqtgucz4qroecgwc5l7w5xow3mfy2pssyy", - "asdf_plugin_git": "bciqhq5alr3djrnyuk3rv7tdew4v4mxbpzu4ghdvx6b3o6br43dfocjy", - "cpy_bs_ghrel": "bciqpycjbprrc6d7acflmq3c4lw6rui7mrxopey2w4fscsw5qvidxeaa", - "node_org": "bciqetwtii7y237vdtw33z26prnrrhgfncovcv5mzflkfske35vmkz5y" + "rustup_rustlang": "bciqhnfhxvpxn2lci2lbdtigj6i6wqzpqsmijykq2f7bebrpkyrnr7hq", + "rust_rustup": "bciqmcbhawhqin3go4l3rywevxny7lfudhbpffdekhmg35isg7xehvmq", + "cargo_binstall_ghrel": "bciqiiyn3yvadqrhgjmrk7ieqmrsuzd6vbcuvq63x6vpbepgvghhtjja", + "pnpm_ghrel": "bciqjhhjc4a4vtd7oeyh5ei7zxmztzkxr523h27uh7ps6rlw2r2w4ufi", + "asdf_plugin_git": "bciqhlgvuozbxcmjecf7hqedxlg3pgvw5eu5yesdmvo645vet3yhm53q", + "cpy_bs_ghrel": "bciqacaeb3q3ltrfkzhtckfjlnjdis4bwrbhwt44hq6qpbcro623sraq", + "node_org": "bciqenen4rwswbxtiyvcqphbclntmcpdqmvso2egn4ud4ptrkazouani" }, - "bciqncucmifodexsndv3z3yycgkxuijyh52qftnb4tdh7h32uazdhkuq": { + "bciqd7mu5umyjjnt7v6lmyg4tlhj4bg6oq36iepo42sog2cxfs7tdpdi": { "version": "v24.1", "port": { "ty": "denoWorker@v1", @@ -2143,44 +2466,60 @@ "x86_64-darwin" ], "version": "0.1.0", - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/protoc.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/protoc.ts" } }, - "bciqccbophtq6t76vohd2mz5tojllwcha3sfozbllmpodr3uwkmmshzi": { + "bciqp5sktkn6etkn3z4kvheorj42bloeldjnv75glh6q4jfju4emqt3y": { + "buildDepConfigs": { + "asdf_plugin_git": { + "pluginRepo": "https://github.com/asdf-community/asdf-cmake", + "portRef": "asdf_plugin_git@0.1.0" + } + }, + "resolutionDepConfigs": { + "asdf_plugin_git": { + "pluginRepo": "https://github.com/asdf-community/asdf-cmake", + "portRef": "asdf_plugin_git@0.1.0" + } + }, "port": { "ty": "denoWorker@v1", - "name": "pipi_pypi", + "name": "asdf", "platforms": [ "x86_64-linux", "aarch64-linux", "x86_64-darwin", - "aarch64-darwin", - "x86_64-windows", - "aarch64-windows", - "x86_64-freebsd", - "aarch64-freebsd", - "x86_64-netbsd", - "aarch64-netbsd", - "x86_64-aix", - "aarch64-aix", - "x86_64-solaris", - "aarch64-solaris", - "x86_64-illumos", - "aarch64-illumos", - "x86_64-android", - "aarch64-android" + "aarch64-darwin" ], "version": "0.1.0", "buildDeps": [ { - "name": "cpy_bs_ghrel" + "name": "curl_aa" + }, + { + "name": "git_aa" + }, + { + "name": "asdf_plugin_git" + } + ], + "resolutionDeps": [ + { + "name": "curl_aa" + }, + { + "name": "git_aa" + }, + { + "name": "asdf_plugin_git" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pipi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/asdf.ts" }, - "packageName": "cmake" + "pluginRepo": "https://github.com/asdf-community/asdf-cmake", + "installType": "version" }, - "bciqdvjio2pm2doenrjto6ie2rooebfzk36rfdqfhp764gynvwwwlzli": { + "bciqddqzemyb6kw24f2nhhy7hyfo62ytfjllvdnfhurqhb7qqlvo4noa": { "version": "v2.4.0", "port": { "ty": "denoWorker@v1", @@ -2195,11 +2534,11 @@ "name": "tar_aa" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/mold.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/mold.ts" }, "replaceLd": true }, - "bciqbs34bxkpv5splgajo6lbi7qabrvfygukt23qjtkk3qqf2vxsw46a": { + "bciql6pq2bc6uxp7z5luxf3nn44bx3vdqo7fsz6sonammtbpwsdmwxcy": { "port": { "ty": "denoWorker@v1", "name": "act_ghrel", @@ -2212,16 +2551,10 @@ "x86_64-windows" ], "version": "0.1.0", - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/act.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/act.ts" } }, - "bciqklnhhbhk3a4jgkm2azdm63nimlphee7bq5cpewg6tqgei624egzq": { - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, + "bciqllhtecyu5p4isjgutrvnb2xgkrryhxy6ooacn5p6ol2rriku6zwy": { "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2254,18 +2587,12 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "whiz", "locked": true }, - "bciqltjx5hrqf2qxibmasyab2aac23ovagtny5eu7xkr7kk66dsqicxq": { - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, + "bciqfbafead64bhnmec2sxcnc7v4c4m4p4pgehp5fjihkwqxkzkldmoi": { "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2298,18 +2625,12 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "wit-deps-cli", "locked": true }, - "bciqgl7wiw37nktektcqcxy6lqfiect4xqw5h3tmomoscurjsvsd7eea": { - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, + "bciqn62icb2lxjafe2jzh53frwkycch2tk22lhk5aqkhsdl7cwjbpmji": { "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2342,12 +2663,12 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "git-cliff", "locked": true }, - "bciqklz4j7zc46l4lwzjjpdradi6sy4mfd5ey27rrslcfxrdcvtek5ya": { + "bciqjq7sv663snw57fsybwrfefbjibkn6t4psfbd2r3dodboafhr6lmq": { "version": "3.7.1", "port": { "ty": "denoWorker@v1", @@ -2378,11 +2699,11 @@ "name": "cpy_bs_ghrel" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pipi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pipi.ts" }, "packageName": "pre-commit" }, - "bciqhw6s67have7n4q3kefgvuekg7gktbkkvleadoufl2wpxzag3psyy": { + "bciqpqesmcpthtkaswi5pb25yqmdea674er4cz7nl2fsa6lsii6ludwa": { "version": "v0.13.1", "port": { "ty": "denoWorker@v1", @@ -2396,17 +2717,11 @@ "x86_64-windows" ], "version": "0.1.0", - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/temporal_cli.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/temporal_cli.ts" } }, - "bciqf62kkjssayjkrr36rr3x3hrpiwiirlmn4exjz46veeaxp32bdqna": { + "bciqctytzcjsv7qqv7kynxwfniayjlocaigb2aihikhlrgt5lab3p32i": { "version": "1.33.0", - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2439,19 +2754,13 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "cargo-insta", "locked": true }, - "bciqa6vvvgr27kbbhvyc6hfbszfjkc5x4tssqicefmmljx2myuqwokdq": { + "bciqm2woxgqgrhy7aa2mqhrbkce7o7xs65iabadfpqyh3xqre5glgsaa": { "version": "0.2.5", - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2484,12 +2793,12 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "cross", "locked": true }, - "bciqd67xvzjx5rhilxs3c2zzjhfgqynhqywqosjvyo4jyyu3ykgsgdgy": { + "bciqlajnywjssd2yeb5a2p4qp7was3au33ekjcvashkvei6zr7mdh2dq": { "version": "3.8.18", "port": { "ty": "denoWorker@v1", @@ -2511,11 +2820,11 @@ "name": "zstd_aa" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cpy_bs.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cpy_bs.ts" }, "releaseTag": "20240224" }, - "bciqgz7rew65ut3nwunl2qmmlshqmmsgybqsgn4ekzz7fn3322hu3keq": { + "bciqgi2hzel6ndyvbd36ovvcpdv4ltizav3ibmqnujzdp4zzf6zai3vi": { "version": "0.4.7", "port": { "ty": "denoWorker@v1", @@ -2546,11 +2855,11 @@ "name": "cpy_bs_ghrel" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pipi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pipi.ts" }, "packageName": "ruff" }, - "bciqf6xkaxfvapwn3bf73vnqzr7mkcxgghwdh24uhgnozbz7wsdl2rrq": { + "bciqhuc6rcywoh677qmscqjbdgofoyalurlnabho5amqmhdfpilrgc5a": { "version": "1.7.0", "port": { "ty": "denoWorker@v1", @@ -2581,11 +2890,11 @@ "name": "cpy_bs_ghrel" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pipi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pipi.ts" }, "packageName": "poetry" }, - "bciqk7kzquppicvwdz2erhbkqu5gwzojtbjbk5gzjau2zo6xaf6x7kpa": { + "bciqkdrtbzm4whp2wklha6js3632cew6reewqcyqt7ordcwg4nfedghi": { "version": "20.8.0", "port": { "ty": "denoWorker@v1", @@ -2604,10 +2913,10 @@ "name": "tar_aa" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/node.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/node.ts" } }, - "bciqkfsvzlt23celx7huie2ilyelz6pbtumsxto3vsyocprrezxrvrha": { + "bciqewnlpjw47a2lbkd2qca6jf6opnreaizhblcg5omt2uglljw2onli": { "version": "v9.4.0", "port": { "ty": "denoWorker@v1", @@ -2621,10 +2930,10 @@ "x86_64-windows" ], "version": "0.1.0", - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pnpm.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pnpm.ts" } }, - "bciqjij47lkh2rdkrz3jc6wmevbfjkpueih33izmmf3xuycbyokkfweq": { + "bciqg3ul5otgtisml3egxsjfe6kvg2jsvl5zakibnaxgiqe2jzv6amei": { "version": "10.0.1", "port": { "ty": "denoWorker@v1", @@ -2655,18 +2964,12 @@ "name": "node_org" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/npmi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/npmi.ts" }, "packageName": "node-gyp" }, - "bciqfgnjbpohl4jn7hh72iz6mtwos4js72xg7oipbqxsvjykm7errgka": { + "bciqgjly7ijjp5zh5ytt2jcpptqx5vmbgs7lrvn27pujnze6dtljgt6y": { "version": "0.116.1", - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2699,19 +3002,13 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "wasm-opt", "locked": true }, - "bciqpszk4pvfknr65scs2bsuo2j372lbc4ywb52uq6ljtksppxbt6uwy": { + "bciqgnqqxpmenmhf5y7psrovuhwdeqh5x5teil2tkggvpgowac3hgjbq": { "version": "1.208.1", - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2744,12 +3041,12 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "wasm-tools", "locked": true }, - "bciqcraurpl4pijby6dmkuzevrupqwxoupubzke476koiigkljrpszuy": { + "bciqh2qn4zwqv7ixf3vb4jzgy2nfzxzz6va5wu5uzv3vtjaqpgg2tygi": { "version": "0.13.4", "port": { "ty": "denoWorker@v1", @@ -2780,11 +3077,11 @@ "name": "cpy_bs_ghrel" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pipi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/pipi.ts" }, "packageName": "componentize-py" }, - "bciqifiqlvknwgcqa2xgvi7diixw2kop5kjrvng6i4uzf4e5y3c4abri": { + "bciqdy7ppzs3sotxid2juepk2s7xg7a4g76amjzfeb5ec6kwnwmfnhaq": { "version": "1.3.0", "port": { "ty": "denoWorker@v1", @@ -2815,11 +3112,11 @@ "name": "node_org" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/npmi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/npmi.ts" }, "packageName": "@bytecodealliance/jco" }, - "bciqjk5pmo3ffapu7zdpwbzrhcrosd6xu4ov2665j5crfmnl3575igaq": { + "bciqbrqcdc7q732b2hsphpf7t5rzhvz6h5dfqxfxs345t62asad7zcry": { "version": "nightly-2024-05-26", "port": { "ty": "denoWorker@v1", @@ -2850,17 +3147,12 @@ "name": "rustup_rustlang" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/rust.ts" - } + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/rust.ts" + }, + "profile": "minimal" }, - "bciqeyz5nywnqjtzzjw62gvo2tm6ks4usonymnbby52qfxg7oazma25a": { + "bciqjcqwnurxnykxkfkbd7g755fcauqhf4lv5voo5nn62afj3tybfesi": { "version": "0.1.47", - "buildDepConfigs": { - "rust_rustup": { - "portRef": "rust_rustup@0.1.0", - "profile": "minimal" - } - }, "port": { "ty": "denoWorker@v1", "name": "cargobi_cratesio", @@ -2893,11 +3185,11 @@ "name": "rust_rustup" } ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts" + "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/cargobi.ts" }, "crateName": "cargo-udeps", "locked": true } } } -} +} \ No newline at end of file diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 1640fc43be..c0378952e6 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -5,6 +5,7 @@ on: env: REGISTRY_IMAGE: ghcr.io/${{ github.repository_owner }}/dev + DOCKER_BUILD_NO_SUMMARY: true jobs: builder: diff --git a/.github/workflows/publish-website.yml b/.github/workflows/publish-website.yml index 110c27c68f..c3d2422904 100644 --- a/.github/workflows/publish-website.yml +++ b/.github/workflows/publish-website.yml @@ -4,7 +4,7 @@ on: - main env: - GHJK_VERSION: "0.2.0" + GHJK_VERSION: "b702292" jobs: changes: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6c83811aad..cd97bc29c7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,9 +16,10 @@ on: - v* env: - GHJK_VERSION: "0.2.0" + GHJK_VERSION: "b702292" GHJK_ENV: "ci" REGISTRY_IMAGE: ghcr.io/${{ github.repository_owner }}/typegate + DOCKER_BUILD_NO_SUMMARY: true jobs: check-bump: @@ -71,36 +72,41 @@ jobs: - os: macos-13 target: x86_64-apple-darwin suffix: "" + cross: false - os: macos-14 target: aarch64-apple-darwin suffix: "" + cross: false - os: ubuntu-latest target: x86_64-unknown-linux-gnu suffix: "" + cross: false # FIXME: deno doesn't support musl today https://github.com/denoland/deno/issues/3711 # - os: ubuntu-latest # target: x86_64-unknown-linux-musl # suffix: "" + # cross: false - os: ubuntu-latest target: aarch64-unknown-linux-gnu suffix: "" + cross: true steps: - uses: actions/checkout@v4 with: fetch-depth: 0 + # some targets don't use cross so will require the deps in the host + - uses: metatypedev/setup-ghjk@318209a9d215f70716a4ac89dbeb9653a2deb8bc - uses: WyriHaximus/github-action-get-previous-tag@v1.4.0 id: latest-tag - uses: dsherret/rust-toolchain-file@v1 with: targets: ${{ matrix.target }} - # some targets don't use cross so will require the deps in the host - - uses: metatypedev/setup-ghjk@318209a9d215f70716a4ac89dbeb9653a2deb8bc - uses: mozilla-actions/sccache-action@v0.0.5 - run: | # sometimes, dtolnay/rust-toolchain does not select the correct default target rustup target add ${{ matrix.target }} # we use cross for building on this platform - - if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} + - if: ${{ matrix.cross }} shell: bash env: # arguments for our custom cross.Dockerfile @@ -110,16 +116,16 @@ jobs: cargo install cross # NOTE: we only build the thin cli - cross build --release --locked --package meta-cli --target ${{ matrix.target }} + cross build --release --locked --package meta-cli --target ${{ matrix.target }} --verbose # we cd next to the file so that the its parent dirs # aren't present in the tar cd target/${{ matrix.target }}/release/ tar czvf ../../../meta-cli-thin-${{ steps.latest-tag.outputs.tag }}-${{ matrix.target }}.tar.gz "meta${{ matrix.suffix }}" cd ../../../ - - if: ${{ matrix.target != 'aarch64-unknown-linux-gnu' }} + - if: ${{ matrix.cross != true }} shell: bash run: | - cargo build --release --locked --package meta-cli --target ${{ matrix.target }} --features typegate -v + cargo build --release --locked --package meta-cli --target ${{ matrix.target }} --features typegate --verbose cd target/${{ matrix.target }}/release/ tar czvf ../../../meta-cli-${{ steps.latest-tag.outputs.tag }}-${{ matrix.target }}.tar.gz "meta${{ matrix.suffix }}" cd ../../../ @@ -129,7 +135,7 @@ jobs: tar czvf ../../../meta-cli-thin-${{ steps.latest-tag.outputs.tag }}-${{ matrix.target }}.tar.gz "meta${{ matrix.suffix }}" cd ../../../ # fat meta-cli is not avail for arm64 linux (waiting on arm64 linux machines for Gh CI) - - if: ${{ matrix.target != 'aarch64-unknown-linux-gnu' }} + - if: ${{ matrix.cross != true }} uses: svenstaro/upload-release-action@v2 with: tag: ${{ steps.latest-tag.outputs.tag }} @@ -153,6 +159,9 @@ jobs: || github.event_name == 'workflow_dispatch' ) runs-on: ubuntu-latest + permissions: + contents: read + id-token: write # The OIDC ID token is used for authentication with JSR. steps: - uses: actions/checkout@v4 with: @@ -167,37 +176,34 @@ jobs: POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} WASM_FILE: target/release/typegraph_core.wasm + OVERWRITE: ${{ github.event_name == 'workflow_dispatch' && inputs.ovewriteArtifacts }} run: | - ghjk x install-py ghjk x install-ts - + ghjk x install-py source .venv/bin/activate WASM_OPT=1 ghjk x build-tgraph cd typegraph/python poetry build - [ ${{ github.event_name == 'workflow_dispatch' && inputs.ovewriteArtifacts }} == 'true' ] \ + [ "$OVERWRITE" == 'true' ] \ && poetry publish --skip-existing \ || poetry publish - cd ../.. + cd - cd typegraph/node pnpm config set '//registry.npmjs.org/:_authToken' "${NODE_AUTH_TOKEN}" - [ ${{ github.event_name == 'workflow_dispatch' && inputs.ovewriteArtifacts }} == 'true' ] \ - && (pnpm publish --no-git-checks || true) \ + [ "$OVERWRITE" == 'true' ] \ + && (pnpm publish --no-git-checks --force || true) \ || pnpm publish --no-git-checks - cd ../.. + cd - cd typegraph/deno/sdk - ghjk x build-jsr-pub - - # Requires auth - # jsr requires explicit type hints everytime (almost no inferences) - # - https://jsr.io/docs/about-slow-types#explicit-types - # - https://jsr.io/docs/about-slow-types#simple-inference - - # deno publish --dry-run --allow-slow-types --allow-dirty + ghjk x build-tgraph-ts-jsr + [ "$OVERWRITE" == 'true' ] \ + && (deno publish --allow-slow-types --allow-dirty || true) \ + || deno publish --allow-slow-types --allow-dirty + cd - - uses: svenstaro/upload-release-action@v2 with: @@ -336,7 +342,7 @@ jobs: - uses: kenji-miyake/setup-git-cliff@v2 - id: bump run: | - ghjk x verison-bump prerelease + ghjk x version-bump prerelease echo "version=$(ghjk x version-print)" >> $GITHUB_OUTPUT git cliff --output CHANGELOG.md - uses: peter-evans/create-pull-request@v6 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c75329da26..daaff73336 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,7 +16,7 @@ on: - ready_for_review env: - GHJK_VERSION: "0.2.0" + GHJK_VERSION: "b702292" GHJK_ENV: "ci" RUST_BACKTRACE: "full" DENO_DIR: deno-dir @@ -31,6 +31,7 @@ env: # used by ghjk # TODO: add logic to setup-ghjk GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCKER_BUILD_NO_SUMMARY: true jobs: changes: @@ -291,8 +292,7 @@ jobs: typegate/tests/e2e/self_deploy/self_deploy.ts \ typegate/tests/metagen/typegraphs/metagen.ts \ typegraph/deno/sdk/src/*.ts \ - dev/deps.ts \ - dev/utils.ts + dev/*.ts deno --unstable-worker-options --unstable-net coverage ./coverage --lcov > coverage.lcov diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7a2afca8a6..b88581176f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -28,7 +28,7 @@ repos: - id: deno-fmt name: Deno format language: system - entry: bash -c 'cd typegate && deno fmt --ignore=native,src/typegraphs,tmp,tests/e2e/nextjs && cd ../dev && deno fmt && cd ../typegraph/deno && deno fmt --ignore=node_modules,dist' + entry: bash -c 'cd typegate && deno fmt --ignore=native,src/typegraphs,tmp,tests/e2e/nextjs && cd ../dev && deno fmt && cd ../typegraph/deno && deno fmt --ignore=node_modules,dist && cd ../../libs/metagen/src && deno fmt' pass_filenames: false types: - ts @@ -36,7 +36,7 @@ repos: - id: deno-lint name: Deno lint language: system - entry: bash -c 'cd typegate && deno lint --rules-exclude=no-explicit-any --ignore=native,tmp,tests/e2e/nextjs && cd ../dev && deno lint' + entry: bash -c 'cd typegate && deno lint --rules-exclude=no-explicit-any --ignore=native,tmp,tests/e2e/nextjs && cd ../dev && deno lint && cd ../libs/metagen/src/ && deno lint' pass_filenames: false types: - ts diff --git a/.vscode/settings.json b/.vscode/settings.json index c34f58cea2..6f27b88736 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,18 +4,24 @@ "website/.docusaurus": true, "website/node_modules": true }, - "deno.enablePaths": [ - "typegate", - "dev", - "examples/templates/deno", - "examples/typegraphs", - "typegraph/deno/dev", - "typegraph/deno/sdk", - "libs/metagen", - "ghjk.ts", - ".ghjk" + "deno.disablePaths": [ + "meta-lsp", + "typegraph/node", + "examples/templates/node", + "website" ], - "deno.importMap": "typegate/import_map.json", + // "deno.enablePaths": [ + // "typegate", + // "dev", + // "examples/templates/deno", + // "examples/typegraphs", + // "typegraph/deno/dev", + // "typegraph/deno/sdk", + // "libs/metagen", + // "ghjk.ts", + // ".ghjk" + // ], + // "deno.config": "typegate/deno.jsonc", "deno.unstable": true, "typescript.suggest.completeFunctionCalls": true, "typescript.inlayHints.variableTypes.enabled": true, diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 97bf710579..cafddb4fae 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -101,7 +101,7 @@ You can install it using the following instructions. ```bash # install ghjk -GHJK_VERSION="0.2.0" +GHJK_VERSION="b702292" GHJK_INSTALL_HOOK_SHELLS=bash # add more shells if needed curl -fsSL https://raw.githubusercontent.com/metatypedev/ghjk/$GHJK_VERSION/install.sh | sh bash # re-open your shells to have the hooks register diff --git a/Cargo.lock b/Cargo.lock index ece33a0562..60cc799f54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,7 +8,7 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" dependencies = [ - "lazy_static 1.4.0", + "lazy_static 1.5.0", "regex", ] @@ -19,7 +19,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ed51fb0cfa6f88331d4424a7aca87146b315a3b5bd2bbad298ec855718ef9df" dependencies = [ "erased-serde 0.3.31", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", ] @@ -33,7 +33,7 @@ dependencies = [ "actix-macros", "actix-rt", "actix_derive", - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "crossbeam-channel", "futures-core", @@ -55,7 +55,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "futures-core", "futures-sink", @@ -68,9 +68,9 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.7.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb9843d84c775696c37d9a418bbb01b932629d01870722c0f13eb3f95e2536d" +checksum = "3ae682f693a9cd7b058f2b0b5d9a6d7728a8555779bedbbc35dd88528611d020" dependencies = [ "actix-codec", "actix-rt", @@ -78,8 +78,8 @@ dependencies = [ "actix-utils", "ahash 0.8.11", "base64 0.22.1", - "bitflags 2.5.0", - "brotli 6.0.0", + "bitflags 2.6.0", + "brotli", "bytes", "bytestring", "derive_more", @@ -102,7 +102,7 @@ dependencies = [ "tokio", "tokio-util 0.7.11", "tracing", - "zstd 0.13.1", + "zstd 0.13.2", ] [[package]] @@ -112,7 +112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -126,7 +126,7 @@ dependencies = [ "http 0.2.12", "regex", "regex-lite", - "serde 1.0.203", + "serde 1.0.204", "tracing", ] @@ -180,9 +180,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.7.0" +version = "4.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6316df3fa569627c98b12557a8b6ff0674e5be4bb9b5e4ae2550ddb4964ed6" +checksum = "1988c02af8d2b718c05bc4aeb6a66395b7cdf32858c2c71131e5637a8c05a9ff" dependencies = [ "actix-codec", "actix-http", @@ -210,7 +210,7 @@ dependencies = [ "pin-project-lite", "regex", "regex-lite", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "serde_urlencoded", "smallvec", @@ -228,7 +228,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -239,7 +239,7 @@ checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -497,7 +497,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -571,14 +571,14 @@ dependencies = [ [[package]] name = "ast_node" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab31376d309dd3bfc9cfb3c11c93ce0e0741bbe0354b20e7f8c60b044730b79" +checksum = "f9184f2b369b3e8625712493c89b785881f27eedc6cde480a81883cef78868b2" dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -599,7 +599,7 @@ version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" dependencies = [ - "brotli 6.0.0", + "brotli", "flate2", "futures-core", "memchr", @@ -639,7 +639,7 @@ dependencies = [ "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.1", + "polling 3.7.2", "rustix 0.38.34", "slab", "tracing", @@ -697,9 +697,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ "async-io 2.3.3", "async-lock 3.4.0", @@ -732,7 +732,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -743,13 +743,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -812,7 +812,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -834,7 +834,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "itoa", "matchit", "memchr", @@ -842,7 +842,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustversion", - "serde 1.0.203", + "serde 1.0.204", "sync_wrapper", "tower", "tower-layer", @@ -995,7 +995,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -1007,7 +1007,7 @@ dependencies = [ "bitflags 1.3.2", "cexpr", "clang-sys", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "lazycell", "peeking_take_while", "proc-macro2", @@ -1017,6 +1017,29 @@ dependencies = [ "shlex", ] +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static 1.5.0", + "lazycell", + "log", + "prettyplease 0.2.20", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.71", + "which 4.4.2", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -1040,11 +1063,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -1059,6 +1082,15 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "block" version = "0.1.6" @@ -1125,21 +1157,10 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "syn_derive", ] -[[package]] -name = "brotli" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor 2.5.1", -] - [[package]] name = "brotli" version = "6.0.0" @@ -1148,17 +1169,7 @@ checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor 4.0.1", -] - -[[package]] -name = "brotli-decompressor" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", + "brotli-decompressor", ] [[package]] @@ -1186,7 +1197,7 @@ dependencies = [ "js-sys", "once_cell", "rand 0.8.5", - "serde 1.0.203", + "serde 1.0.204", "serde_bytes", "serde_json", "time", @@ -1201,7 +1212,7 @@ checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "regex-automata 0.4.7", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -1258,9 +1269,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.16.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" [[package]] name = "byteorder" @@ -1270,9 +1281,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" [[package]] name = "bytestring" @@ -1334,10 +1345,10 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771aa57f3b17da6c8bcacb187bb9ec9bc81c8160e72342e67c329e0e1651a669" dependencies = [ - "darling 0.20.9", + "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -1348,9 +1359,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "cap-fs-ext" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc2d2954524be4866aaa720f008fba9995de54784957a1b0e0119992d6d5e52" +checksum = "eb23061fc1c4ead4e45ca713080fe768e6234e959f5a5c399c39eb41aa34e56e" dependencies = [ "cap-primitives", "cap-std", @@ -1360,9 +1371,9 @@ dependencies = [ [[package]] name = "cap-net-ext" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799c81d79ea9c71a1438efd417c788214bc9e7986046d3710b6bbe60da4d8275" +checksum = "f83ae11f116bcbafc5327c6af250341db96b5930046732e1905f7dc65887e0e1" dependencies = [ "cap-primitives", "cap-std", @@ -1372,9 +1383,9 @@ dependencies = [ [[package]] name = "cap-primitives" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00172660727e2d7f808e7cc2bfffd093fdb3ea2ff2ef819289418a3c3ffab5ac" +checksum = "6d00bd8d26c4270d950eaaa837387964a2089a1c3c349a690a1fa03221d29531" dependencies = [ "ambient-authority", "fs-set-times", @@ -1389,9 +1400,9 @@ dependencies = [ [[package]] name = "cap-rand" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "270f1d341a2afc62604f8f688bee4e444d052b7a74c1458dd3aa7efb47d4077f" +checksum = "dbcb16a619d8b8211ed61f42bd290d2a1ac71277a69cf8417ec0996fa92f5211" dependencies = [ "ambient-authority", "rand 0.8.5", @@ -1399,9 +1410,9 @@ dependencies = [ [[package]] name = "cap-std" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd9187bb3f7478a4c135ea10473a41a5f029d2ac800c1adf64f35ec7d4c8603" +checksum = "19eb8e3d71996828751c1ed3908a439639752ac6bdc874e41469ef7fc15fbd7f" dependencies = [ "cap-primitives", "io-extras", @@ -1411,9 +1422,9 @@ dependencies = [ [[package]] name = "cap-time-ext" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91666f31e30c85b1d2ee8432c90987f752c45f5821f5638027b41e73e16a395b" +checksum = "61142dc51e25b7acc970ca578ce2c3695eac22bbba46c1073f5f583e78957725" dependencies = [ "ambient-authority", "cap-primitives", @@ -1425,9 +1436,9 @@ dependencies = [ [[package]] name = "castaway" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" dependencies = [ "rustversion", ] @@ -1443,13 +1454,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -1489,9 +1499,9 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits 0.2.19", - "serde 1.0.203", + "serde 1.0.204", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1512,7 +1522,7 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.3", + "libloading 0.8.5", ] [[package]] @@ -1575,7 +1585,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -1586,9 +1596,9 @@ checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "clipboard-win" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" dependencies = [ "error-code", ] @@ -1651,7 +1661,7 @@ dependencies = [ "nom 7.1.3", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -1684,7 +1694,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" dependencies = [ - "lazy_static 1.4.0", + "lazy_static 1.5.0", "windows-sys 0.48.0", ] @@ -1703,7 +1713,7 @@ dependencies = [ [[package]] name = "common" -version = "0.4.4" +version = "0.4.6" dependencies = [ "anyhow", "async-trait", @@ -1714,10 +1724,10 @@ dependencies = [ "indexmap 2.2.6", "indoc", "itertools 0.11.0", - "reqwest", - "serde 1.0.203", + "reqwest 0.11.27", + "serde 1.0.204", "serde_json", - "serde_with 3.8.1", + "serde_with 3.9.0", "tar", "thiserror", "url", @@ -1767,10 +1777,10 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b1b9d958c2b1368a663f05538fc1b5975adce1e19f435acceae987aceeeb369" dependencies = [ - "lazy_static 1.4.0", + "lazy_static 1.5.0", "nom 5.1.3", "rust-ini 0.13.0", - "serde 1.0.203", + "serde 1.0.204", "serde-hjson", "serde_json", "toml 0.5.11", @@ -1790,7 +1800,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "libc", "unicode-width", "windows-sys 0.52.0", @@ -1996,7 +2006,7 @@ version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7eabb8d36b0ca8906bec93c78ea516741cac2d7e6b266fa7b0ffddcc09004990" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", "serde_derive", ] @@ -2229,7 +2239,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -2238,8 +2248,8 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b28bfe653d79bd16c77f659305b195b82bb5ce0c0eb2a4846b82ddbd77586813" dependencies = [ - "bitflags 2.5.0", - "libloading 0.8.3", + "bitflags 2.6.0", + "libloading 0.8.5", "winapi", ] @@ -2265,12 +2275,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.9", - "darling_macro 0.20.9", + "darling_core 0.20.10", + "darling_macro 0.20.10", ] [[package]] @@ -2303,16 +2313,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -2339,13 +2349,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.9", + "darling_core 0.20.10", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -2390,14 +2400,14 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", "uuid", ] [[package]] name = "deno" -version = "1.43.6" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "1.45.2" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "async-trait", "base32", @@ -2441,7 +2451,6 @@ dependencies = [ "fs3", "glibc_version", "glob", - "ignore", "import_map", "indexmap 2.2.6", "jsonc-parser", @@ -2459,17 +2468,18 @@ dependencies = [ "once_cell", "open", "p256", + "pathdiff", "percent-encoding", "phf 0.11.2", "quick-junit", "rand 0.8.5", "regex", - "reqwest", + "reqwest 0.12.4", "ring 0.17.8", "runtimelib", "rustyline", "rustyline-derive", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "serde_repr", "sha2 0.10.8", @@ -2486,7 +2496,7 @@ dependencies = [ "twox-hash", "typed-arena", "uuid", - "walkdir", + "which 4.4.2", "winapi", "winres", "zeromq", @@ -2495,9 +2505,9 @@ dependencies = [ [[package]] name = "deno_ast" -version = "0.38.2" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584547d27786a734536fde7088f8429d355569c39410427be44695c300618408" +checksum = "4d08372522975cce97fe0efbe42fea508c76eea4421619de6d63baae32792f7d" dependencies = [ "anyhow", "base64 0.21.7", @@ -2506,7 +2516,7 @@ dependencies = [ "dprint-swc-ext", "once_cell", "percent-encoding", - "serde 1.0.203", + "serde 1.0.204", "swc_atoms", "swc_bundler", "swc_common", @@ -2539,8 +2549,8 @@ dependencies = [ [[package]] name = "deno_broadcast_channel" -version = "0.147.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.155.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "async-trait", "deno_core", @@ -2550,30 +2560,29 @@ dependencies = [ [[package]] name = "deno_cache" -version = "0.85.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.93.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "async-trait", "deno_core", "rusqlite", - "serde 1.0.203", + "serde 1.0.204", "sha2 0.10.8", "tokio", ] [[package]] name = "deno_cache_dir" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cf517bddfd22d79d0f284500318e3f9aea193536c2b61cbf6ce7b50a85f1b6a" +checksum = "4036ac8ce97244e2a66df7b97412592acaf14671900460d28415703ad790cd70" dependencies = [ - "anyhow", "deno_media_type", "indexmap 2.2.6", "log", "once_cell", "parking_lot 0.12.3", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sha2 0.10.8", "thiserror", @@ -2582,46 +2591,49 @@ dependencies = [ [[package]] name = "deno_canvas" -version = "0.22.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.30.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", "deno_webgpu", "image", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "deno_config" -version = "0.16.3" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "971658ccd8dbd7de18f44d2270a6881a78a88f123584fc6497189ee5d20aa307" +checksum = "83df0c14d89f4e6e7ff91bfea0b4d5a0a33b4385c517ff4d8b4236d9834561e3" dependencies = [ "anyhow", + "deno_semver", "glob", + "ignore", "import_map", "indexmap 2.2.6", "jsonc-parser", "log", "percent-encoding", - "serde 1.0.203", + "serde 1.0.204", "serde_json", + "thiserror", "url", ] [[package]] name = "deno_console" -version = "0.153.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.161.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", ] [[package]] name = "deno_core" -version = "0.280.0" +version = "0.293.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12d26f2d3e243bbbdd0851ab542b20ec48ac1fcf6c64ab06e81133da3113ebdd" +checksum = "ca4618658ef613af8978a4bada32231c6c31aeeb9a02b6c58a5df17168a082be" dependencies = [ "anyhow", "bincode", @@ -2637,7 +2649,7 @@ dependencies = [ "memoffset 0.9.1", "parking_lot 0.12.3", "pin-project", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "serde_v8", "smallvec", @@ -2656,8 +2668,8 @@ checksum = "a13951ea98c0a4c372f162d669193b4c9d991512de9f2381dd161027f34b26b1" [[package]] name = "deno_cron" -version = "0.33.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.41.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "anyhow", "async-trait", @@ -2669,8 +2681,8 @@ dependencies = [ [[package]] name = "deno_crypto" -version = "0.167.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.175.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "aes", "aes-gcm", @@ -2691,7 +2703,7 @@ dependencies = [ "rand 0.8.5", "ring 0.17.8", "rsa", - "serde 1.0.203", + "serde 1.0.204", "serde_bytes", "sha1", "sha2 0.10.8", @@ -2703,9 +2715,9 @@ dependencies = [ [[package]] name = "deno_doc" -version = "0.135.0" +version = "0.142.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2c39bbe2769f6e8bfba1a99d7656e6994474c48fd2085ed82b59556e9d398dd" +checksum = "16293d4ab42fdb4b499bf0bdc30def02048525c59cf268f65a66c4ab1d4520dc" dependencies = [ "ammonia", "anyhow", @@ -2718,9 +2730,9 @@ dependencies = [ "html-escape", "import_map", "indexmap 2.2.6", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "syntect", "termcolor", @@ -2728,9 +2740,9 @@ dependencies = [ [[package]] name = "deno_emit" -version = "0.40.3" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b80fef2bf1b6e14712633975f7f39a3b29b95a5769cafcb959ffa1a84b7680" +checksum = "5c60394020be62d8c0d7fa0808ece5d9607f822f4bd27453d248d528d11ae762" dependencies = [ "anyhow", "base64 0.21.7", @@ -2745,17 +2757,18 @@ dependencies = [ [[package]] name = "deno_fetch" -version = "0.177.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.185.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "bytes", "data-url", "deno_core", + "deno_permissions", "deno_tls", "dyn-clone", - "http 0.2.12", - "reqwest", - "serde 1.0.203", + "http 1.1.0", + "reqwest 0.12.4", + "serde 1.0.204", "serde_json", "tokio", "tokio-util 0.7.11", @@ -2763,16 +2776,17 @@ dependencies = [ [[package]] name = "deno_ffi" -version = "0.140.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.148.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", + "deno_permissions", "dlopen2", "dynasmrt", "libffi", "libffi-sys", "log", - "serde 1.0.203", + "serde 1.0.204", "serde-value", "serde_json", "winapi", @@ -2780,28 +2794,30 @@ dependencies = [ [[package]] name = "deno_fs" -version = "0.63.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.71.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "async-trait", "base32", + "deno_config", "deno_core", "deno_io", + "deno_permissions", "filetime", "junction", "libc", "nix 0.26.2", "rand 0.8.5", "rayon", - "serde 1.0.203", + "serde 1.0.204", "winapi", ] [[package]] name = "deno_graph" -version = "0.75.2" +version = "0.80.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68ddc87ce88c0a2568277ee6caabf37890128710910416c09cd6f6a8931dba6" +checksum = "a71a3f1575d0309ac18ca2e7af88d64c15acd2c55d06fef0fbdfd7c69cecb09d" dependencies = [ "anyhow", "async-trait", @@ -2818,7 +2834,7 @@ dependencies = [ "once_cell", "parking_lot 0.12.3", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sha2 0.10.8", "thiserror", @@ -2828,13 +2844,13 @@ dependencies = [ [[package]] name = "deno_http" -version = "0.151.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.159.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "async-compression", "async-trait", "base64 0.21.7", - "brotli 3.5.0", + "brotli", "bytes", "cache_control", "deno_core", @@ -2844,8 +2860,8 @@ dependencies = [ "http 0.2.12", "http 1.1.0", "httparse", - "hyper 0.14.29", - "hyper 1.1.0", + "hyper 0.14.30", + "hyper 1.4.0", "hyper-util", "itertools 0.10.5", "memmem", @@ -2856,7 +2872,7 @@ dependencies = [ "pin-project", "ring 0.17.8", "scopeguard", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "thiserror", "tokio", @@ -2865,8 +2881,8 @@ dependencies = [ [[package]] name = "deno_io" -version = "0.63.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.71.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "async-trait", "deno_core", @@ -2875,6 +2891,7 @@ dependencies = [ "log", "once_cell", "os_pipe", + "parking_lot 0.12.3", "rand 0.8.5", "tokio", "winapi", @@ -2882,36 +2899,39 @@ dependencies = [ [[package]] name = "deno_kv" -version = "0.61.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.69.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "anyhow", "async-trait", "base64 0.21.7", + "bytes", "chrono", "deno_core", "deno_fetch", "deno_node", + "deno_permissions", "deno_tls", "denokv_proto", "denokv_remote", "denokv_sqlite", "faster-hex", + "http 1.1.0", "log", "num-bigint", "prost", "prost-build", "rand 0.8.5", "rusqlite", - "serde 1.0.203", + "serde 1.0.204", "url", ] [[package]] name = "deno_lint" -version = "0.58.4" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0622dde23f672fa3bb0788cef3cfc31ea21fc8570cd2b7e862d1e6575a527efe" +checksum = "598de34cdfb2a8ed335d8f2e33a75249445a9f81c8092a069fc562c2d5cdb9b6" dependencies = [ "anyhow", "deno_ast", @@ -2920,19 +2940,18 @@ dependencies = [ "log", "once_cell", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", ] [[package]] name = "deno_lockfile" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835418ae924f25ab20f508bf6240193b22d893519d44432b670a27b8fb1efeb" +checksum = "23120f905aec2deed858820113e089551025b74e261c5c404812cd8e61421379" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", "serde_json", - "sha2 0.10.8", "thiserror", ] @@ -2943,64 +2962,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8978229b82552bf8457a0125aa20863f023619cfc21ebb007b1e571d68fd85b" dependencies = [ "data-url", - "serde 1.0.203", + "serde 1.0.204", "url", ] [[package]] name = "deno_napi" -version = "0.83.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.91.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", + "deno_permissions", "libloading 0.7.4", ] [[package]] name = "deno_native_certs" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4785d0bdc13819b665b71e4fb7e119d859568471e4c245ec5610857e70c9345" +checksum = "c867603d2a5dfea31f55cecebb572554caa395437786d058faa9a2814c8d6eb9" dependencies = [ "dlopen2", "dlopen2_derive", "once_cell", - "rustls-native-certs", - "rustls-pemfile", + "rustls-native-certs 0.7.1", + "rustls-pemfile 2.1.2", ] [[package]] name = "deno_net" -version = "0.145.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.153.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", + "deno_permissions", "deno_tls", "pin-project", "rustls-tokio-stream", - "serde 1.0.203", + "serde 1.0.204", "socket2 0.5.7", "tokio", - "trust-dns-proto 0.22.0", - "trust-dns-resolver 0.22.0", + "trust-dns-proto 0.23.2", + "trust-dns-resolver 0.23.2", ] [[package]] name = "deno_node" -version = "0.90.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.98.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "aead-gcm-stream", "aes", "async-trait", - "brotli 3.5.0", + "blake2", + "brotli", "bytes", "cbc", "const-oid", "data-encoding", + "deno_config", "deno_core", "deno_fetch", "deno_fs", + "deno_io", "deno_media_type", "deno_net", "deno_permissions", @@ -3011,12 +3035,13 @@ dependencies = [ "elliptic-curve", "errno 0.2.8", "faster-hex", - "h2 0.3.26", + "h2 0.4.5", "hkdf", "home", - "http 0.2.12", + "http 1.1.0", "idna 0.3.0", "indexmap 2.2.6", + "ipnetwork", "k256", "lazy-regex", "libc", @@ -3036,18 +3061,21 @@ dependencies = [ "pin-project-lite", "rand 0.8.5", "regex", - "reqwest", + "reqwest 0.12.4", "ring 0.17.8", "ripemd", "rsa", "scrypt", "sec1", - "serde 1.0.203", - "sha-1", + "serde 1.0.204", + "sha1", "sha2 0.10.8", + "sha3", "signature", "simd-json", + "sm3", "spki", + "thiserror", "tokio", "url", "winapi", @@ -3058,9 +3086,9 @@ dependencies = [ [[package]] name = "deno_npm" -version = "0.20.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab92fbe02da596534ae84e2efca2f7dc5e26ca5fc972bf17701f0899784c2a8f" +checksum = "9812c781ff6b2e0e45c32ccba9983bce84ecccf6f6a7006b750f8c5c9ac15e30" dependencies = [ "anyhow", "async-trait", @@ -3069,7 +3097,7 @@ dependencies = [ "futures", "log", "monch", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", "url", @@ -3077,23 +3105,23 @@ dependencies = [ [[package]] name = "deno_ops" -version = "0.156.0" +version = "0.169.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8237b272db1a6cb941b8a5a63ba63539004a8263e8b0230a11136d76eea273f9" +checksum = "c2f2d01d8999f283f6c94cfcabe206a599a1471969e8974fc19eb523d8a7b91f" dependencies = [ "proc-macro-rules", "proc-macro2", "quote", "strum", "strum_macros", - "syn 2.0.66", + "syn 2.0.71", "thiserror", ] [[package]] name = "deno_permissions" -version = "0.13.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.21.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", "deno_terminal", @@ -3101,15 +3129,15 @@ dependencies = [ "libc", "log", "once_cell", - "serde 1.0.203", + "serde 1.0.204", "which 4.4.2", "winapi", ] [[package]] name = "deno_runtime" -version = "0.161.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.169.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_ast", "deno_broadcast_channel", @@ -3143,8 +3171,8 @@ dependencies = [ "flate2", "http 1.1.0", "http-body-util", - "hyper 0.14.29", - "hyper 1.1.0", + "hyper 0.14.30", + "hyper 1.4.0", "hyper-util", "libc", "log", @@ -3156,11 +3184,12 @@ dependencies = [ "percent-encoding", "regex", "rustyline", - "serde 1.0.203", + "serde 1.0.204", "signal-hook", "signal-hook-registry", "tokio", "tokio-metrics", + "twox-hash", "uuid", "which 4.4.2", "winapi", @@ -3169,22 +3198,22 @@ dependencies = [ [[package]] name = "deno_semver" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49e14effd9df8ed261f7a1a34ac19bbaf0fa940c59bd19a6d8313cf41525e1c" +checksum = "389b5a8c2dd48cc1aad25396c92d7461ddb0fcfae1faf8e00205837c53e34d3e" dependencies = [ "monch", "once_cell", - "serde 1.0.203", + "serde 1.0.204", "thiserror", "url", ] [[package]] name = "deno_task_shell" -version = "0.16.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97e5ff66a1e89edb7ca0c36b73a8fcdc008ba426c4ad7a36e1dfb3f4a166179e" +checksum = "dd6413ffc1654cad015edb5c4ab574069acdc929a6efafed23bc947901bcff1a" dependencies = [ "anyhow", "futures", @@ -3209,33 +3238,34 @@ dependencies = [ [[package]] name = "deno_tls" -version = "0.140.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.148.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", "deno_native_certs", - "rustls 0.21.11", - "rustls-pemfile", + "rustls 0.22.4", + "rustls-pemfile 2.1.2", "rustls-tokio-stream", - "rustls-webpki", - "serde 1.0.203", + "rustls-webpki 0.102.5", + "serde 1.0.204", "tokio", - "webpki-roots", + "webpki-roots 0.26.3", ] [[package]] name = "deno_unsync" -version = "0.3.4" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7557a5e9278b9a5cc8056dc37062ea4344770bda4eeb5973c7cbb7ebf636b9a4" +checksum = "c3c8b95582c2023dbb66fccc37421b374026f5915fa507d437cb566904db9a3a" dependencies = [ + "parking_lot 0.12.3", "tokio", ] [[package]] name = "deno_url" -version = "0.153.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.161.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", "urlpattern", @@ -3243,29 +3273,30 @@ dependencies = [ [[package]] name = "deno_web" -version = "0.184.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.192.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "async-trait", "base64-simd 0.8.0", "bytes", "deno_core", + "deno_permissions", "encoding_rs", "flate2", "futures", - "serde 1.0.203", + "serde 1.0.204", "tokio", "uuid", ] [[package]] name = "deno_webgpu" -version = "0.120.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.128.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", "raw-window-handle", - "serde 1.0.203", + "serde 1.0.204", "tokio", "wgpu-core", "wgpu-types", @@ -3273,37 +3304,38 @@ dependencies = [ [[package]] name = "deno_webidl" -version = "0.153.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.161.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", ] [[package]] name = "deno_websocket" -version = "0.158.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.166.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "bytes", "deno_core", "deno_net", + "deno_permissions", "deno_tls", "fastwebsockets", "h2 0.4.5", "http 1.1.0", "http-body-util", - "hyper 1.1.0", + "hyper 1.4.0", "hyper-util", "once_cell", "rustls-tokio-stream", - "serde 1.0.203", + "serde 1.0.204", "tokio", ] [[package]] name = "deno_webstorage" -version = "0.148.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.156.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "deno_core", "deno_web", @@ -3322,9 +3354,9 @@ dependencies = [ [[package]] name = "denokv_proto" -version = "0.5.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98a79f7e98bfd3c148ce782c27c1494e77c3c94ab87c9e7e86e901cbc1643449" +checksum = "114538d2cacd2b219f05faa753d80950f95416e47c77904c7452d5f41e157059" dependencies = [ "anyhow", "async-trait", @@ -3332,16 +3364,15 @@ dependencies = [ "futures", "num-bigint", "prost", - "prost-build", - "serde 1.0.203", + "serde 1.0.204", "uuid", ] [[package]] name = "denokv_remote" -version = "0.5.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518e181eb14f1a3b8fc423e48de431048249780fb0815d81e8139faf347c3269" +checksum = "d57717b5123e8d1ec5f52973a67f98e3621274d362d18b245038967b402082df" dependencies = [ "anyhow", "async-stream", @@ -3350,11 +3381,11 @@ dependencies = [ "chrono", "denokv_proto", "futures", + "http 1.1.0", "log", "prost", "rand 0.8.5", - "reqwest", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "tokio", "tokio-util 0.7.11", @@ -3364,9 +3395,9 @@ dependencies = [ [[package]] name = "denokv_sqlite" -version = "0.5.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90af93f2ab8eec43fea9f8931fa99d38e73fa0af60aba0fae79de3fb87a0ed06" +checksum = "188b792af19082cbfc7b666e71979775300482877d8b80601f4a5a86a80098a3" dependencies = [ "anyhow", "async-stream", @@ -3382,7 +3413,9 @@ dependencies = [ "serde_json", "thiserror", "tokio", + "tokio-stream", "uuid", + "v8_valueserializer", ] [[package]] @@ -3417,7 +3450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -3619,13 +3652,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -3654,7 +3687,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -3676,7 +3709,7 @@ dependencies = [ "prisma-models", "psl", "schema", - "serde 1.0.203", + "serde 1.0.204", "serde_json", ] @@ -3688,9 +3721,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "document-features" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" dependencies = [ "litrs", ] @@ -3712,7 +3745,7 @@ dependencies = [ "hashbrown 0.14.5", "indexmap 2.2.6", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", "unicode-width", ] @@ -3728,15 +3761,15 @@ dependencies = [ [[package]] name = "dprint-plugin-json" -version = "0.19.2" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e292d0d74f3f51b1ff3e446c8809bcdd0b6079b49cf6c0d452c85927a2575246" +checksum = "a19f4a9f2f548b2098b8ec597d7bb40af133b6e9a3187c1d3c4caa101b8c93c3" dependencies = [ "anyhow", "dprint-core", "dprint-core-macros", "jsonc-parser", - "serde 1.0.203", + "serde 1.0.204", "text_lines", ] @@ -3749,30 +3782,30 @@ dependencies = [ "anyhow", "dprint-core", "jsonc-parser", - "serde 1.0.203", + "serde 1.0.204", "serde_json", ] [[package]] name = "dprint-plugin-markdown" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2642e4a5f3a2262bb9baef8739f90d99b73ca21bc65f46c320a7817fd65438" +checksum = "da8df52eef864c2577ad3fb28c596935e2c0161eb09f6d5e239b10fecda2ec1c" dependencies = [ "anyhow", "dprint-core", "dprint-core-macros", "pulldown-cmark", "regex", - "serde 1.0.203", + "serde 1.0.204", "unicode-width", ] [[package]] name = "dprint-plugin-typescript" -version = "0.90.5" +version = "0.91.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c3c339020ebbbbbe5fc049350935ee2ea2ba5a3fc01f753588639a30404cda" +checksum = "fecac09050c0bc7d19a0e47d3ce3cfc2e21780fb30b5081a5042fd49c1b020a2" dependencies = [ "anyhow", "deno_ast", @@ -3780,14 +3813,14 @@ dependencies = [ "dprint-core-macros", "percent-encoding", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "dprint-swc-ext" -version = "0.16.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "019d17f2c2457c5a70a7cf4505b1a562ca8ab168c0ac0c005744efbd29fcb8fe" +checksum = "2b909f9f9b22a6265839887544dce97b0b8e2b2635abf622f45613deb3de63e0" dependencies = [ "allocator-api2", "bumpalo", @@ -3830,7 +3863,7 @@ checksum = "add9a102807b524ec050363f09e06f1504214b0e1c7797f64261c891022dce8b" dependencies = [ "bitflags 1.3.2", "byteorder", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "proc-macro-error", "proc-macro2", "quote", @@ -3889,7 +3922,7 @@ checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", - "serde 1.0.203", + "serde 1.0.204", "sha2 0.10.8", "signature", "subtle", @@ -3898,9 +3931,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -4043,14 +4076,14 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.71", ] [[package]] @@ -4062,7 +4095,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4072,7 +4105,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -4083,7 +4116,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4154,7 +4187,7 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -4163,7 +4196,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", "typeid", ] @@ -4212,9 +4245,9 @@ checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" [[package]] name = "eszip" -version = "0.69.0" +version = "0.72.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f606daca1ce18c69ccdabc59aa1c7e077356b8ffcd74e12c7646f545320a2fd" +checksum = "671e5931ba2ba3415b8c410a70b767ca80e1b5b721b428aca2f234f9776cf848" dependencies = [ "anyhow", "base64 0.21.7", @@ -4224,7 +4257,7 @@ dependencies = [ "deno_semver", "futures", "hashlink", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sha2 0.10.8", "thiserror", @@ -4335,7 +4368,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -4361,7 +4394,7 @@ checksum = "f63dd7b57f9b33b1741fa631c9522eb35d43e96dcca4a6a91d5e4ca7c93acdc1" dependencies = [ "base64 0.21.7", "http-body-util", - "hyper 1.1.0", + "hyper 1.4.0", "hyper-util", "pin-project", "rand 0.8.5", @@ -4427,7 +4460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" dependencies = [ "cc", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "libc", "winapi", ] @@ -4497,7 +4530,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4529,13 +4562,13 @@ checksum = "08b1eaa7dfddeab6036292995620bf0435712e619db6d7690605897e76975eb0" [[package]] name = "from_variant" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc9cc75639b041067353b9bce2450d6847e547276c6fbe4487d7407980e07db" +checksum = "32016f1242eb82af5474752d00fd8ebcd9004bd69b462b1c91de833972d08ed4" dependencies = [ "proc-macro2", "swc_macros_common", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4563,7 +4596,7 @@ checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4575,7 +4608,7 @@ dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4587,7 +4620,7 @@ dependencies = [ "frunk_core", "frunk_proc_macro_helpers", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4662,6 +4695,17 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-buffered" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02dcae03ee5afa5ea17b1aebc793806b8ddfc6dc500e0b8e8e1eb30b9dad22c0" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", +] + [[package]] name = "futures-channel" version = "0.3.30" @@ -4674,11 +4718,12 @@ dependencies = [ [[package]] name = "futures-concurrency" -version = "7.6.0" +version = "7.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ee14e256b9143bfafbf2fddeede6f396650bacf95d06fc1b3f2b503df129a0" +checksum = "4b14ac911e85d57c5ea6eef76d7b4d4a3177ecd15f4bea2e61927e9e3823e19f" dependencies = [ "bitvec", + "futures-buffered", "futures-core", "futures-lite 1.13.0", "pin-project", @@ -4745,7 +4790,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4810,10 +4855,10 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "debugid", "fxhash", - "serde 1.0.203", + "serde 1.0.204", "serde_json", ] @@ -4836,7 +4881,7 @@ checksum = "9cf62650515830c41553b72bd49ec20fb120226f9277c7f2847f071cf998325b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -4901,7 +4946,7 @@ version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", "libgit2-sys", "log", @@ -4953,7 +4998,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "ignore", "walkdir", ] @@ -4985,7 +5030,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "gpu-alloc-types", ] @@ -4995,7 +5040,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -5004,7 +5049,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "gpu-descriptor-types", "hashbrown 0.14.5", ] @@ -5015,7 +5060,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -5084,7 +5129,7 @@ dependencies = [ "grep-matcher", "grep-searcher", "log", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "termcolor", ] @@ -5182,7 +5227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f" dependencies = [ "hashbrown 0.14.5", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -5195,7 +5240,7 @@ dependencies = [ "log", "pest", "pest_derive", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", ] @@ -5282,6 +5327,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -5415,9 +5466,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -5432,15 +5483,15 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.3" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -5456,9 +5507,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -5480,36 +5531,40 @@ dependencies = [ [[package]] name = "hyper" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75" +checksum = "c4fe55fb7a772d59a5ff1dfbff4fe0258d19b89fec4b233e75d35d5d2316badc" dependencies = [ "bytes", "futures-channel", "futures-util", "h2 0.4.5", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", + "smallvec", "tokio", "want", ] [[package]] name = "hyper-rustls" -version = "0.24.2" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" dependencies = [ "futures-util", - "http 0.2.12", - "hyper 0.14.29", - "rustls 0.21.11", + "http 1.1.0", + "hyper 1.4.0", + "hyper-util", + "rustls 0.22.4", + "rustls-pki-types", "tokio", - "tokio-rustls 0.24.1", + "tokio-rustls 0.25.0", + "tower-service", ] [[package]] @@ -5518,7 +5573,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.29", + "hyper 0.14.30", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -5531,27 +5586,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.29", + "hyper 0.14.30", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.4.0", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", ] [[package]] name = "hyper-util" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdea9aac0dbe5a9240d68cfd9501e2db94222c6dc06843e06640b9e07f0fdc67" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.1.0", + "http-body 1.0.1", + "hyper 1.4.0", "pin-project-lite", "socket2 0.5.7", "tokio", + "tower", + "tower-service", "tracing", ] @@ -5629,17 +5702,16 @@ checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" [[package]] name = "ignore" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" dependencies = [ + "crossbeam-deque", "globset", - "lazy_static 1.4.0", "log", "memchr", - "regex", + "regex-automata 0.4.7", "same-file", - "thread_local", "walkdir", "winapi-util", ] @@ -5659,32 +5731,32 @@ dependencies = [ [[package]] name = "import_map" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "696717335b077e26921a60be7b7bdc15d1246074f1ac79d9e8560792535f7d07" +checksum = "373b8288ad259df0d1314e3e8b2fff0e5e63f22e01bc54ecd2c3c7ad77b9200c" dependencies = [ "indexmap 2.2.6", "log", "percent-encoding", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "url", ] [[package]] name = "include_dir" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ "include_dir_macros", ] [[package]] name = "include_dir_macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", @@ -5704,7 +5776,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -5715,7 +5787,7 @@ checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.5", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -5775,7 +5847,7 @@ checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" dependencies = [ "console", "globset", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "linked-hash-map", "similar", "walkdir", @@ -5832,7 +5904,7 @@ dependencies = [ "socket2 0.5.7", "widestring", "windows-sys 0.48.0", - "winreg", + "winreg 0.50.0", ] [[package]] @@ -5841,6 +5913,15 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +[[package]] +name = "ipnetwork" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf466541e9d546596ee94f9f69590f89473455f88372423e0008fc1a7daf100e" +dependencies = [ + "serde 1.0.204", +] + [[package]] name = "is-docker" version = "0.2.0" @@ -5859,7 +5940,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -5988,7 +6069,7 @@ source = "git+https://github.com/prisma/prisma-engines?tag=5.6.0#e95e739751f42d8 dependencies = [ "backtrace", "heck 0.3.3", - "serde 1.0.203", + "serde 1.0.204", "toml 0.5.11", ] @@ -6011,7 +6092,7 @@ dependencies = [ "futures-executor", "futures-util", "log", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", ] @@ -6056,7 +6137,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.3", + "libloading 0.8.5", "pkg-config", ] @@ -6103,12 +6184,12 @@ dependencies = [ "once_cell", "regex", "rust-ini 0.19.0", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "serde_yaml", "tempfile", "tokio", - "toml 0.8.14", + "toml 0.8.15", "url", ] @@ -6138,7 +6219,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -6149,11 +6230,11 @@ checksum = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin 0.9.8", ] [[package]] @@ -6303,12 +6384,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6323,7 +6404,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -6398,7 +6479,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e01cc93c35479eaa65adbf8b9aa933aa3f400d9e4e2fc553f516d4f822c8b13" dependencies = [ - "syn 2.0.66", + "syn 2.0.71", "thiserror", ] @@ -6414,11 +6495,11 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -6455,7 +6536,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2368312c59425dd133cb9a327afee65be0a633a8ce471d248e2202a48f8f68ae" dependencies = [ "bitflags 1.3.2", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "serde_repr", "url", @@ -6468,7 +6549,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66bfd44a06ae10647fe3f8214762e9369fd4248df1350924b4ef9e770a85ea1" dependencies = [ "bitflags 1.3.2", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "serde_repr", "url", @@ -6587,9 +6668,9 @@ checksum = "7e6bcd6433cff03a4bfc3d9834d504467db1f1cf6d0ea765d37d330249ed629d" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memfd" @@ -6644,7 +6725,7 @@ dependencies = [ [[package]] name = "meta-cli" -version = "0.4.4" +version = "0.4.6" dependencies = [ "actix", "actix-web", @@ -6677,7 +6758,7 @@ dependencies = [ "indoc", "itertools 0.13.0", "lade-sdk", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "metagen", "nix 0.29.0", "normpath", @@ -6689,10 +6770,10 @@ dependencies = [ "process-wrap", "project-root", "rand 0.8.5", - "reqwest", + "reqwest 0.11.27", "self_update", "semver 1.0.23", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "serde_yaml", "shadow-rs", @@ -6711,7 +6792,7 @@ dependencies = [ [[package]] name = "metagen" -version = "0.4.4" +version = "0.4.6" dependencies = [ "color-eyre", "common", @@ -6724,7 +6805,7 @@ dependencies = [ "once_cell", "pretty_assertions", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "tempfile", "tera", @@ -6736,7 +6817,7 @@ name = "metagen_mdk_rust_static" version = "0.0.1" dependencies = [ "anyhow", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "wit-bindgen", ] @@ -6747,7 +6828,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5637e166ea14be6063a3f8ba5ccb9a4159df7d8f6d61c02fc3d480b1f90dcfcb" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -6792,7 +6873,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953cbbb6f9ba4b9304f4df79b98cdc9d14071ed93065a9fca11c00c5d9181b66" dependencies = [ - "hyper 0.14.29", + "hyper 0.14.30", "indexmap 1.9.3", "ipnet", "metrics 0.19.0", @@ -6867,9 +6948,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", @@ -6931,15 +7012,15 @@ dependencies = [ "futures-util", "hex", "hmac", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "md-5", "pbkdf2 0.11.0", "percent-encoding", "rand 0.8.5", "rustc_version_runtime", - "rustls 0.21.11", - "rustls-pemfile", - "serde 1.0.203", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", + "serde 1.0.204", "serde_bytes", "serde_with 1.14.0", "sha-1", @@ -6956,7 +7037,7 @@ dependencies = [ "trust-dns-resolver 0.21.2", "typed-builder", "uuid", - "webpki-roots", + "webpki-roots 0.25.4", ] [[package]] @@ -6993,7 +7074,7 @@ dependencies = [ "query-engine-metrics", "rand 0.7.3", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", "tokio", @@ -7033,12 +7114,12 @@ source = "git+https://github.com/prisma/prisma-engines?tag=5.6.0#e95e739751f42d8 dependencies = [ "futures", "mongodb", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "mt_deno" -version = "0.4.4" +version = "0.4.6" dependencies = [ "anyhow", "deno", @@ -7062,7 +7143,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "lexical", "lru 0.8.1", "mio", @@ -7074,7 +7155,7 @@ dependencies = [ "pin-project", "priority-queue", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "socket2 0.4.10", "thiserror", @@ -7093,7 +7174,7 @@ checksum = "9006c95034ccf7b903d955f210469119f6c3477fc9c9e7a7845ce38a3e665c2a" dependencies = [ "base64 0.13.1", "bigdecimal", - "bindgen", + "bindgen 0.59.2", "bitflags 1.3.2", "bitvec", "byteorder", @@ -7103,7 +7184,7 @@ dependencies = [ "crc32fast", "flate2", "frunk", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "lexical", "num-bigint", "num-traits 0.2.19", @@ -7111,7 +7192,7 @@ dependencies = [ "regex", "rust_decimal", "saturating", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sha1", "sha2 0.10.8", @@ -7130,14 +7211,14 @@ checksum = "e536ae46fcab0876853bd4a632ede5df4b1c2527a58f6c5a4150fe86be858231" dependencies = [ "arrayvec 0.7.4", "bit-set", - "bitflags 2.5.0", + "bitflags 2.6.0", "codespan-reporting", "hexf-parse", "indexmap 2.2.6", "log", "num-traits 0.2.19", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", "spirv", "termcolor", "thiserror", @@ -7155,13 +7236,13 @@ dependencies = [ [[package]] name = "napi_sym" -version = "0.83.0" -source = "git+https://github.com/metatypedev/deno?branch=v1.43.6-embeddable#e909ce1e60816dbb640136f1a7434ed22dea8d59" +version = "0.91.0" +source = "git+https://github.com/metatypedev/deno?branch=v1.45.2-embeddable#691f297537c4a3d9a12ce005c0478b4aee86287c" dependencies = [ "quote", - "serde 1.0.203", + "serde 1.0.204", "serde_json", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -7235,7 +7316,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "libc", ] @@ -7246,7 +7327,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -7258,7 +7339,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -7318,7 +7399,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -7376,14 +7457,14 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits 0.2.19", "rand 0.8.5", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -7393,13 +7474,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" dependencies = [ "byteorder", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "libm", "num-integer", "num-iter", "num-traits 0.2.19", "rand 0.8.5", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "zeroize", ] @@ -7569,9 +7650,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open" -version = "5.1.4" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ca541f22b1c46d4bb9801014f234758ab4297e7870b904b6a8415b980a7388" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" dependencies = [ "is-wsl", "libc", @@ -7580,11 +7661,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "c2823eb4c6453ed64055057ea8bd416eda38c71018723869dd043a3b1186115e" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -7601,7 +7682,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -7621,9 +7702,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -7644,11 +7725,11 @@ dependencies = [ "futures-executor", "futures-util", "js-sys", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "percent-encoding", "pin-project", "rand 0.8.5", - "serde 1.0.203", + "serde 1.0.204", "thiserror", "tokio", "tokio-stream", @@ -7731,9 +7812,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.2.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e" +checksum = "19ff2cf528c6c03d9ed653d6c4ce1dc0582dc4af309790ad92f07c1cd551b0be" dependencies = [ "num-traits 0.2.19", ] @@ -7761,7 +7842,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" dependencies = [ "log", - "serde 1.0.203", + "serde 1.0.204", "windows-sys 0.52.0", ] @@ -7909,9 +7990,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.1", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -8016,9 +8097,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", "thiserror", @@ -8027,9 +8108,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" dependencies = [ "pest", "pest_generator", @@ -8037,22 +8118,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" dependencies = [ "once_cell", "pest", @@ -8138,7 +8219,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -8176,7 +8257,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -8260,13 +8341,13 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.1" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.3.9", + "hermit-abi 0.4.0", "pin-project-lite", "rustix 0.38.34", "tracing", @@ -8287,9 +8368,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "postcard" @@ -8299,7 +8380,7 @@ checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" dependencies = [ "cobs", "embedded-io", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -8340,7 +8421,7 @@ dependencies = [ "chrono", "fallible-iterator 0.2.0", "postgres-protocol", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "uuid", ] @@ -8416,6 +8497,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn 2.0.71", +] + [[package]] name = "primeorder" version = "0.13.6" @@ -8462,7 +8553,7 @@ dependencies = [ "chrono", "once_cell", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "uuid", ] @@ -8508,7 +8599,7 @@ checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f" dependencies = [ "proc-macro-rules-macros", "proc-macro2", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -8520,14 +8611,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -8577,11 +8668,11 @@ dependencies = [ "bytes", "heck 0.4.1", "itertools 0.10.5", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "log", "multimap", "petgraph 0.6.5", - "prettyplease", + "prettyplease 0.1.25", "prost", "prost-types", "regex", @@ -8621,7 +8712,7 @@ dependencies = [ "chrono", "inventory", "prost", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", "typetag", @@ -8653,7 +8744,7 @@ dependencies = [ "prost-wkt", "prost-wkt-build", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", ] @@ -8684,7 +8775,7 @@ dependencies = [ "prisma-value", "regex", "schema-ast", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "url", ] @@ -8729,7 +8820,7 @@ dependencies = [ "config", "directories 4.0.1", "petgraph 0.6.5", - "serde 1.0.203", + "serde 1.0.204", "serde-value", "tint", ] @@ -8740,7 +8831,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "memchr", "unicase", ] @@ -8813,7 +8904,7 @@ dependencies = [ "itertools 0.10.5", "prisma-models", "prisma-value", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", "user-facing-errors", @@ -8844,7 +8935,7 @@ dependencies = [ "query-connector", "query-engine-metrics", "schema", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", "tokio", @@ -8866,7 +8957,7 @@ dependencies = [ "metrics-util 0.12.1", "once_cell", "parking_lot 0.12.3", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "tracing", "tracing-futures", @@ -9074,11 +9165,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -9109,7 +9200,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -9208,7 +9299,7 @@ dependencies = [ "psl", "quaint", "query-core", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sql-query-connector", "thiserror", @@ -9219,11 +9310,10 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "async-compression", "base64 0.21.7", "bytes", "encoding_rs", @@ -9232,9 +9322,52 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 1.0.4", + "serde 1.0.204", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "async-compression", + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.0", "hyper-rustls", - "hyper-tls", + "hyper-tls 0.6.0", + "hyper-util", "ipnet", "js-sys", "log", @@ -9243,14 +9376,16 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.11", - "rustls-pemfile", - "serde 1.0.203", + "rustls 0.22.4", + "rustls-pemfile 2.1.2", + "rustls-pki-types", + "serde 1.0.204", "serde_json", "serde_urlencoded", + "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls 0.24.1", + "tokio-rustls 0.25.0", "tokio-socks", "tokio-util 0.7.11", "tower-service", @@ -9259,8 +9394,8 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", - "winreg", + "webpki-roots 0.26.3", + "winreg 0.52.0", ] [[package]] @@ -9358,8 +9493,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.5.0", - "serde 1.0.203", + "bitflags 2.6.0", + "serde 1.0.204", "serde_derive", ] @@ -9385,9 +9520,9 @@ dependencies = [ [[package]] name = "runtimelib" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4300b46ab6f2970f81c176f4f2f7ff0a48809f52be7a8fd4ca5a32e9002f6e8f" +checksum = "81f4969d577fe13ef40c8eb6fad2ccc66c26c800410672c847f5397699240b9d" dependencies = [ "anyhow", "base64 0.22.1", @@ -9398,7 +9533,7 @@ dependencies = [ "glob", "rand 0.8.5", "ring 0.17.8", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "shellexpand 3.1.0", "tokio", @@ -9412,7 +9547,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "chrono", "fallible-iterator 0.2.0", "fallible-streaming-iterator", @@ -9449,7 +9584,7 @@ dependencies = [ "num-traits 0.2.19", "rand 0.8.5", "rkyv", - "serde 1.0.203", + "serde 1.0.204", "serde_json", ] @@ -9522,7 +9657,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno 0.3.9", "itoa", "libc", @@ -9545,16 +9680,30 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.11" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.8", - "rustls-webpki", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.5", + "subtle", + "zeroize", +] + [[package]] name = "rustls-native-certs" version = "0.6.3" @@ -9562,7 +9711,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.1.2", + "rustls-pki-types", "schannel", "security-framework", ] @@ -9576,14 +9738,30 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + [[package]] name = "rustls-tokio-stream" -version = "0.2.24" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd707225bb670bcd2876886bb571753d1ce03a9cedfa2e629a79984ca9a93cfb" +checksum = "c478c030dfd68498e6c59168d9eec4f8bead33152a5f3095ad4bdbdcea09d466" dependencies = [ "futures", - "rustls 0.21.11", + "rustls 0.22.4", "socket2 0.5.7", "tokio", ] @@ -9598,6 +9776,17 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "rustls-webpki" +version = "0.102.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", + "untrusted 0.9.0", +] + [[package]] name = "rustversion" version = "1.0.17" @@ -9610,7 +9799,7 @@ version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02a2d683a4ac90aeef5b1013933f6d977bd37d51ff3f4dad829d4931a7e6be86" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "clipboard-win", "fd-lock", @@ -9722,7 +9911,7 @@ dependencies = [ "enumflags2", "psl", "quaint", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sha2 0.9.9", "tracing", @@ -9743,7 +9932,7 @@ dependencies = [ "mongodb-schema-connector", "psl", "schema-connector", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sql-schema-connector", "tokio", @@ -9810,11 +9999,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -9823,9 +10012,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -9850,12 +10039,12 @@ checksum = "1a34ad8e4a86884ab42e9b8690e9343abdcfe5fa38a0318cfe1565ba9ad437b4" dependencies = [ "either", "flate2", - "hyper 0.14.29", + "hyper 0.14.30", "indicatif", "log", "quick-xml 0.23.1", "regex", - "reqwest", + "reqwest 0.11.27", "self-replace", "semver 1.0.23", "serde_json", @@ -9889,13 +10078,13 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sentry" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766448f12e44d68e675d5789a261515c46ac6ccd240abdd451a9c46c84a49523" +checksum = "00421ed8fa0c995f07cde48ba6c89e80f2b312f74ff637326f392fbfd23abe02" dependencies = [ "httpdate", "native-tls", - "reqwest", + "reqwest 0.12.4", "sentry-anyhow", "sentry-backtrace", "sentry-contexts", @@ -9953,7 +10142,7 @@ dependencies = [ "once_cell", "rand 0.8.5", "sentry-types", - "serde 1.0.203", + "serde 1.0.204", "serde_json", ] @@ -9999,7 +10188,7 @@ dependencies = [ "debugid", "hex", "rand 0.8.5", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", "time", @@ -10015,9 +10204,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -10028,7 +10217,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a3a4e0ea8a88553209f6cc6cfe8724ecad22e1acf372793c27d995290fe74f8" dependencies = [ - "lazy_static 1.4.0", + "lazy_static 1.5.0", "num-traits 0.1.43", "regex", "serde 0.8.23", @@ -10041,39 +10230,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ "ordered-float 2.10.1", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "serde_bytes" -version = "0.11.14" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "indexmap 2.2.6", "itoa", "ryu", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -10084,7 +10273,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -10093,7 +10282,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -10105,17 +10294,17 @@ dependencies = [ "form_urlencoded", "itoa", "ryu", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "serde_v8" -version = "0.189.0" +version = "0.202.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "893c995255d6fbf55c33166b651fd037c4e3cc7864bf82213ea18d0ec94ed165" +checksum = "d179230030f377d5a788e4adc979262d586d7da286462f98b70da7f8b8a9d0b7" dependencies = [ "num-bigint", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "thiserror", "v8", @@ -10127,25 +10316,25 @@ version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", "serde_with_macros 1.5.2", ] [[package]] name = "serde_with" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", "indexmap 2.2.6", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", - "serde_with_macros 3.8.1", + "serde_with_macros 3.9.0", "time", ] @@ -10163,14 +10352,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ - "darling 0.20.9", + "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -10182,15 +10371,15 @@ dependencies = [ "indexmap 2.2.6", "itoa", "ryu", - "serde 1.0.203", + "serde 1.0.204", "unsafe-libyaml", ] [[package]] name = "sha-1" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", @@ -10267,7 +10456,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "lazy_static 1.4.0", + "lazy_static 1.5.0", ] [[package]] @@ -10360,7 +10549,7 @@ dependencies = [ "halfbrown", "lexical-core 0.8.5", "ref-cast", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "simdutf8", "value-trait", @@ -10424,13 +10613,22 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "sm3" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebb9a3b702d0a7e33bc4d85a14456633d2b165c2ad839c5fd9a8417c1ab15860" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -10483,7 +10681,7 @@ dependencies = [ "if_chain", "rustc-hash", "rustc_version 0.2.3", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "unicode-id-start", "url", @@ -10516,7 +10714,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -10560,7 +10758,7 @@ dependencies = [ "quaint", "query-connector", "rand 0.7.3", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", "tokio", @@ -10588,7 +10786,7 @@ dependencies = [ "quaint", "regex", "schema-connector", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sql-ddl", "sql-schema-describer", @@ -10618,7 +10816,7 @@ dependencies = [ "psl", "quaint", "regex", - "serde 1.0.203", + "serde 1.0.204", "tracing", "tracing-error", "tracing-futures", @@ -10679,7 +10877,7 @@ dependencies = [ "parking_lot 0.12.3", "phf_shared 0.10.0", "precomputed-hash", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -10703,7 +10901,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -10757,7 +10955,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -10772,9 +10970,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "swc_atoms" @@ -10785,14 +10983,14 @@ dependencies = [ "hstr", "once_cell", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "swc_bundler" -version = "0.227.0" +version = "0.230.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1a212bd08b1121c7204a04407ea055779fc00cf80024fc666dd97b00749cf87" +checksum = "9c506ddddebb846f8e68780464e2fe1fdc0add4bc265659f713a71015ffcdb13" dependencies = [ "anyhow", "crc", @@ -10829,14 +11027,14 @@ dependencies = [ "dashmap", "once_cell", "regex", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "swc_common" -version = "0.33.26" +version = "0.34.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f9706038906e66f3919028f9f7a37f3ed552f1b85578e93f4468742e2da438" +checksum = "9087befec6b63911f9d2f239e4f91c9b21589c169b86ed2d616944d23cf4a243" dependencies = [ "ast_node", "better_scoped_tls", @@ -10847,7 +11045,7 @@ dependencies = [ "num-bigint", "once_cell", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", "siphasher", "sourcemap", "swc_atoms", @@ -10860,13 +11058,13 @@ dependencies = [ [[package]] name = "swc_config" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be1a689e146be1eae53139482cb061dcf0fa01dff296bbe7b96fff92d8e2936" +checksum = "84b67e115ab136fe0eb03558bb0508ca7782eeb446a96d165508c48617e3fd94" dependencies = [ "anyhow", "indexmap 2.2.6", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "swc_cached", "swc_config_macro", @@ -10881,21 +11079,21 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "swc_ecma_ast" -version = "0.113.4" +version = "0.115.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1690cc0c9ab60b44ac0225ba1e231ac532f7ba1d754df761c6ee607561afae" +checksum = "7be1306930c235435a892104c00c2b5e16231043c085d5a10bd3e7537b15659b" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "is-macro", "num-bigint", "phf 0.11.2", "scoped-tls", - "serde 1.0.203", + "serde 1.0.204", "string_enum", "swc_atoms", "swc_common", @@ -10904,15 +11102,15 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.149.1" +version = "0.151.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fef147127a2926ca26171c7afcbf028ff86dc543ced87d316713f25620a15b9" +checksum = "f5141a8cb4eb69e090e6aea5d49061b46919be5210f3d084f9d9ad63d30f5cff" dependencies = [ "memchr", "num-bigint", "once_cell", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", "sourcemap", "swc_atoms", "swc_common", @@ -10930,18 +11128,18 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "swc_ecma_loader" -version = "0.45.28" +version = "0.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c68f934bd2c51f29c4ad0bcae09924e9dc30d7ce0680367d45b42d40338a67" +checksum = "5a9febebf047d1286e7b723fa2758f3229da2c103834f3eaee69833f46692612" dependencies = [ "anyhow", "pathdiff", - "serde 1.0.203", + "serde 1.0.204", "swc_atoms", "swc_common", "tracing", @@ -10949,16 +11147,16 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.144.1" +version = "0.146.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0499e69683ae5d67a20ff0279b94bc90f29df7922a46331b54d5dd367bf89570" +checksum = "0a4e0c2e85f12c63b85c805e923079b04d1fb3e25edd069d638eed5f2098de74" dependencies = [ "either", "new_debug_unreachable", "num-bigint", "num-traits 0.2.19", "phf 0.11.2", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "smartstring", "stacker", @@ -10971,17 +11169,17 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.138.2" +version = "0.140.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddb95c2bdad1c9c29edf35712e1e0f9b9ddc1cdb5ba2d582fd93468cb075a03" +checksum = "d37dc505c92af56d0f77cf6f31a6ccd37ac40cad1e01ff77277e0b1c70e8f8ff" dependencies = [ "better_scoped_tls", - "bitflags 2.5.0", + "bitflags 2.6.0", "indexmap 2.2.6", "once_cell", "phf 0.11.2", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "swc_atoms", "swc_common", @@ -10994,9 +11192,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.127.1" +version = "0.129.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53043d81678f3c693604eeb1d1f0fe6ba10f303104a31b954dbeebed9cadf530" +checksum = "a3eab5f8179e5b0aedf385eacc2c033691c6d211a7babd1bbbff12cf794a824e" dependencies = [ "swc_atoms", "swc_common", @@ -11015,14 +11213,14 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "swc_ecma_transforms_optimization" -version = "0.199.1" +version = "0.201.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ea30b3df748236c619409f222f0ba68ebeebc08dfff109d2195664a15689f9" +checksum = "724a8306e98c1b1f9640fc44c1acc0c971f6daa17651919e06b64f905d4a4564" dependencies = [ "dashmap", "indexmap 2.2.6", @@ -11044,13 +11242,13 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "0.172.3" +version = "0.174.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbc414d6a9c5479cfb4c6e92fcdac504582bd7bc89a0ed7f8808b72dc8bd1f0" +checksum = "6df8aa6752cc2fcf3d78ac67827542fb666e52283f2b26802aa058906bb750d3" dependencies = [ "either", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "swc_atoms", "swc_common", @@ -11064,16 +11262,16 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.184.1" +version = "0.186.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "565a76c4ca47ce31d78301c0beab878e4c2cb4f624691254d834ec8c0e236755" +checksum = "446da32cac8299973aaf1d37496562bfd0c1e4f3c3ab5d0af6f07f42e8184102" dependencies = [ "base64 0.21.7", "dashmap", "indexmap 2.2.6", "once_cell", - "serde 1.0.203", - "sha-1", + "serde 1.0.204", + "sha1", "string_enum", "swc_atoms", "swc_common", @@ -11088,12 +11286,12 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.189.1" +version = "0.191.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e209026c1d3c577cafac257d87e7c0d23119282fbdc8ed03d7f56077e95beb90" +checksum = "f1ce8af2865449e714ae56dacb6b54b3f6dc4cc25074da4e39b878bd93c5e39c" dependencies = [ "ryu-js", - "serde 1.0.203", + "serde 1.0.204", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -11105,14 +11303,15 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.128.1" +version = "0.130.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5242670bc74e0a0b64b9d4912b37be36944517ce0881314162aeb4381272c3" +checksum = "13e62b199454a576c5fdbd7e1bef8ab88a395427456d8a713d994b7d469833aa" dependencies = [ "indexmap 2.2.6", "num_cpus", "once_cell", "rustc-hash", + "ryu-js", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -11123,9 +11322,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.99.1" +version = "0.101.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6ce28ad8e591f8d627f1f9cb26b25e5d83052a9bc1b674d95fc28040cfa98" +checksum = "ce0d997f0c9b4e181225f603d161f6757c2a97022258170982cfe005ec69ec92" dependencies = [ "num-bigint", "swc_atoms", @@ -11143,14 +11342,14 @@ checksum = "695a1d8b461033d32429b5befbf0ad4d7a2c4d6ba9cd5ba4e0645c615839e8e4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "swc_fast_graph" -version = "0.21.22" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3fdd64bc3d161d6c1ea9a8ae5779e4ba132afc67e7b8ece5420bfc9c6e1275d" +checksum = "c00cf5c1687e9858fb9de1ffa90a3e21369095406e97ace870a389320d105b0a" dependencies = [ "indexmap 2.2.6", "petgraph 0.6.5", @@ -11160,9 +11359,9 @@ dependencies = [ [[package]] name = "swc_graph_analyzer" -version = "0.22.23" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c728a8f9b82b7160a1ae246e31232177b371f827eb0d01006c0f120a3494871c" +checksum = "a928a2ad8897fb78c38898ba342960863e9937b7a3de2d010d3204d85ce1b72a" dependencies = [ "auto_impl", "petgraph 0.6.5", @@ -11179,7 +11378,7 @@ checksum = "91745f3561057493d2da768437c427c0e979dff7396507ae02f16c981c4a8466" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -11202,7 +11401,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -11218,9 +11417,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ "proc-macro2", "quote", @@ -11236,7 +11435,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -11270,20 +11469,41 @@ dependencies = [ "once_cell", "onig", "regex-syntax 0.8.4", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", "thiserror", "walkdir", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "system-interface" version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b858526d22750088a9b3cf2e3c2aacebd5377f13adeec02860c30d09113010a6" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cap-fs-ext", "cap-std", "fd-lock", @@ -11342,9 +11562,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" [[package]] name = "tempfile" @@ -11397,7 +11617,7 @@ dependencies = [ "prost-wkt", "prost-wkt-build", "prost-wkt-types", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "thiserror", "tonic", @@ -11422,11 +11642,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab9d851b45e865f178319da0abdbfe6acbc4328759ff18dafc3a41c16b4cd2ee" dependencies = [ "globwalk", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "pest", "pest_derive", "regex", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "unic-segment", ] @@ -11458,7 +11678,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fd5828de7deaa782e1dd713006ae96b3bee32d3279b79eb67ecf8072c059bcf" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -11474,22 +11694,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -11504,9 +11724,9 @@ dependencies = [ [[package]] name = "tiberius" -version = "0.11.7" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66303a42b7c5daffb95c10cd8f3007a9c29b3e90128cf42b3738f58102aa2516" +checksum = "091052ba8f20c1e14f85913a5242a663a09d17ff4c0137b9b1f0735cb3c5dabc" dependencies = [ "async-native-tls", "async-trait", @@ -11546,7 +11766,7 @@ dependencies = [ "num-conv", "num_threads", "powerfmt", - "serde 1.0.203", + "serde 1.0.204", "time-core", "time-macros", ] @@ -11587,9 +11807,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -11602,9 +11822,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" dependencies = [ "backtrace", "bytes", @@ -11637,7 +11857,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -11702,7 +11922,18 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.11", + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls 0.22.4", + "rustls-pki-types", "tokio", ] @@ -11754,7 +11985,10 @@ dependencies = [ "futures-core", "futures-io", "futures-sink", + "futures-util", + "hashbrown 0.14.5", "pin-project-lite", + "slab", "tokio", ] @@ -11764,19 +11998,19 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] name = "toml" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.16", ] [[package]] @@ -11785,7 +12019,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -11801,15 +12035,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" dependencies = [ "indexmap 2.2.6", - "serde 1.0.203", + "serde 1.0.204", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.14", ] [[package]] @@ -11828,14 +12062,14 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-timeout", "percent-encoding", "pin-project", "prost", "prost-derive", - "rustls-native-certs", - "rustls-pemfile", + "rustls-native-certs 0.6.3", + "rustls-pemfile 1.0.4", "tokio", "tokio-rustls 0.23.4", "tokio-stream", @@ -11853,7 +12087,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" dependencies = [ - "prettyplease", + "prettyplease 0.1.25", "proc-macro2", "prost-build", "quote", @@ -11900,7 +12134,7 @@ dependencies = [ "httparse", "lsp-types 0.94.1", "memchr", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "tokio", "tokio-util 0.7.11", @@ -11917,7 +12151,7 @@ checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -11946,7 +12180,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -12045,11 +12279,11 @@ dependencies = [ [[package]] name = "triomphe" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b2cb4fbb9995eeb36ac86fadf24031ccd58f99d6b4b2d7b911db70bddb80d90" +checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" dependencies = [ - "serde 1.0.203", + "serde 1.0.204", "stable_deref_trait", ] @@ -12068,7 +12302,7 @@ dependencies = [ "futures-util", "idna 0.2.3", "ipnet", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "log", "rand 0.8.5", "smallvec", @@ -12080,22 +12314,22 @@ dependencies = [ [[package]] name = "trust-dns-proto" -version = "0.22.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26" +checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374" dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner 0.5.1", + "enum-as-inner 0.6.0", "futures-channel", "futures-io", "futures-util", - "idna 0.2.3", + "idna 0.4.0", "ipnet", - "lazy_static 1.4.0", + "once_cell", "rand 0.8.5", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "thiserror", "tinyvec", @@ -12113,7 +12347,7 @@ dependencies = [ "cfg-if", "futures-util", "ipconfig", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "log", "lru-cache", "parking_lot 0.12.3", @@ -12126,23 +12360,24 @@ dependencies = [ [[package]] name = "trust-dns-resolver" -version = "0.22.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe" +checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6" dependencies = [ "cfg-if", "futures-util", "ipconfig", - "lazy_static 1.4.0", "lru-cache", + "once_cell", "parking_lot 0.12.3", + "rand 0.8.5", "resolv-conf", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "thiserror", "tokio", "tracing", - "trust-dns-proto 0.22.0", + "trust-dns-proto 0.23.2", ] [[package]] @@ -12181,7 +12416,7 @@ dependencies = [ [[package]] name = "typegate" -version = "0.4.4" +version = "0.4.6" dependencies = [ "colored", "env_logger 0.11.0", @@ -12194,7 +12429,7 @@ dependencies = [ [[package]] name = "typegate_engine" -version = "0.4.4" +version = "0.4.6" dependencies = [ "anyhow", "base64 0.22.1", @@ -12218,7 +12453,7 @@ dependencies = [ "request-handlers", "schema-connector", "schema-core", - "serde 1.0.203", + "serde 1.0.204", "shadow-rs", "tap", "tempfile", @@ -12229,12 +12464,12 @@ dependencies = [ "user-facing-errors", "wasmtime", "wasmtime-wasi", - "zstd 0.13.1", + "zstd 0.13.2", ] [[package]] name = "typegraph_core" -version = "0.4.4" +version = "0.4.6" dependencies = [ "anyhow", "color-eyre", @@ -12247,12 +12482,12 @@ dependencies = [ "insta", "metagen", "once_cell", - "ordered-float 4.2.0", + "ordered-float 4.2.1", "paste", "ptree", "regex", "seahash", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "sha2 0.10.8", "unindent", @@ -12280,7 +12515,7 @@ dependencies = [ "erased-serde 0.4.5", "inventory", "once_cell", - "serde 1.0.203", + "serde 1.0.204", "typetag-impl", ] @@ -12292,7 +12527,7 @@ checksum = "ac73887f47b9312552aa90ef477927ff014d63d1920ca8037c6c1951eab64bb1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -12523,9 +12758,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.7" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" +checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" dependencies = [ "base64 0.22.1", "log", @@ -12543,7 +12778,7 @@ dependencies = [ "form_urlencoded", "idna 0.4.0", "percent-encoding", - "serde 1.0.203", + "serde 1.0.204", ] [[package]] @@ -12560,7 +12795,7 @@ checksum = "f9bd5ff03aea02fa45b13a7980151fe45009af1980ba69f651ec367121a31609" dependencies = [ "derive_more", "regex", - "serde 1.0.203", + "serde 1.0.204", "unic-ucd-ident", "url", ] @@ -12584,7 +12819,7 @@ dependencies = [ "indoc", "itertools 0.10.5", "quaint", - "serde 1.0.203", + "serde 1.0.204", "serde_json", "tracing", "user-facing-error-macros", @@ -12610,28 +12845,45 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom 0.2.15", - "serde 1.0.203", + "serde 1.0.204", "sha1_smol", ] [[package]] name = "v8" -version = "0.91.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69026e2e8af55a4d2f20c0c17f690e8b31472bf76ab75b1205d3a0fab60c8f84" +checksum = "eb417c2cd20684f18b185085c876d379318893461c17d319948a0a5f221f0b50" dependencies = [ - "bitflags 2.5.0", + "bindgen 0.69.4", + "bitflags 2.6.0", "fslock", "gzip-header", "home", "miniz_oxide", "once_cell", - "which 5.0.0", + "paste", + "which 6.0.1", +] + +[[package]] +name = "v8_valueserializer" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97599c400fc79925922b58303e98fcb8fa88f573379a08ddb652e72cbd2e70f6" +dependencies = [ + "bitflags 2.6.0", + "encoding_rs", + "indexmap 2.2.6", + "num-bigint", + "serde 1.0.204", + "thiserror", + "wtf8", ] [[package]] @@ -12714,12 +12966,11 @@ checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", - "winapi", "winapi-util", ] @@ -12777,7 +13028,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "wasm-bindgen-shared", ] @@ -12811,7 +13062,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -12833,18 +13084,18 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.208.1" +version = "0.209.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6425e84e42f7f558478e40ecc2287912cb319f2ca68e5c0bb93c61d4fc63fa17" +checksum = "7b4a05336882dae732ce6bd48b7e11fe597293cb72c13da4f35d7d5f8d53b2a7" dependencies = [ "leb128", ] [[package]] name = "wasm-encoder" -version = "0.209.1" +version = "0.214.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4a05336882dae732ce6bd48b7e11fe597293cb72c13da4f35d7d5f8d53b2a7" +checksum = "ff694f02a8d7a50b6922b197ae03883fbf18cdb2ae9fbee7b6148456f5f44041" dependencies = [ "leb128", ] @@ -12857,7 +13108,7 @@ checksum = "4d32029ce424f6d3c2b39b4419fb45a0e2d84fb0751e0c0a32b7ce8bd5d97f46" dependencies = [ "anyhow", "indexmap 2.2.6", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", "spdx", @@ -12867,9 +13118,9 @@ dependencies = [ [[package]] name = "wasm-streams" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" dependencies = [ "futures-util", "js-sys", @@ -12885,7 +13136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" dependencies = [ "ahash 0.8.11", - "bitflags 2.5.0", + "bitflags 2.6.0", "hashbrown 0.14.5", "indexmap 2.2.6", "semver 1.0.23", @@ -12898,7 +13149,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07035cc9a9b41e62d3bb3a3815a66ab87c993c06fe1cf6b2a3f2a18499d937db" dependencies = [ "ahash 0.8.11", - "bitflags 2.5.0", + "bitflags 2.6.0", "hashbrown 0.14.5", "indexmap 2.2.6", "semver 1.0.23", @@ -12946,7 +13197,7 @@ dependencies = [ "rayon", "rustix 0.38.34", "semver 1.0.23", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", "smallvec", @@ -12991,12 +13242,12 @@ dependencies = [ "log", "postcard", "rustix 0.38.34", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "sha2 0.10.8", - "toml 0.8.14", + "toml 0.8.15", "windows-sys 0.52.0", - "zstd 0.13.1", + "zstd 0.13.2", ] [[package]] @@ -13008,7 +13259,7 @@ dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "wasmtime-component-util", "wasmtime-wit-bindgen", "wit-parser 0.207.0", @@ -13059,7 +13310,7 @@ dependencies = [ "object 0.33.0", "postcard", "rustc-demangle", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "target-lexicon", "wasm-encoder 0.207.0", @@ -13121,7 +13372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f2fa462bfea3220711c84e2b549f147e4df89eeb49b8a2a3d89148f6cc4a8b1" dependencies = [ "cranelift-entity", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "smallvec", "wasmparser 0.207.0", @@ -13135,7 +13386,7 @@ checksum = "d4cedc5bfef3db2a85522ee38564b47ef3b7fc7c92e94cacbce99808e63cdd47" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -13146,7 +13397,7 @@ checksum = "bdbbe94245904d4c96c7c5f7b55bad896cc27908644efd9442063c0748b631fc" dependencies = [ "anyhow", "async-trait", - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "cap-fs-ext", "cap-net-ext", @@ -13209,24 +13460,24 @@ dependencies = [ [[package]] name = "wast" -version = "208.0.1" +version = "214.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00b3f023b4e2ccd2e054e240294263db52ae962892e6523e550783c83a67f1" +checksum = "694bcdb24c49c8709bd8713768b71301a11e823923eee355d530f1d8d0a7f8e9" dependencies = [ "bumpalo", "leb128", "memchr", "unicode-width", - "wasm-encoder 0.208.1", + "wasm-encoder 0.214.0", ] [[package]] name = "wat" -version = "1.208.1" +version = "1.214.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ed38e59176550214c025ea2bd0eeefd8e86b92d0af6698d5ba95020ec2e07b" +checksum = "347249eb56773fa728df2656cfe3a8c19437ded61a922a0b5e0839d9790e278e" dependencies = [ - "wast 208.0.1", + "wast 214.0.0", ] [[package]] @@ -13255,15 +13506,24 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "wgpu-core" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6a86eaa5e763e59c73cf9e97d55fffd4dfda69fd8bda19589fcf851ddfef1f" +checksum = "d50819ab545b867d8a454d1d756b90cd5f15da1f2943334ca314af10583c9d39" dependencies = [ "arrayvec 0.7.4", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg_aliases 0.1.1", "codespan-reporting", "document-features", @@ -13276,7 +13536,7 @@ dependencies = [ "raw-window-handle", "ron", "rustc-hash", - "serde 1.0.203", + "serde 1.0.204", "smallvec", "thiserror", "web-sys", @@ -13286,15 +13546,15 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d71c8ae05170583049b65ee562fd839fdc0b3e9ddb84f4e40c9d5f8ea0d4c8c" +checksum = "172e490a87295564f3fcc0f165798d87386f6231b04d4548bca458cbbfd63222" dependencies = [ "android_system_properties", "arrayvec 0.7.4", "ash", "bit-set", - "bitflags 2.5.0", + "bitflags 2.6.0", "block", "cfg_aliases 0.1.1", "core-graphics-types", @@ -13306,7 +13566,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.3", + "libloading 0.8.5", "log", "metal", "naga", @@ -13332,9 +13592,9 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1353d9a46bff7f955a680577f34c69122628cc2076e1d6f3a9be6ef00ae793ef" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "js-sys", - "serde 1.0.203", + "serde 1.0.204", "web-sys", ] @@ -13352,15 +13612,14 @@ dependencies = [ [[package]] name = "which" -version = "5.0.0" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14" +checksum = "8211e4f58a2b2805adfbefbc07bab82958fc91e3836339b1ab7ae32465dce0d7" dependencies = [ "either", "home", - "once_cell", "rustix 0.38.34", - "windows-sys 0.48.0", + "winsafe", ] [[package]] @@ -13388,7 +13647,7 @@ checksum = "a89ea6f74ece6d1cfbd089783006b8eb69a0219ca83cad22068f0d9fa9df3f91" dependencies = [ "anyhow", "async-trait", - "bitflags 2.5.0", + "bitflags 2.6.0", "thiserror", "tracing", "wasmtime", @@ -13406,7 +13665,7 @@ dependencies = [ "proc-macro2", "quote", "shellexpand 2.1.2", - "syn 2.0.66", + "syn 2.0.71", "witx", ] @@ -13418,7 +13677,7 @@ checksum = "0b47d2b4442ce93106dba5d1a9c59d5f85b5732878bb3d0598d3c93c0d01b16b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "wiggle-generate", ] @@ -13490,7 +13749,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core 0.52.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -13500,7 +13759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" dependencies = [ "windows-core 0.56.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -13509,7 +13768,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -13521,7 +13780,7 @@ dependencies = [ "windows-implement", "windows-interface", "windows-result", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -13532,7 +13791,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -13543,7 +13802,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -13552,7 +13811,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -13570,7 +13829,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -13590,18 +13849,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -13612,9 +13871,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -13624,9 +13883,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -13636,15 +13895,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -13654,9 +13913,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -13666,9 +13925,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -13678,9 +13937,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -13690,9 +13949,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -13705,9 +13964,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "374ec40a2d767a3c1b4972d9475ecd557356637be906f2cb3f7fe17a6eb5e22f" dependencies = [ "memchr", ] @@ -13722,6 +13981,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "winres" version = "0.1.12" @@ -13731,13 +14000,19 @@ dependencies = [ "toml 0.5.11", ] +[[package]] +name = "winsafe" +version = "0.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + [[package]] name = "winx" version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9643b83820c0cd246ecabe5fa454dd04ba4fa67996369466d0747472d337346" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "windows-sys 0.52.0", ] @@ -13768,7 +14043,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29c7526379ace8709ee9ab9f2bb50f112d95581063a59ef3097d9c10153886c9" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -13794,7 +14069,7 @@ dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -13806,10 +14081,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a2bb5b039f9cb03425e1d5a6e54b441ca4ca1b1d4fa6a0924db67a55168f99" dependencies = [ "anyhow", - "bitflags 2.5.0", + "bitflags 2.6.0", "indexmap 2.2.6", "log", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", "wasm-encoder 0.209.1", @@ -13829,7 +14104,7 @@ dependencies = [ "indexmap 2.2.6", "log", "semver 1.0.23", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", "unicode-xid", @@ -13847,7 +14122,7 @@ dependencies = [ "indexmap 2.2.6", "log", "semver 1.0.23", - "serde 1.0.203", + "serde 1.0.204", "serde_derive", "serde_json", "unicode-xid", @@ -13866,6 +14141,12 @@ dependencies = [ "wast 35.0.2", ] +[[package]] +name = "wtf8" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c01ae8492c38f52376efd3a17d0994b6bcf3df1e39c0226d458b7d81670b2a06" + [[package]] name = "wyz" version = "0.5.1" @@ -13883,7 +14164,7 @@ checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", "rand_core 0.6.4", - "serde 1.0.203", + "serde 1.0.204", "zeroize", ] @@ -13896,7 +14177,7 @@ dependencies = [ "asn1-rs", "data-encoding", "der-parser", - "lazy_static 1.4.0", + "lazy_static 1.5.0", "nom 7.1.3", "oid-registry", "rusticata-macros", @@ -13923,7 +14204,7 @@ checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" [[package]] name = "xtask" -version = "0.4.4" +version = "0.4.6" dependencies = [ "anyhow", "clap", @@ -13950,22 +14231,22 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -13985,7 +14266,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -14031,11 +14312,11 @@ dependencies = [ [[package]] name = "zipsign-api" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba5aa1827d6b1a35a29b3413ec69ce5f796e4d897e3e5b38f461bef41d225ea" +checksum = "6413a546ada9dbcd0b9a3e0b0880581279e35047bce9797e523b3408e1df607c" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "ed25519-dalek", "thiserror", ] @@ -14051,11 +14332,11 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ - "zstd-safe 7.1.0", + "zstd-safe 7.2.0", ] [[package]] @@ -14070,18 +14351,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" +checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 8748a38552..428819814e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,13 +15,13 @@ exclude = [ "libs/pyrt_wit_wire", ] [workspace.package] -version = "0.4.4" +version = "0.4.6" edition = "2021" [workspace.dependencies] # deno = { path = "../deno/cli"} -deno = { git = "https://github.com/metatypedev/deno", branch = "v1.43.6-embeddable" } -deno_core = { version = "=0.280.0" } +deno = { git = "https://github.com/metatypedev/deno", branch = "v1.45.2-embeddable" } +deno_core = { version = "=0.293.0" } # internal crates mt_deno = { path = "libs/deno/" } diff --git a/README.md b/README.md index 0d9c55688a..7e79cdb1b9 100644 --- a/README.md +++ b/README.md @@ -20,16 +20,19 @@ Support us by starr

- Typegate Docker + Typegate Docker image badge - Meta CLI binary + Meta CLI binary Github release badge - Python typegraph SDK + Python typegraph SDK badge PyPi - Typescript typegraph SDK + Typescript typegraph SDK badge NPM + + + Typescript typegraph SDK badge JSR

diff --git a/dev/Dockerfile b/dev/Dockerfile index f90466bdf3..ca88dc7654 100644 --- a/dev/Dockerfile +++ b/dev/Dockerfile @@ -1,6 +1,6 @@ # disable SHELL cmd down below if switching to non-debug -ARG RUST_VERSION=1.77.1 -ARG DENO_VERSION=1.43.6 +ARG RUST_VERSION=1.79.0 +ARG DENO_VERSION=1.45.2 ARG DISTROLESS_TAG=debug-nonroot # @@ -52,7 +52,7 @@ RUN set -eux; \ ; \ apt clean autoclean; apt autoremove --yes; rm -rf /var/lib/{apt,dpkg,cache,log}/; -ARG GHJK_VERSION=0.2.0 +ARG GHJK_VERSION=b702292 RUN GHJK_INSTALL_EXE_DIR=/usr/bin GHJK_INSTALL_HOOK_SHELLS=bash \ deno run -A https://raw.github.com/metatypedev/ghjk/$GHJK_VERSION/install.ts @@ -160,5 +160,7 @@ FROM prd as epoint USER nonroot EXPOSE 7890 +ENV MT_DIR=/app/tmp + ENTRYPOINT ["/tini", "--"] CMD ["/bin/typegate"] diff --git a/dev/consts.ts b/dev/consts.ts index 6765b498ff..0db35a9a65 100644 --- a/dev/consts.ts +++ b/dev/consts.ts @@ -1,17 +1,18 @@ // Copyright Metatype OÃœ, licensed under the Elastic License 2.0. // SPDX-License-Identifier: Elastic-2.0 -export const GHJK_VERSION = "0.2.0"; +export const METATYPE_VERSION = "0.4.6"; +export const PUBLISHED_VERSION = "0.4.5"; +export const GHJK_VERSION = "b702292"; export const GHJK_ACTION_VERSION = "318209a9d215f70716a4ac89dbeb9653a2deb8bc"; -export const RUST_VERSION = "1.77.1"; -export const DENO_VERSION = "1.43.6"; +export const RUST_VERSION = "1.79.0"; +export const DENO_VERSION = "1.45.2"; export const WASMTIME_VERSION = "21.0.0"; export const WASMTIME_PY_VERSION = "21.0.0"; export const TYPEGRAPH_VERSION = "0.0.3"; export const PRISMA_VERSION = "5.6.0"; -export const METATYPE_VERSION = "0.4.4"; -export const PUBLISHED_VERSION = "0.4.4"; export const SDK_PACKAGE_NAME_TS = "@typegraph/sdk"; +export const PYTHON_VERSION = "3.8.18"; export const TAGLINE = `Declarative API development platform. Build backend components with WASM, Typescript and Python, no matter where and how your (legacy) systems are.`; @@ -33,9 +34,6 @@ export const sedLockLines: Record = { "typegate/tests/**/*.snap": [ [/(\s*static\s*MT_VERSION:\s*&str\s*=\s*").+(";)/, METATYPE_VERSION], ], - "typegate/tests/e2e/upgrade/upgrade_test.ts": [ - [/(const\s+PUBLISHED_VERSION\s*=\s*").+(";)/, PUBLISHED_VERSION], - ], "typegraph/python/typegraph/__init__.py": [ ['(version = ").+(")', METATYPE_VERSION], ], @@ -57,6 +55,10 @@ export const sedLockLines: Record = { ['(wasmtime = ").+(")', WASMTIME_VERSION], ['(wasmtime-wasi = ").+(")', WASMTIME_VERSION], ], + "typegraph/deno/sdk/jsr.json": [ + [/(\s*"version"\s*:\s*").+(",?)/, METATYPE_VERSION], + ], + "dev/deps.ts": [[/(.*\/metatypedev\/ghjk\/)[^\/]*(\/.*)/, GHJK_VERSION]], "dev/cross.Dockerfile": [["(ARG GHJK_VERSION=).*()", GHJK_VERSION]], "dev/Dockerfile": [ ["(ARG DENO_VERSION=).*()", DENO_VERSION], @@ -82,13 +84,13 @@ export const sedLockLines: Record = { [/(wasmtime = "\^).+(")/, WASMTIME_PY_VERSION], ], "examples/templates/**/compose.yml": [ - ["( image: ghcr.io/metatypedev/typegate:v).+()", PUBLISHED_VERSION], + ["( image: ghcr.io/metatypedev/typegate:v).+()", METATYPE_VERSION], ], "examples/templates/**/pyproject.toml": [ - ['(typegraph = ").+(")', PUBLISHED_VERSION], + ['(typegraph = ").+(")', METATYPE_VERSION], ], "examples/templates/**/package.json": [ - [/(\s*"@typegraph\/sdk"\s*:\s*"\^).+(",?)/, PUBLISHED_VERSION], + [/(\s*"@typegraph\/sdk"\s*:\s*"\^).+(",?)/, METATYPE_VERSION], ], "examples/**/*.ts": [ [ diff --git a/dev/cross.Dockerfile b/dev/cross.Dockerfile index a9f1bb452b..551bdfce83 100644 --- a/dev/cross.Dockerfile +++ b/dev/cross.Dockerfile @@ -36,7 +36,7 @@ RUN set -eux \ unzip ENV GHJK_SHARE_DIR=/ghjk -ARG GHJK_VERSION=0.2.0 +ARG GHJK_VERSION=b702292 RUN curl -fsSL https://raw.github.com/metatypedev/ghjk/$GHJK_VERSION/install.sh \ | GHJK_INSTALL_EXE_DIR=/usr/bin GHJK_INSTALL_HOOK_SHELLS=bash sh diff --git a/dev/deps.ts b/dev/deps.ts index daf72a83a0..d8cd1d50aa 100644 --- a/dev/deps.ts +++ b/dev/deps.ts @@ -1,17 +1,18 @@ // Copyright Metatype OÃœ, licensed under the Elastic License 2.0. // SPDX-License-Identifier: Elastic-2.0 -export { file } from "https://raw.github.com/metatypedev/ghjk/44d9a41/mod.ts"; -export * from "https://raw.github.com/metatypedev/ghjk/44d9a41/mod.ts"; -export * as ports from "https://raw.github.com/metatypedev/ghjk/44d9a41/ports/mod.ts"; +export { file } from "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/mod.ts"; +export * from "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/mod.ts"; +export * as ports from "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/ports/mod.ts"; export { std_url, zod, -} from "https://raw.github.com/metatypedev/ghjk/44d9a41/deps/common.ts"; +} from "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/deps/common.ts"; export { copyLock, sedLock, -} from "https://raw.github.com/metatypedev/ghjk/44d9a41/std.ts"; +} from "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/std.ts"; +export { downloadFile } from "https://raw.githubusercontent.com/metatypedev/ghjk/b702292/utils/mod.ts"; // export * from "../../ghjk/mod.ts"; // export * as ports from "../../ghjk/ports/mod.ts"; // export * as utils from "../../ghjk/utils/mod.ts"; diff --git a/dev/installs.ts b/dev/installs.ts index 83da57786b..de7bd5ac89 100644 --- a/dev/installs.ts +++ b/dev/installs.ts @@ -1,14 +1,15 @@ // Copyright Metatype OÃœ, licensed under the Elastic License 2.0. // SPDX-License-Identifier: Elastic-2.0 -import { DENO_VERSION } from "./consts.ts"; +import { DENO_VERSION, PYTHON_VERSION, RUST_VERSION } from "./consts.ts"; import { ports } from "./deps.ts"; export default { - python: ports.cpy_bs({ version: "3.8.18", releaseTag: "20240224" }), + python: ports.cpy_bs({ version: PYTHON_VERSION, releaseTag: "20240224" }), // for use by pipi based ports python_latest: ports.cpy_bs({ version: "3.12.2", releaseTag: "20240224" }), node: ports.node({ version: "20.8.0" }), + rust_stable: ports.rust({ version: RUST_VERSION }), rust_nightly: ports.rust({ version: "nightly-2024-05-26" }), deno: ports.deno_ghrel({ version: DENO_VERSION }), }; diff --git a/dev/tasks-build.ts b/dev/tasks-build.ts index a80cadfd5f..c275695c70 100644 --- a/dev/tasks-build.ts +++ b/dev/tasks-build.ts @@ -57,10 +57,9 @@ const tasks: Record = { await $`deno run -A typegraph/deno/dev/deno2node.ts`; }, }, - "build-jsr-pub": { + "build-tgraph-ts-jsr": { async fn($) { await $`deno run -A typegraph/deno/dev/jsr-gen.ts`; - await $`cd typegraph/deno/sdk && deno publish --allow-slow-types --allow-dirty`; }, }, "build-tgraph-py": { diff --git a/dev/tasks-dev.ts b/dev/tasks-dev.ts index eeb1336d7b..353f119592 100644 --- a/dev/tasks-dev.ts +++ b/dev/tasks-dev.ts @@ -1,8 +1,7 @@ // Copyright Metatype OÃœ, licensed under the Elastic License 2.0. // SPDX-License-Identifier: Elastic-2.0 -import { $, DenoTaskDefArgs } from "./deps.ts"; -import { projectDir } from "./utils.ts"; +import { DenoTaskDefArgs } from "./deps.ts"; const DOCKER_CMD = Deno.env.get("DOCKER_CMD") ?? "docker"; @@ -66,7 +65,7 @@ const tasks: Record = { "-f", file, ]) - } down --remove-orphans`; + } down --remove-orphans --volumes`; } }, }, @@ -90,7 +89,6 @@ const tasks: Record = { "a4lNi0PbEItlFZbus1oeH/+wyIxi9uH6TpL8AIqIaMBNvp7SESmuUBbfUwC0prxhGhZqHw8vMDYZAGMhSZ4fLw==", TG_ADMIN_PASSWORD: "password", TG_PORT: "7891", - TMP_DIR: $.path(projectDir).join("tmp").toString(), }, fn: ($) => $`cargo run -p typegate`, }, diff --git a/dev/tasks-lock.ts b/dev/tasks-lock.ts index 537a0360d2..9c15556b0e 100644 --- a/dev/tasks-lock.ts +++ b/dev/tasks-lock.ts @@ -43,6 +43,7 @@ const tasks: Record = { // we don't use the `generate-lockfile` command because // "If the lockfile already exists, it will be rebuilt with the // latest available version of every package." + // and this breaks stuff await $`cargo tree`.stdout("piped"); } }, diff --git a/dev/tasks-test.ts b/dev/tasks-test.ts index 82de535d14..0e3d2a5584 100644 --- a/dev/tasks-test.ts +++ b/dev/tasks-test.ts @@ -8,7 +8,11 @@ const tasks: Record = { "test-e2e": { inherit: "ci", desc: "Shorthand for `dev/test.ts`", - fn: ($) => testE2eCli($.argv), + fn: async ($) => { + if (await testE2eCli($.argv) != 0) { + throw new Error("tests failed"); + } + }, }, "test-website": { inherit: "_ecma", diff --git a/dev/test.ts b/dev/test.ts index 87dd5b70e9..ec7f13ae21 100755 --- a/dev/test.ts +++ b/dev/test.ts @@ -22,6 +22,7 @@ * with the -q flag. */ +import { CommandChild } from "jsr:@david/dax@0.41.0"; import { $, ctrlc, @@ -96,6 +97,7 @@ interface Run { promise: Promise; output: ReadableStream | null; done: boolean; + child: CommandChild; } function applyFilter(files: string[], filter: string | undefined): string[] { @@ -197,6 +199,7 @@ export async function testE2e(args: { promise, output, done: false, + child, }; } @@ -238,8 +241,8 @@ export async function testE2e(args: { case 2: { console.log(`Killing ${testThreads.length} running tests...`); for (const t of testThreads) { - if (t.testProcess) { - t.testProcess.kill("SIGKILL"); + if (t.currentRun) { + t.currentRun.child.kill("SIGKILL"); } } break; @@ -248,7 +251,6 @@ export async function testE2e(args: { case 3: console.log("Force exiting..."); Deno.exit(1); - break; } }); @@ -531,7 +533,7 @@ class TestResultConsumer { } class TestThread { - currentRun: Run | null; + currentRun: Run | null = null; constructor( public threadId: number, diff --git a/dev/update.ts b/dev/update.ts index 6c2c5fe897..0a17508c69 100755 --- a/dev/update.ts +++ b/dev/update.ts @@ -86,3 +86,17 @@ await runOrExit([ ...flags["cache-only"] ? [] : ["--reload", "--lock-write"], ...tsFiles, ], projectDir); + +/* for (const file of tsFiles) { + const out = await $`deno info + --config=${denoConfigPath} + --unstable-worker-options + --unstable-net + ${file}` + .cwd(projectDir) + .missing("stdout"); + if (/missing/.test(out)) { + console.log(file); + break; + } +} */ diff --git a/dev/utils.ts b/dev/utils.ts index 00f2a8d583..2987058a66 100644 --- a/dev/utils.ts +++ b/dev/utils.ts @@ -10,7 +10,7 @@ export async function runOrExit( cwd?: string, env: Record = {}, ) { - // console.error("shell: ", cmd.join(" "), { env, cwd }); + console.error("shell: ", cmd.join(" "), { env, cwd }); const p = new Deno.Command(cmd[0], { args: cmd.slice(1), cwd, diff --git a/examples/deno.json b/examples/deno.json index 22bec744c6..07af7d6878 100644 --- a/examples/deno.json +++ b/examples/deno.json @@ -1,6 +1,5 @@ { "imports": { - "@typegraph/sdk": "../typegraph/deno/sdk/src", "@typegraph/sdk/": "../typegraph/deno/sdk/src/" } } diff --git a/examples/deno.lock b/examples/deno.lock deleted file mode 100644 index 8c2c6f7ce7..0000000000 --- a/examples/deno.lock +++ /dev/null @@ -1,1017 +0,0 @@ -{ - "version": "3", - "packages": { - "specifiers": { - "npm:@sentry/node@7.70.0": "npm:@sentry/node@7.70.0", - "npm:chance@1.1.11": "npm:chance@1.1.11", - "npm:graphql@16.8.1": "npm:graphql@16.8.1", - "npm:lodash": "npm:lodash@4.17.21", - "npm:lodash@4.17.21": "npm:lodash@4.17.21", - "npm:validator": "npm:validator@13.12.0", - "npm:validator@13.12.0": "npm:validator@13.12.0" - }, - "npm": { - "@sentry-internal/tracing@7.70.0": { - "integrity": "sha512-SpbE6wZhs6QwG2ORWCt8r28o1T949qkWx/KeRTCdK4Ub95PQ3Y3DgnqD8Wz//3q50Wt6EZDEibmz4t067g6PPg==", - "dependencies": { - "@sentry/core": "@sentry/core@7.70.0", - "@sentry/types": "@sentry/types@7.70.0", - "@sentry/utils": "@sentry/utils@7.70.0", - "tslib": "tslib@2.6.3" - } - }, - "@sentry/core@7.70.0": { - "integrity": "sha512-voUsGVM+jwRp99AQYFnRvr7sVd2tUhIMj1L6F42LtD3vp7t5ZnKp3NpXagtFW2vWzXESfyJUBhM0qI/bFvn7ZA==", - "dependencies": { - "@sentry/types": "@sentry/types@7.70.0", - "@sentry/utils": "@sentry/utils@7.70.0", - "tslib": "tslib@2.6.3" - } - }, - "@sentry/node@7.70.0": { - "integrity": "sha512-GeGlnu3QnJX0GN2FvZ3E31e48ZhRzEpREyC0Wa4BRvYHnyiGvsQjo/0RKeq6vvlggRhVnuoMg/jESyUmdntrAA==", - "dependencies": { - "@sentry-internal/tracing": "@sentry-internal/tracing@7.70.0", - "@sentry/core": "@sentry/core@7.70.0", - "@sentry/types": "@sentry/types@7.70.0", - "@sentry/utils": "@sentry/utils@7.70.0", - "cookie": "cookie@0.5.0", - "https-proxy-agent": "https-proxy-agent@5.0.1", - "lru_map": "lru_map@0.3.3", - "tslib": "tslib@2.6.3" - } - }, - "@sentry/types@7.70.0": { - "integrity": "sha512-rY4DqpiDBtXSk4MDNBH3dwWqfPbNBI/9GA7Y5WJSIcObBtfBKp0fzYliHJZD0pgM7d4DPFrDn42K9Iiumgymkw==", - "dependencies": {} - }, - "@sentry/utils@7.70.0": { - "integrity": "sha512-0cChMH0lsGp+5I3D4wOHWwjFN19HVrGUs7iWTLTO5St3EaVbdeLbI1vFXHxMxvopbwgpeZafbreHw/loIdZKpw==", - "dependencies": { - "@sentry/types": "@sentry/types@7.70.0", - "tslib": "tslib@2.6.3" - } - }, - "agent-base@6.0.2": { - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "debug@4.3.5" - } - }, - "chance@1.1.11": { - "integrity": "sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA==", - "dependencies": {} - }, - "cookie@0.5.0": { - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dependencies": {} - }, - "debug@4.3.5": { - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dependencies": { - "ms": "ms@2.1.2" - } - }, - "graphql@16.8.1": { - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", - "dependencies": {} - }, - "https-proxy-agent@5.0.1": { - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "agent-base@6.0.2", - "debug": "debug@4.3.5" - } - }, - "lodash@4.17.21": { - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dependencies": {} - }, - "lru_map@0.3.3": { - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dependencies": {} - }, - "ms@2.1.2": { - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dependencies": {} - }, - "tslib@2.6.3": { - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dependencies": {} - }, - "validator@13.12.0": { - "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", - "dependencies": {} - } - } - }, - "remote": { - "https://deno.land/std@0.129.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", - "https://deno.land/std@0.129.0/_util/os.ts": "49b92edea1e82ba295ec946de8ffd956ed123e2948d9bd1d3e901b04e4307617", - "https://deno.land/std@0.129.0/archive/tar.ts": "35ea1baddec7988cc4034765a2cee7613bc8074bd40940d3f5e98f63070a716a", - "https://deno.land/std@0.129.0/async/abortable.ts": "a896ac6b0d4237bd2d2d248217cfa1f0d85ccda93cb25ebda55e33850e526be6", - "https://deno.land/std@0.129.0/async/deadline.ts": "48ac998d7564969f3e6ec6b6f9bf0217ebd00239b1b2292feba61272d5dd58d0", - "https://deno.land/std@0.129.0/async/debounce.ts": "564273ef242bcfcda19a439132f940db8694173abffc159ea34f07d18fc42620", - "https://deno.land/std@0.129.0/async/deferred.ts": "bc18e28108252c9f67dfca2bbc4587c3cbf3aeb6e155f8c864ca8ecff992b98a", - "https://deno.land/std@0.129.0/async/delay.ts": "cbbdf1c87d1aed8edc7bae13592fb3e27e3106e0748f089c263390d4f49e5f6c", - "https://deno.land/std@0.129.0/async/mod.ts": "2240c6841157738414331f47dee09bb8c0482c5b1980b6e3234dd03515c8132f", - "https://deno.land/std@0.129.0/async/mux_async_iterator.ts": "f4d1d259b0c694d381770ddaaa4b799a94843eba80c17f4a2ec2949168e52d1e", - "https://deno.land/std@0.129.0/async/pool.ts": "97b0dd27c69544e374df857a40902e74e39532f226005543eabacb551e277082", - "https://deno.land/std@0.129.0/async/tee.ts": "1341feb1f5b1a96f8628d0f8fc07d8c43d3813423f18a63bf1b4785568d21b1f", - "https://deno.land/std@0.129.0/bytes/bytes_list.ts": "67eb118e0b7891d2f389dad4add35856f4ad5faab46318ff99653456c23b025d", - "https://deno.land/std@0.129.0/bytes/equals.ts": "fc16dff2090cced02497f16483de123dfa91e591029f985029193dfaa9d894c9", - "https://deno.land/std@0.129.0/bytes/mod.ts": "d3b455c0dbd4804644159d1e25946ade5ee385d2359894de49e2c6101b18b7a9", - "https://deno.land/std@0.129.0/encoding/base64.ts": "c8c16b4adaa60d7a8eee047c73ece26844435e8f7f1328d74593dbb2dd58ea4f", - "https://deno.land/std@0.129.0/encoding/base64url.ts": "55f9d13df02efac10c6f96169daa3e702606a64e8aa27c0295f645f198c27130", - "https://deno.land/std@0.129.0/fmt/colors.ts": "30455035d6d728394781c10755351742dd731e3db6771b1843f9b9e490104d37", - "https://deno.land/std@0.129.0/fmt/printf.ts": "e2c0f72146aed1efecf0c39ab928b26ae493a2278f670a871a0fbdcf36ff3379", - "https://deno.land/std@0.129.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f", - "https://deno.land/std@0.129.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d", - "https://deno.land/std@0.129.0/fs/ensure_file.ts": "7d353e64fee3d4d1e7c6b6726a2a5e987ba402c15fb49566309042887349c545", - "https://deno.land/std@0.129.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b", - "https://deno.land/std@0.129.0/io/files.ts": "d199ef64e918a256320ba8d8d44ae91de87c9077df8f8d6cca013f1b9fbbe285", - "https://deno.land/std@0.129.0/io/readers.ts": "679471f3b9929b54393c9cd75b6bd178b4bc6d9aab5c0f1f9538f862cf4746fe", - "https://deno.land/std@0.129.0/io/util.ts": "078da53bba767bec0d45f7da44411f6dbf269e51ef7fcfea5e3714e04681c674", - "https://deno.land/std@0.129.0/node/_buffer.mjs": "f4a7df481d4eed06dc0151b833177d8ef74fc3a96dd4d2b073e690b6ced9474d", - "https://deno.land/std@0.129.0/node/_core.ts": "568d277be2e086af996cbdd599fec569f5280e9a494335ca23ad392b130d7bb9", - "https://deno.land/std@0.129.0/node/_events.mjs": "c0e3e0e290a8b81fee9d2973a529c8dcd5ebb4406782d1f91085274e2cb8490f", - "https://deno.land/std@0.129.0/node/_fixed_queue.ts": "455b3c484de48e810b13bdf95cd1658ecb1ba6bcb8b9315ffe994efcde3ba5f5", - "https://deno.land/std@0.129.0/node/_next_tick.ts": "64c361f6bca21df2a72dd77b84bd49d80d97a694dd3080703bc78f52146351d1", - "https://deno.land/std@0.129.0/node/_process/exiting.ts": "bc9694769139ffc596f962087155a8bfef10101d03423b9dcbc51ce6e1f88fce", - "https://deno.land/std@0.129.0/node/_util/_util_callbackify.ts": "79928ad80df3e469f7dcdb198118a7436d18a9f6c08bd7a4382332ad25a718cf", - "https://deno.land/std@0.129.0/node/_utils.ts": "c2c352e83c4c96f5ff994b1c8246bff2abcb21bfc3f1c06162cb3af1d201e615", - "https://deno.land/std@0.129.0/node/buffer.ts": "fbecbf3f237fa49bec96e97ecf56a7b92d48037b3d11219288e68943cc921600", - "https://deno.land/std@0.129.0/node/events.ts": "a1d40fc0dbccc944379ef968b80ea08f9fce579e88b5057fdb64e4f0812476dd", - "https://deno.land/std@0.129.0/node/internal/buffer.mjs": "6662fe7fe517329453545be34cea27a24f8ccd6d09afd4f609f11ade2b6dfca7", - "https://deno.land/std@0.129.0/node/internal/crypto/keys.ts": "16ce7b15a9fc5e4e3dee8fde75dae12f3d722558d5a1a6e65a9b4f86d64a21e9", - "https://deno.land/std@0.129.0/node/internal/crypto/util.mjs": "1de55a47fdbed6721b467a77ba48fdd1550c10b5eee77bbdb602eaffee365a5e", - "https://deno.land/std@0.129.0/node/internal/error_codes.ts": "ac03c4eae33de3a69d6c98e8678003207eecf75a6900eb847e3fea3c8c9e6d8f", - "https://deno.land/std@0.129.0/node/internal/errors.ts": "0d3a1eb03b654beb29b8354759a6902f45a840d4f957e9a3c632a24ce4c32632", - "https://deno.land/std@0.129.0/node/internal/hide_stack_frames.ts": "a91962ec84610bc7ec86022c4593cdf688156a5910c07b5bcd71994225c13a03", - "https://deno.land/std@0.129.0/node/internal/normalize_encoding.mjs": "3779ec8a7adf5d963b0224f9b85d1bc974a2ec2db0e858396b5d3c2c92138a0a", - "https://deno.land/std@0.129.0/node/internal/util.mjs": "684653b962fae84fd2bc08997291b1a50bed09b95dcfa7d35e3c4143163e879a", - "https://deno.land/std@0.129.0/node/internal/util/comparisons.ts": "680b55fe8bdf1613633bc469fa0440f43162c76dbe36af9aa2966310e1bb9f6e", - "https://deno.land/std@0.129.0/node/internal/util/debuglog.ts": "99e91bdf26f6c67861031f684817e1705a5bc300e81346585b396f413387edfb", - "https://deno.land/std@0.129.0/node/internal/util/inspect.mjs": "d1c2569c66a3dab45eec03208f22ad4351482527859c0011a28a6c797288a0aa", - "https://deno.land/std@0.129.0/node/internal/util/types.ts": "b2dacb8f1f5d28a51c4da5c5b75172b7fcf694073ce95ca141323657e18b0c60", - "https://deno.land/std@0.129.0/node/internal/validators.mjs": "a7e82eafb7deb85c332d5f8d9ffef052f46a42d4a121eada4a54232451acc49a", - "https://deno.land/std@0.129.0/node/internal_binding/_libuv_winerror.ts": "801e05c2742ae6cd42a5f0fd555a255a7308a65732551e962e5345f55eedc519", - "https://deno.land/std@0.129.0/node/internal_binding/_node.ts": "e4075ba8a37aef4eb5b592c8e3807c39cb49ca8653faf8e01a43421938076c1b", - "https://deno.land/std@0.129.0/node/internal_binding/_utils.ts": "1c50883b5751a9ea1b38951e62ed63bacfdc9d69ea665292edfa28e1b1c5bd94", - "https://deno.land/std@0.129.0/node/internal_binding/_winerror.ts": "8811d4be66f918c165370b619259c1f35e8c3e458b8539db64c704fbde0a7cd2", - "https://deno.land/std@0.129.0/node/internal_binding/buffer.ts": "722c62b85f966e0777b2d98c021b60e75d7f2c2dabc43413ef37d60dbd13a5d9", - "https://deno.land/std@0.129.0/node/internal_binding/constants.ts": "aff06aac49eda4234bd3a2b0b8e1fbfc67824e281c532ff9960831ab503014cc", - "https://deno.land/std@0.129.0/node/internal_binding/string_decoder.ts": "5cb1863763d1e9b458bc21d6f976f16d9c18b3b3f57eaf0ade120aee38fba227", - "https://deno.land/std@0.129.0/node/internal_binding/types.ts": "4c26fb74ba2e45de553c15014c916df6789529a93171e450d5afb016b4c765e7", - "https://deno.land/std@0.129.0/node/internal_binding/util.ts": "90364292e2bd598ab5d105b48ca49817b6708f2d1d9cbaf08b2b3ab5ca4c90a7", - "https://deno.land/std@0.129.0/node/internal_binding/uv.ts": "3821bc5e676d6955d68f581988c961d77dd28190aba5a9c59f16001a4deb34ba", - "https://deno.land/std@0.129.0/node/util.ts": "7fd6933b37af89a8e64d73dc6ee1732455a59e7e6d0965311fbd73cd634ea630", - "https://deno.land/std@0.129.0/node/util/types.mjs": "f9288198cacd374b41bae7e92a23179d3160f4c0eaf14e19be3a4e7057219a60", - "https://deno.land/std@0.129.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", - "https://deno.land/std@0.129.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", - "https://deno.land/std@0.129.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", - "https://deno.land/std@0.129.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", - "https://deno.land/std@0.129.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", - "https://deno.land/std@0.129.0/path/mod.ts": "4275129bb766f0e475ecc5246aa35689eeade419d72a48355203f31802640be7", - "https://deno.land/std@0.129.0/path/posix.ts": "663e4a6fe30a145f56aa41a22d95114c4c5582d8b57d2d7c9ed27ad2c47636bb", - "https://deno.land/std@0.129.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", - "https://deno.land/std@0.129.0/path/win32.ts": "e7bdf63e8d9982b4d8a01ef5689425c93310ece950e517476e22af10f41a136e", - "https://deno.land/std@0.129.0/streams/conversion.ts": "712585bfa0172a97fb68dd46e784ae8ad59d11b88079d6a4ab098ff42e697d21", - "https://deno.land/std@0.129.0/testing/_diff.ts": "9d849cd6877694152e01775b2d93f9d6b7aef7e24bfe3bfafc4d7a1ac8e9f392", - "https://deno.land/std@0.129.0/testing/asserts.ts": "0a95d9e8076dd3e7f0eeb605a67c148078b4b11f4abcd5eef115b0361b0736a2", - "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.205.0/encoding/_util.ts": "f368920189c4fe6592ab2e93bd7ded8f3065b84f95cd3e036a4a10a75649dcba", - "https://deno.land/std@0.205.0/encoding/base64.ts": "cc03110d6518170aeaa68ec97f89c6d6e2276294b30807e7332591d7ce2e4b72", - "https://deno.land/std@0.205.0/encoding/base64url.ts": "7608862858d28a003f9d6cb78dd61e645ecd1ae1f45faf0e09a306eafe66b16e", - "https://deno.land/std@0.208.0/async/deferred.ts": "a9d1e54c29a9ce8d949cc82e1e6cd901fa3f4d80ca8a2c5c6d2981d77ae798ca", - "https://deno.land/std@0.211.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", - "https://deno.land/std@0.211.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", - "https://deno.land/std@0.211.0/async/delay.ts": "eab3187eee39ccc8cc76d411fb21fb1801250ddb1090e486d5aec2ace5403391", - "https://deno.land/std@0.211.0/bytes/concat.ts": "9cac3b4376afbef98ff03588eb3cf948e0d1eb6c27cfe81a7651ab6dd3adc54a", - "https://deno.land/std@0.211.0/bytes/copy.ts": "f29c03168853720dfe82eaa57793d0b9e3543ebfe5306684182f0f1e3bfd422a", - "https://deno.land/std@0.211.0/io/buf_reader.ts": "3ee2cf0d6570ec1ede46efd5d0b0701719dc573f103a123d2cf9f4bfbc36af31", - "https://deno.land/std@0.211.0/io/buf_writer.ts": "214134bd77bc46e4478cf74b771dfb614b9e23b313df513a34c54aa88df81584", - "https://deno.land/std@0.224.0/archive/_common.ts": "5fcad5f7280cec1d20540b4a6e43ea9a6fd63daf9c4cf8a58c6321d07c32e317", - "https://deno.land/std@0.224.0/archive/untar.ts": "bd39dbeda737f6fd9409b5923d7172f8abd7826508f09c4a1c38886574f6da4a", - "https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834", - "https://deno.land/std@0.224.0/assert/assert_exists.ts": "43420cf7f956748ae6ed1230646567b3593cb7a36c5a5327269279c870c5ddfd", - "https://deno.land/std@0.224.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917", - "https://deno.land/std@0.224.0/assert/equal.ts": "bddf07bb5fc718e10bb72d5dc2c36c1ce5a8bdd3b647069b6319e07af181ac47", - "https://deno.land/std@0.224.0/bytes/concat.ts": "86161274b5546a02bdb3154652418efe7af8c9310e8d54107a68aaa148e0f5ed", - "https://deno.land/std@0.224.0/bytes/copy.ts": "08d85062240a7223e6ec4e2af193ad1a50c59a43f0d86ac3a7b16f3e0d77c028", - "https://deno.land/std@0.224.0/collections/_utils.ts": "b2ec8ada31b5a72ebb1d99774b849b4c09fe4b3a38d07794bd010bd218a16e0b", - "https://deno.land/std@0.224.0/collections/chunk.ts": "e6e533d6ae047f2082892831d463426f79cdd0d3f09ce298317a8469abf8467e", - "https://deno.land/std@0.224.0/collections/deep_merge.ts": "04f8d2a6cfa15c7580e788689bcb5e162512b9ccb18bab1241824b432a78551e", - "https://deno.land/std@0.224.0/collections/distinct.ts": "42d81633e4ccd5ea89118cb08f875bbfc683ac6620df2fa60f3d07270b177f4d", - "https://deno.land/std@0.224.0/collections/distinct_by.ts": "e895705decb0ce88b31c6679fd4e2bd08ac6d47cde7d00bf2016e3c2bac565a7", - "https://deno.land/std@0.224.0/collections/filter_keys.ts": "bf8eaae2769e6ddd34f23ba1912f7feda2b6f374253c07a6630e9a2e384ba611", - "https://deno.land/std@0.224.0/collections/filter_values.ts": "ad8fae5751977598f8c794d65f0d42c9f9e47a7d774cf82b2449cd78ff4f729a", - "https://deno.land/std@0.224.0/collections/map_keys.ts": "2fd91963117d2376ea6dbbe473d77c20ede79b72437ed0dac36161b1af62f058", - "https://deno.land/std@0.224.0/collections/map_values.ts": "91d6ece4b4dc4b94abc378f51e0e309e7f7f18b2ce4c335dab673a31ebd17c75", - "https://deno.land/std@0.224.0/crypto/_wasm/lib/deno_std_wasm_crypto.generated.mjs": "7cd490ae1553c97459bd02de4c3f0a552768a85621949b2366003f3cf84b99d7", - "https://deno.land/std@0.224.0/crypto/_wasm/mod.ts": "e89fbbc3c4722602ff975dd85f18273c7741ec766a9b68f6de4fd1d9876409f8", - "https://deno.land/std@0.224.0/crypto/crypto.ts": "e58d78f3db111a499261dbab037ec78cc89da0516a50e1f0205665980a3417e3", - "https://deno.land/std@0.224.0/crypto/mod.ts": "9148fb70ca3d64977e9487b2002d3b1026e8ad8a2078774b807586ba3c77e3bb", - "https://deno.land/std@0.224.0/crypto/timing_safe_equal.ts": "bc3622b5aec05e2d8b735bf60633425c34333c06cfb6c4a9f102e4a0f3931ced", - "https://deno.land/std@0.224.0/crypto/unstable_keystack.ts": "c2a6f6ed67a4e78745e3c9b490ebb7c12f6066f5c2fe0c69d353961909dc82dd", - "https://deno.land/std@0.224.0/encoding/_util.ts": "beacef316c1255da9bc8e95afb1fa56ed69baef919c88dc06ae6cb7a6103d376", - "https://deno.land/std@0.224.0/encoding/base64.ts": "dd59695391584c8ffc5a296ba82bcdba6dd8a84d41a6a539fbee8e5075286eaf", - "https://deno.land/std@0.224.0/encoding/base64url.ts": "ef40e0f18315ab539f17cebcc32839779e018d86dea9df39d94d302f342a1713", - "https://deno.land/std@0.224.0/encoding/hex.ts": "6270f25e5d85f99fcf315278670ba012b04b7c94b67715b53f30d03249687c07", - "https://deno.land/std@0.224.0/flags/mod.ts": "88553267f34519c8982212185339efdb2d2e62c159ec558f47eb50c8952a6be3", - "https://deno.land/std@0.224.0/fmt/colors.ts": "508563c0659dd7198ba4bbf87e97f654af3c34eb56ba790260f252ad8012e1c5", - "https://deno.land/std@0.224.0/fs/_create_walk_entry.ts": "5d9d2aaec05bcf09a06748b1684224d33eba7a4de24cf4cf5599991ca6b5b412", - "https://deno.land/std@0.224.0/fs/_get_file_info_type.ts": "da7bec18a7661dba360a1db475b826b18977582ce6fc9b25f3d4ee0403fe8cbd", - "https://deno.land/std@0.224.0/fs/_is_same_path.ts": "709c95868345fea051c58b9e96af95cff94e6ae98dfcff2b66dee0c212c4221f", - "https://deno.land/std@0.224.0/fs/_is_subdir.ts": "c68b309d46cc8568ed83c000f608a61bbdba0943b7524e7a30f9e450cf67eecd", - "https://deno.land/std@0.224.0/fs/_to_path_string.ts": "29bfc9c6c112254961d75cbf6ba814d6de5349767818eb93090cecfa9665591e", - "https://deno.land/std@0.224.0/fs/copy.ts": "7ab12a16adb65d155d4943c88081ca16ce3b0b5acada64c1ce93800653678039", - "https://deno.land/std@0.224.0/fs/empty_dir.ts": "e400e96e1d2c8c558a5a1712063bd43939e00619c1d1cc29959babc6f1639418", - "https://deno.land/std@0.224.0/fs/ensure_dir.ts": "51a6279016c65d2985f8803c848e2888e206d1b510686a509fa7cc34ce59d29f", - "https://deno.land/std@0.224.0/fs/ensure_file.ts": "67608cf550529f3d4aa1f8b6b36bf817bdc40b14487bf8f60e61cbf68f507cf3", - "https://deno.land/std@0.224.0/fs/ensure_link.ts": "5c98503ebfa9cc05e2f2efaa30e91e60b4dd5b43ebbda82f435c0a5c6e3ffa01", - "https://deno.land/std@0.224.0/fs/ensure_symlink.ts": "cafe904cebacb9a761977d6dbf5e3af938be946a723bb394080b9a52714fafe4", - "https://deno.land/std@0.224.0/fs/eol.ts": "18c4ac009d0318504c285879eb7f47942643f13619e0ff070a0edc59353306bd", - "https://deno.land/std@0.224.0/fs/exists.ts": "3d38cb7dcbca3cf313be343a7b8af18a87bddb4b5ca1bd2314be12d06533b50f", - "https://deno.land/std@0.224.0/fs/expand_glob.ts": "2e428d90acc6676b2aa7b5c78ef48f30641b13f1fe658e7976c9064fb4b05309", - "https://deno.land/std@0.224.0/fs/mod.ts": "c25e6802cbf27f3050f60b26b00c2d8dba1cb7fcdafe34c66006a7473b7b34d4", - "https://deno.land/std@0.224.0/fs/move.ts": "ca205d848908d7f217353bc5c623627b1333490b8b5d3ef4cab600a700c9bd8f", - "https://deno.land/std@0.224.0/fs/walk.ts": "cddf87d2705c0163bff5d7767291f05b0f46ba10b8b28f227c3849cace08d303", - "https://deno.land/std@0.224.0/http/cookie.ts": "a377fa60175ba5f61dd4b8a70b34f2bbfbc70782dfd5faf36d314c42e4306006", - "https://deno.land/std@0.224.0/io/_common.ts": "36705cdb4dfcd338d6131bca1b16e48a4d5bf0d1dada6ce397268e88c17a5835", - "https://deno.land/std@0.224.0/io/_constants.ts": "3c7ad4695832e6e4a32e35f218c70376b62bc78621ef069a4a0a3d55739f8856", - "https://deno.land/std@0.224.0/io/buf_reader.ts": "aa6d589e567c964c8ba1f582648f3feac45e88ab2e3d2cc2c9f84fd73c05d051", - "https://deno.land/std@0.224.0/io/buffer.ts": "4d1f805f350433e418002accec798bc6c33ce18f614afa65f987c202d7b2234e", - "https://deno.land/std@0.224.0/io/read_all.ts": "876c1cb20adea15349c72afc86cecd3573335845ae778967aefb5e55fe5a8a4a", - "https://deno.land/std@0.224.0/io/reader_from_stream_reader.ts": "a75bbc93f39df8b0e372cc1fbdc416a7cbf2a39fc4c09ddb057f1241100191c5", - "https://deno.land/std@0.224.0/io/to_readable_stream.ts": "ed03a44a1ec1cc55a85a857acf6cac472035298f6f3b6207ea209f93b4aefb39", - "https://deno.land/std@0.224.0/io/write_all.ts": "24aac2312bb21096ae3ae0b102b22c26164d3249dff96dbac130958aa736f038", - "https://deno.land/std@0.224.0/log/_config.ts": "489e11b6d3c917bf5fc954c5e914c095d3480efd924d1e85f2fc576468581c54", - "https://deno.land/std@0.224.0/log/_state.ts": "314c0c31ab9c8f4fb33326ad446757d35f75e5bb21746b7720ed4e3f3a939da1", - "https://deno.land/std@0.224.0/log/base_handler.ts": "f03f013dac9c1a226aab60c6f5751b3131cc4f2808720715285e0dab5697a54e", - "https://deno.land/std@0.224.0/log/console_handler.ts": "9b17b9025c7d94eab950a25eccca81fd9dd71d063b9f458f149e52db52ab0295", - "https://deno.land/std@0.224.0/log/critical.ts": "a8b44a4c6768629d2a506ffe1a1a048da7ae76d3146000f8a492008eac4ecba0", - "https://deno.land/std@0.224.0/log/debug.ts": "ddd63a549fedc3061deba47e41cd2170263831fc266e503a12b610b77439333b", - "https://deno.land/std@0.224.0/log/error.ts": "3979ee3aadc962345ad50eff8a5470ad3fe07c70370808ddc178ee08c3d6c89c", - "https://deno.land/std@0.224.0/log/file_handler.ts": "68d6d81ec53bdd6ba61eaceec19d12de59a8ad12ace0d7980a592a51f924a242", - "https://deno.land/std@0.224.0/log/formatters.ts": "29e0325902c3b1cbb3b9ffc1f9d77ac2d2e5af35d27b9bdfe4fdbbd83588d4a8", - "https://deno.land/std@0.224.0/log/get_logger.ts": "36a5febf5338f68aadafaf23bbe38a208e2a3150ec02ca2ec5d3c6bbaf840641", - "https://deno.land/std@0.224.0/log/info.ts": "e6c4971e35092d85cd3241fe7eccdb42999083d14db6aadc5e741f6231e275ad", - "https://deno.land/std@0.224.0/log/levels.ts": "632ba12baa2600750d004cc5cb4eabe10e410f3f2bdfcb9f7142b6d767f2fee6", - "https://deno.land/std@0.224.0/log/logger.ts": "57109848fb587fb3843a7b893f22f1a86c1b78c289172627a6305906738f238a", - "https://deno.land/std@0.224.0/log/mod.ts": "650c53c2c5d9eb05210c4ec54184ecb5bd24fb32ce28e65fad039853978f53f3", - "https://deno.land/std@0.224.0/log/rotating_file_handler.ts": "a6e7c712e568b618303273ff95483f6ab86dec0a485c73c2e399765f752b5aa8", - "https://deno.land/std@0.224.0/log/setup.ts": "42425c550da52c7def7f63a4fcc1ac01a4aec6c73336697a640978d6a324e7a6", - "https://deno.land/std@0.224.0/log/warn.ts": "f1a6bc33a481f231a0257e6d66e26c2e695b931d5e917d8de4f2b825778dfd4e", - "https://deno.land/std@0.224.0/path/_common/assert_path.ts": "dbdd757a465b690b2cc72fc5fb7698c51507dec6bfafce4ca500c46b76ff7bd8", - "https://deno.land/std@0.224.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", - "https://deno.land/std@0.224.0/path/_common/common.ts": "ef73c2860694775fe8ffcbcdd387f9f97c7a656febf0daa8c73b56f4d8a7bd4c", - "https://deno.land/std@0.224.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", - "https://deno.land/std@0.224.0/path/_common/dirname.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.224.0/path/_common/format.ts": "92500e91ea5de21c97f5fe91e178bae62af524b72d5fcd246d6d60ae4bcada8b", - "https://deno.land/std@0.224.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", - "https://deno.land/std@0.224.0/path/_common/glob_to_reg_exp.ts": "6cac16d5c2dc23af7d66348a7ce430e5de4e70b0eede074bdbcf4903f4374d8d", - "https://deno.land/std@0.224.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.224.0/path/_common/normalize_string.ts": "33edef773c2a8e242761f731adeb2bd6d683e9c69e4e3d0092985bede74f4ac3", - "https://deno.land/std@0.224.0/path/_common/relative.ts": "faa2753d9b32320ed4ada0733261e3357c186e5705678d9dd08b97527deae607", - "https://deno.land/std@0.224.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", - "https://deno.land/std@0.224.0/path/_common/to_file_url.ts": "7f76adbc83ece1bba173e6e98a27c647712cab773d3f8cbe0398b74afc817883", - "https://deno.land/std@0.224.0/path/_interface.ts": "8dfeb930ca4a772c458a8c7bbe1e33216fe91c253411338ad80c5b6fa93ddba0", - "https://deno.land/std@0.224.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", - "https://deno.land/std@0.224.0/path/basename.ts": "7ee495c2d1ee516ffff48fb9a93267ba928b5a3486b550be73071bc14f8cc63e", - "https://deno.land/std@0.224.0/path/common.ts": "03e52e22882402c986fe97ca3b5bb4263c2aa811c515ce84584b23bac4cc2643", - "https://deno.land/std@0.224.0/path/constants.ts": "0c206169ca104938ede9da48ac952de288f23343304a1c3cb6ec7625e7325f36", - "https://deno.land/std@0.224.0/path/dirname.ts": "85bd955bf31d62c9aafdd7ff561c4b5fb587d11a9a5a45e2b01aedffa4238a7c", - "https://deno.land/std@0.224.0/path/extname.ts": "593303db8ae8c865cbd9ceec6e55d4b9ac5410c1e276bfd3131916591b954441", - "https://deno.land/std@0.224.0/path/format.ts": "6ce1779b0980296cf2bc20d66436b12792102b831fd281ab9eb08fa8a3e6f6ac", - "https://deno.land/std@0.224.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", - "https://deno.land/std@0.224.0/path/glob_to_regexp.ts": "7f30f0a21439cadfdae1be1bf370880b415e676097fda584a63ce319053b5972", - "https://deno.land/std@0.224.0/path/is_absolute.ts": "4791afc8bfd0c87f0526eaa616b0d16e7b3ab6a65b62942e50eac68de4ef67d7", - "https://deno.land/std@0.224.0/path/is_glob.ts": "a65f6195d3058c3050ab905705891b412ff942a292bcbaa1a807a74439a14141", - "https://deno.land/std@0.224.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", - "https://deno.land/std@0.224.0/path/join_globs.ts": "5b3bf248b93247194f94fa6947b612ab9d3abd571ca8386cf7789038545e54a0", - "https://deno.land/std@0.224.0/path/mod.ts": "f6bd79cb08be0e604201bc9de41ac9248582699d1b2ee0ab6bc9190d472cf9cd", - "https://deno.land/std@0.224.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", - "https://deno.land/std@0.224.0/path/normalize_glob.ts": "cc89a77a7d3b1d01053b9dcd59462b75482b11e9068ae6c754b5cf5d794b374f", - "https://deno.land/std@0.224.0/path/parse.ts": "77ad91dcb235a66c6f504df83087ce2a5471e67d79c402014f6e847389108d5a", - "https://deno.land/std@0.224.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", - "https://deno.land/std@0.224.0/path/posix/basename.ts": "d2fa5fbbb1c5a3ab8b9326458a8d4ceac77580961b3739cd5bfd1d3541a3e5f0", - "https://deno.land/std@0.224.0/path/posix/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.224.0/path/posix/constants.ts": "93481efb98cdffa4c719c22a0182b994e5a6aed3047e1962f6c2c75b7592bef1", - "https://deno.land/std@0.224.0/path/posix/dirname.ts": "76cd348ffe92345711409f88d4d8561d8645353ac215c8e9c80140069bf42f00", - "https://deno.land/std@0.224.0/path/posix/extname.ts": "e398c1d9d1908d3756a7ed94199fcd169e79466dd88feffd2f47ce0abf9d61d2", - "https://deno.land/std@0.224.0/path/posix/format.ts": "185e9ee2091a42dd39e2a3b8e4925370ee8407572cee1ae52838aed96310c5c1", - "https://deno.land/std@0.224.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", - "https://deno.land/std@0.224.0/path/posix/glob_to_regexp.ts": "76f012fcdb22c04b633f536c0b9644d100861bea36e9da56a94b9c589a742e8f", - "https://deno.land/std@0.224.0/path/posix/is_absolute.ts": "cebe561ad0ae294f0ce0365a1879dcfca8abd872821519b4fcc8d8967f888ede", - "https://deno.land/std@0.224.0/path/posix/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.224.0/path/posix/join.ts": "7fc2cb3716aa1b863e990baf30b101d768db479e70b7313b4866a088db016f63", - "https://deno.land/std@0.224.0/path/posix/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", - "https://deno.land/std@0.224.0/path/posix/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", - "https://deno.land/std@0.224.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", - "https://deno.land/std@0.224.0/path/posix/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", - "https://deno.land/std@0.224.0/path/posix/parse.ts": "09dfad0cae530f93627202f28c1befa78ea6e751f92f478ca2cc3b56be2cbb6a", - "https://deno.land/std@0.224.0/path/posix/relative.ts": "3907d6eda41f0ff723d336125a1ad4349112cd4d48f693859980314d5b9da31c", - "https://deno.land/std@0.224.0/path/posix/resolve.ts": "08b699cfeee10cb6857ccab38fa4b2ec703b0ea33e8e69964f29d02a2d5257cf", - "https://deno.land/std@0.224.0/path/posix/to_file_url.ts": "7aa752ba66a35049e0e4a4be5a0a31ac6b645257d2e031142abb1854de250aaf", - "https://deno.land/std@0.224.0/path/posix/to_namespaced_path.ts": "28b216b3c76f892a4dca9734ff1cc0045d135532bfd9c435ae4858bfa5a2ebf0", - "https://deno.land/std@0.224.0/path/relative.ts": "ab739d727180ed8727e34ed71d976912461d98e2b76de3d3de834c1066667add", - "https://deno.land/std@0.224.0/path/resolve.ts": "a6f977bdb4272e79d8d0ed4333e3d71367cc3926acf15ac271f1d059c8494d8d", - "https://deno.land/std@0.224.0/path/to_file_url.ts": "88f049b769bce411e2d2db5bd9e6fd9a185a5fbd6b9f5ad8f52bef517c4ece1b", - "https://deno.land/std@0.224.0/path/to_namespaced_path.ts": "b706a4103b104cfadc09600a5f838c2ba94dbcdb642344557122dda444526e40", - "https://deno.land/std@0.224.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", - "https://deno.land/std@0.224.0/path/windows/basename.ts": "6bbc57bac9df2cec43288c8c5334919418d784243a00bc10de67d392ab36d660", - "https://deno.land/std@0.224.0/path/windows/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.224.0/path/windows/constants.ts": "5afaac0a1f67b68b0a380a4ef391bf59feb55856aa8c60dfc01bd3b6abb813f5", - "https://deno.land/std@0.224.0/path/windows/dirname.ts": "33e421be5a5558a1346a48e74c330b8e560be7424ed7684ea03c12c21b627bc9", - "https://deno.land/std@0.224.0/path/windows/extname.ts": "165a61b00d781257fda1e9606a48c78b06815385e7d703232548dbfc95346bef", - "https://deno.land/std@0.224.0/path/windows/format.ts": "bbb5ecf379305b472b1082cd2fdc010e44a0020030414974d6029be9ad52aeb6", - "https://deno.land/std@0.224.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", - "https://deno.land/std@0.224.0/path/windows/glob_to_regexp.ts": "e45f1f89bf3fc36f94ab7b3b9d0026729829fabc486c77f414caebef3b7304f8", - "https://deno.land/std@0.224.0/path/windows/is_absolute.ts": "4a8f6853f8598cf91a835f41abed42112cebab09478b072e4beb00ec81f8ca8a", - "https://deno.land/std@0.224.0/path/windows/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.224.0/path/windows/join.ts": "8d03530ab89195185103b7da9dfc6327af13eabdcd44c7c63e42e27808f50ecf", - "https://deno.land/std@0.224.0/path/windows/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", - "https://deno.land/std@0.224.0/path/windows/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", - "https://deno.land/std@0.224.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", - "https://deno.land/std@0.224.0/path/windows/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", - "https://deno.land/std@0.224.0/path/windows/parse.ts": "08804327b0484d18ab4d6781742bf374976de662f8642e62a67e93346e759707", - "https://deno.land/std@0.224.0/path/windows/relative.ts": "3e1abc7977ee6cc0db2730d1f9cb38be87b0ce4806759d271a70e4997fc638d7", - "https://deno.land/std@0.224.0/path/windows/resolve.ts": "8dae1dadfed9d46ff46cc337c9525c0c7d959fb400a6308f34595c45bdca1972", - "https://deno.land/std@0.224.0/path/windows/to_file_url.ts": "40e560ee4854fe5a3d4d12976cef2f4e8914125c81b11f1108e127934ced502e", - "https://deno.land/std@0.224.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", - "https://deno.land/std@0.224.0/semver/_constants.ts": "5ef89c5f33e6095546ae3e57920592feefcb8372d4cc05542f6bf15a1977e3c9", - "https://deno.land/std@0.224.0/semver/_shared.ts": "5c53a675225cba9ad74ae2e17c124e333728fc2b551a13e8a32b99433b90c1c2", - "https://deno.land/std@0.224.0/semver/_test_comparator_set.ts": "c57f3009ee30748becb15c14de8f0af518ba7f7e9c4db0dd2a31f925c5f2c811", - "https://deno.land/std@0.224.0/semver/can_parse.ts": "590094363e0ae1b97a71e9924633cda9c4582d42299efbefa643c9de5d9c754c", - "https://deno.land/std@0.224.0/semver/compare.ts": "7b5610c25ded57dc4aa41034ee02857d1a6fff609ab183afea17849284f86236", - "https://deno.land/std@0.224.0/semver/constants.ts": "bd442eb6d51d5032686e02abdf575b32dd08f2c95e653e66bbeb927e8ff54bb5", - "https://deno.land/std@0.224.0/semver/difference.ts": "460608126dd5d49b2b1b93b5d8c70f93936ee0f7049283d4050c2d691115b81c", - "https://deno.land/std@0.224.0/semver/equals.ts": "c22d79ce6f9b80fb8db9af3cb680d8103081fc2c460d57a4761ba11f82b683bd", - "https://deno.land/std@0.224.0/semver/format.ts": "a4492b55a10210a10b9307491c0ec7f0c2475cc82af33de1c2565a15083b83df", - "https://deno.land/std@0.224.0/semver/format_range.ts": "493a9916a806270fc0e4721cf3b4c6a6815cf240150e7e87c58dec23eb574aaa", - "https://deno.land/std@0.224.0/semver/greater_or_equal.ts": "d05ddd0adce43758ce74d4a4d7bc2a20b79cbd7604f01f604187c12735a65d0e", - "https://deno.land/std@0.224.0/semver/greater_than.ts": "12e7bd3790539b791147a1c10654747c60791f2699b72e07bcaba6042ac946a6", - "https://deno.land/std@0.224.0/semver/greater_than_range.ts": "6e709b6220c012660c45915e54485c90d40e3300064f2e083cbf56b636f9c419", - "https://deno.land/std@0.224.0/semver/increment.ts": "24e10e8d867bdbabd3e31d5e1caa4276329d7afb75cb5e89691e9597fdba7720", - "https://deno.land/std@0.224.0/semver/is_range.ts": "00083508729b878ba33fa919cb670d533b1e370798cced3d1e5b2068c5176fb6", - "https://deno.land/std@0.224.0/semver/is_semver.ts": "dc9c36d7a61cfe19749bce2b97d7fb808a66f7f40a2ae9ff1ee6cdc774ecff67", - "https://deno.land/std@0.224.0/semver/less_or_equal.ts": "7f2f07e2844aa8de020b265674e19e94003d00b9cf8d52bc2537007faca06627", - "https://deno.land/std@0.224.0/semver/less_than.ts": "890eb36e6294d245934a33dbe6818164c4ec6fddf3aa585a590031393f781719", - "https://deno.land/std@0.224.0/semver/less_than_range.ts": "4fc346b8151c8b5ad29da7d898ef4a80b84091c8181842d04e6058d319fcf90f", - "https://deno.land/std@0.224.0/semver/max_satisfying.ts": "3d402be276171f677b0eb2d02b9b6b9ddb170f0d52bce545c4839175e2fd0dfc", - "https://deno.land/std@0.224.0/semver/min_satisfying.ts": "f7d7d2d3cb4fa333c29f92e383dda7347ea803d0af777c23c32b4c8132be8fc0", - "https://deno.land/std@0.224.0/semver/mod.ts": "73ba48a686ac3a5df6508f518ecf97a64df1db438ff130a23bbed3cee1f567a8", - "https://deno.land/std@0.224.0/semver/not_equals.ts": "4d16649686e95c7c9bd6631c854e458d81f8c2e53f1122f0e39798239893b3b4", - "https://deno.land/std@0.224.0/semver/parse.ts": "94c09f3486643853e7438e64f2c6741462fbeb84cf141ad5bfe88b73ec4cb0f3", - "https://deno.land/std@0.224.0/semver/parse_range.ts": "f48ca42b59988d9274225b1f93c39d84005e810bb858faf564f48c0ad8431fa7", - "https://deno.land/std@0.224.0/semver/range_intersects.ts": "bfcdff2731a2ceda85f1a189ccb5909c764be3baa735f9591b319d7e0fc6b711", - "https://deno.land/std@0.224.0/semver/range_max.ts": "67a56c8851da984dd314456f834eff8cf3814a090270554464ab62bf1f026c3d", - "https://deno.land/std@0.224.0/semver/range_min.ts": "d961ba26d8f01a79c8877cb48f9f566778947fc1df0e2bdfa3b31c7dd39f7448", - "https://deno.land/std@0.224.0/semver/satisfies.ts": "8c163ca35cb05d0384bcef6b8dd2842f15b39a375d126e10c2fbec6274a215cf", - "https://deno.land/std@0.224.0/semver/test_range.ts": "e8f46ed1a11817ec9ddf691e347a1b03f8096d12e13fa5dabfafa6e459fc7799", - "https://deno.land/std@0.224.0/semver/try_parse.ts": "043204f1235243c3d02b66ffca2c37dc2941e417dbccaf6c3a15b476a33f0e24", - "https://deno.land/std@0.224.0/semver/try_parse_range.ts": "cf1e2d489bbe9ed6185de551acdf708e23e0e1bc4be0958052dfef178f763eee", - "https://deno.land/std@0.224.0/semver/types.ts": "9286e72b160e25856608f4bc5f08f8f5ccba54e6cdfc9aba8adee68a355c4b36", - "https://deno.land/std@0.224.0/url/_strip.ts": "928fe9af16d7c5bf24816d1e90d84bfe702f3e059f9d63509b5a37087e947800", - "https://deno.land/std@0.224.0/url/basename.ts": "068260fa6da5fae5236d94beb90d4631e555e6c169d5b6dbe2142fd449c97c87", - "https://deno.land/std@0.224.0/url/dirname.ts": "e60c42ab7fd6c84074fbc4fe222a14822381a6a8539c42dbfdc1f991d3d62951", - "https://deno.land/std@0.224.0/url/extname.ts": "3c93dffcc86cab6af0473b083499849eee504dbe9d28242bc7cc8c3b526e3dbb", - "https://deno.land/std@0.224.0/url/join.ts": "ea92b72fcbc84cf7662cdba305f094faa05c2e2097bf0d21b983b148c877d384", - "https://deno.land/std@0.224.0/url/mod.ts": "bccc4e7ffe062e08e7914330b31b3e53b65d788f3702074a9ae5107e5cb6f11f", - "https://deno.land/std@0.224.0/url/normalize.ts": "4f5a06f85fca75b8bbcbdf320807da5ecf617d7fccef1c8f87a8014d2fdca9cb", - "https://deno.land/std@0.224.0/uuid/_common.ts": "05c787c5735776c4e48e30294878332c39cb7738f50b209df4eb9f2b0facce4d", - "https://deno.land/std@0.224.0/uuid/constants.ts": "eb6c96871e968adf3355507d7ae79adce71525fd6c1ca55c51d32ace0196d64e", - "https://deno.land/std@0.224.0/uuid/mod.ts": "cefc8e2f77d9e493739c8dc4ec141b12b855414bf757e778bf9b00f783506b76", - "https://deno.land/std@0.224.0/uuid/v1.ts": "cc45e7eb1d463d7d38b21a3c6e4de55ff98598ca442309321575fe841b323a54", - "https://deno.land/std@0.224.0/uuid/v3.ts": "689f2d64a9460a75877a2eed94662d9cb31bedb890d72fce0d161ef47d66cc26", - "https://deno.land/std@0.224.0/uuid/v4.ts": "1319a2eeff7259adda416ec5f7997ded80d3165ef0787012793fc8621c18c493", - "https://deno.land/std@0.224.0/uuid/v5.ts": "75f76d9e53583572fe3d4893168530986222d439b1545b56d4493c6d5d1cd81d", - "https://deno.land/x/compress@v0.4.5/deps.ts": "096395daebc7ed8a18f0484e4ffcc3a7f70e50946735f7df9611a7fcfd8272cc", - "https://deno.land/x/crc32@v0.2.0/mod.ts": "de7a3fa2d4ef24b96fc21e1cc4d2d65d1d2b1dcea92f63960e3e11bfa82df0fa", - "https://deno.land/x/dispose@1.1.0/async-disposable-stack.ts": "15bb66608a6145be63eabf12fa63462fb7553af9440671261424b6e3d4042405", - "https://deno.land/x/dispose@1.1.0/async-disposable.ts": "38399695820f15de40a36e732448f45bdd262ec0a6a281a8fd4f9449831655d3", - "https://deno.land/x/dispose@1.1.0/disposable-stack.ts": "97bd374fcbfd19cb5311302b7b3b4fd03c06a7aebf59f1ade735906eb5e2888c", - "https://deno.land/x/dispose@1.1.0/disposable.ts": "4e47a6d4229f9fe6fc500e7b88c1aa68e2e815e4d3b2c1d661570f4b0b2c41cc", - "https://deno.land/x/dispose@1.1.0/mod.ts": "90b3c6db83c29d3f2bcf4bd7c0a3676b79dd356708562339adb3e79daba34efd", - "https://deno.land/x/djwt@v3.0.1/algorithm.ts": "b1c6645f9dbd6e6c47c123a3b18c28b956f91c65ed17f5b6d5d968fc3750542b", - "https://deno.land/x/djwt@v3.0.1/deps.ts": "c8b329dc18c54f93879699ffb728bd805d548f7c64c4d2916efa5fb2c712cc47", - "https://deno.land/x/djwt@v3.0.1/mod.ts": "eca176976595654b8a536e7b8029a029c435d079ef58feff2d3bde33ea107417", - "https://deno.land/x/djwt@v3.0.1/signature.ts": "a5649368a4b433b2810e7d47f53661fe3b0f7fe1778cb49234ceae3d6e861185", - "https://deno.land/x/djwt@v3.0.1/util.ts": "5cb264d2125c553678e11446bcfa0494025d120e3f59d0a3ab38f6800def697d", - "https://deno.land/x/levenshtein@v1.0.1/mod.ts": "6b632d4a9bb11ba6d5d02a770c7fc9b0a4125f30bd9c668632ff85e7f05ff4f6", - "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", - "https://deno.land/x/monads@v0.5.10/option/option.ts": "76ef03c3370207112759f932f39aab04999cdd1a5c5a954769b3868602faf883", - "https://deno.land/x/monads@v0.5.10/result/result.ts": "bb482b7b90949d3a67e78b4b0dd949774eccaa808df39ac83f6a585526edeb37", - "https://deno.land/x/oauth2_client@v1.0.2/mod.ts": "ea54c0a894d3303a80552ca65835b5b104d16415343b24e191f08e7f5db90ff7", - "https://deno.land/x/oauth2_client@v1.0.2/src/authorization_code_grant.ts": "36953750b75fb0a14fbf4e0e4bcc1d5ae0209d216d7b32f93a134b035ecf3d25", - "https://deno.land/x/oauth2_client@v1.0.2/src/client_credentials_grant.ts": "5bb9869925c5f5d11e8d66a86da37e2353107d57f57ec3a1480e197462e79be5", - "https://deno.land/x/oauth2_client@v1.0.2/src/errors.ts": "7603479b80386b5cc7e384c2af5f5262ed7c2123e4e297d9f21e95515f8a803a", - "https://deno.land/x/oauth2_client@v1.0.2/src/grant_base.ts": "86ae9eb3495f2304a634498fbb83741c5dc0e1357e02c40e12e212de5e9750f7", - "https://deno.land/x/oauth2_client@v1.0.2/src/implicit_grant.ts": "d5359aebbdaaff039c0d078890aa4ffa2869da19c521e535e15caf09c069e6b8", - "https://deno.land/x/oauth2_client@v1.0.2/src/oauth2_client.ts": "4e5ec26676661a3f69544826a4c27b30cc07dfcfc77f86981c324aaa53291a11", - "https://deno.land/x/oauth2_client@v1.0.2/src/pkce.ts": "d286a087cc8ef985b71a2bf391e9e9d86a78ac6d93e30c46e73006171aed0986", - "https://deno.land/x/oauth2_client@v1.0.2/src/refresh_token_grant.ts": "22cb1598e48fb037b4111a446573f7b48a3b361b58de58af17ba097221b12b54", - "https://deno.land/x/oauth2_client@v1.0.2/src/resource_owner_password_credentials.ts": "bd3df99d32eeebffb411c4a2d3c3d057395515fb41690a8d91460dd74b9bf466", - "https://deno.land/x/oauth2_client@v1.0.2/src/types.ts": "3327c2e81bc483e91843fb103595dd304393c3ac2a530d1c89200b6a5cf75e13", - "https://deno.land/x/redis@v0.32.1/backoff.ts": "33e4a6e245f8743fbae0ce583993a671a3ac2ecee433a3e7f0bd77b5dd541d84", - "https://deno.land/x/redis@v0.32.1/connection.ts": "45a3328ca49c021c9192c48510dba9808b29de4d8e65e424d7a6a1e2d782fd74", - "https://deno.land/x/redis@v0.32.1/errors.ts": "4c47b278c8a87e0f49c0f7a96c74c5bee09e4d5ea19f892923b0281707112d04", - "https://deno.land/x/redis@v0.32.1/executor.ts": "5ac4c1f7bec44d12ebc0f3702bf074bd3ba6c1aae74953582f6358d2948718e7", - "https://deno.land/x/redis@v0.32.1/internal/encoding.ts": "0525f7f444a96b92cd36423abdfe221f8d8de4a018dc5cb6750a428a5fc897c2", - "https://deno.land/x/redis@v0.32.1/internal/symbols.ts": "e36097bab1da1c9fe84a3bb9cb0ed1ec10c3dc7dd0b557769c5c54e15d110dd2", - "https://deno.land/x/redis@v0.32.1/mod.ts": "a2a2318e67db704c799a13cc840114b9f344a82cf682c933a293e90b1a02b3fa", - "https://deno.land/x/redis@v0.32.1/pipeline.ts": "f0ec80f58a88e9b9b157155882c2bb3568890e6b4d67ad99760a6fc2c51b47ba", - "https://deno.land/x/redis@v0.32.1/protocol/deno_streams/command.ts": "8e1e84f6d94637d8814abfac91de0916e97c6ea7d2ccab9ea9e3c9f2de283602", - "https://deno.land/x/redis@v0.32.1/protocol/deno_streams/mod.ts": "346d473bd4e834e397ca25bbbf1021f44e577adda8d6391a41bd03b7bc8c72f4", - "https://deno.land/x/redis@v0.32.1/protocol/deno_streams/reply.ts": "2707e9fe18608c1a9a49b4f0094397c7400141b8208170c7bcb128ceb5ddd790", - "https://deno.land/x/redis@v0.32.1/protocol/shared/command.ts": "71639adc162dac95fa41d701a7112bcd5d5cf3fd22c1307c8840f983628540be", - "https://deno.land/x/redis@v0.32.1/protocol/shared/reply.ts": "3311ff66357bacbd60785cb43b97539c341d8a7d963bc5e80cb864ac81909ea5", - "https://deno.land/x/redis@v0.32.1/protocol/shared/types.ts": "3d1ff5983abc1e4e56c751aaf4672042c87334cd004ce2fc0493575432151e1f", - "https://deno.land/x/redis@v0.32.1/pubsub.ts": "a36892455b0a4a50af169332a165b0985cc90d84486087f036e507e3137b2afb", - "https://deno.land/x/redis@v0.32.1/redis.ts": "6ec7be95f64174078279518afff0535d04d7f96d90da36f2e9a9ab9f388cbaa1", - "https://deno.land/x/redis@v0.32.1/stream.ts": "73b286174d4a02006720c9e2d193754d10e041e8e1450188e32f203a188bbecb", - "https://deno.land/x/redis@v0.32.1/vendor/https/deno.land/std/async/delay.ts": "7315c16b92e21d527d1acc7cced18c09d081c8a1efa2a993f7c039cf21ad1d54", - "https://deno.land/x/redis@v0.32.1/vendor/https/deno.land/std/bytes/concat.ts": "de0d17d9c07f9f87c353ce9df27ef5d7409d0ededf0885f50646336788920dbd", - "https://deno.land/x/redis@v0.32.1/vendor/https/deno.land/std/io/buf_reader.ts": "6529a1668e0054cb788e8a01d8c704c01e013698c6cd5bb141a35a2971cc9fe1", - "https://deno.land/x/redis@v0.32.1/vendor/https/deno.land/std/io/buf_writer.ts": "0dbd95b759fe47e53f99a4945e66673af581ebccfebd2ab4c764c3b09d10ea51", - "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", - "https://deno.land/x/zod@v3.22.2/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c", - "https://deno.land/x/zod@v3.22.2/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", - "https://deno.land/x/zod@v3.22.2/helpers/parseUtil.ts": "f791e6e65a0340d85ad37d26cd7a3ba67126cd9957eac2b7163162155283abb1", - "https://deno.land/x/zod@v3.22.2/helpers/partialUtil.ts": "998c2fe79795257d4d1cf10361e74492f3b7d852f61057c7c08ac0a46488b7e7", - "https://deno.land/x/zod@v3.22.2/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e", - "https://deno.land/x/zod@v3.22.2/helpers/util.ts": "8baf19b19b2fca8424380367b90364b32503b6b71780269a6e3e67700bb02774", - "https://deno.land/x/zod@v3.22.2/index.ts": "d27aabd973613985574bc31f39e45cb5d856aa122ef094a9f38a463b8ef1a268", - "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/s3-request-presigner@3.335.0?pin=v131": "f32c826ef4de3839aca3e48ed856426019a2f16cc787e1c09d2214d24dd448cb", - "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://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/engine/bindings.ts": "e9391491bf5c4f682267a5cb4ae384ef33ed7c15273fcada13bea7b064cf1270", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/config.ts": "d9c92871308ee08497b654f5ad42dd671c4ffcfe49c6feacff9b310b6b9fa31d", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/config/loader.ts": "f46ed5199db89c6e5ebe5accb1cd7561a22cb8a158dfc86b371956d3002662cb", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/config/shared.ts": "b2cc53588d6651b5261de312c4b92f517f0b764cd95eb1b8771e46c3f46376a0", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/config/types.ts": "77f7051cece41b67b47471511496e35b76bd7eda0ba10cdcd02fda261ca0ed13", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/crypto.ts": "00efcbf7906e66105a5b18f1654cd78bc05f8b2ed755cc4be9f5755f49a577c3", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/computation_engine.ts": "9fb3033c491a17aec92757a1b7c299fa5c5197dff666b86f074beebc643d239f", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/planner/args.ts": "2eecd557a4cde56ebdfbbdf998bff4386fcd0b79007a7ba5fc1d2c71f57f3a85", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/planner/dependency_resolver.ts": "98c9505a700ad0cd74fac327e7258aae6bbd60cd60587a4ec56bcfe57cf6fe79", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/planner/injection_utils.ts": "21a0b4117e00c48533a83bd2985046eb4510aba3c331c02bf64920d719d282bc", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/planner/mod.ts": "b7cd23b11ab3520919c149842ac440aff9cf49067cd33c9fc2007b6e7d9f5cde", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/planner/parameter_transformer.ts": "953d7c970141e44e29be72d79cc253ab26ea5a366a2f4bcd43ec6c73203737ca", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/planner/policies.ts": "0ef1f49f06d17e1df8e8ec0108bdf1458fcf95b42be8fbdb0c1357b46a5020a2", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/query_engine.ts": "152e96d3c4f5e1161f974ca36c2034ea3d3ef56f548fa64bbb4563dd2ed7d6dc", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/stage_id.ts": "b3b3c62215ff421103788079b77943af8f0026a56eafaa929415cb39ccde3cca", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/code_generator.ts": "c7dc111b4abde96cd8af913eb4f927f7ec62643e6aaa8a81279676fb605e358f", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/common.ts": "4ffe1e3ff6db33131cd7917e76dae2853b3834508bbbffd4ad9e693a4cd37c22", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/inline_validators/common.ts": "112f56c8e590215b0af0c1b46dc84b85cb5b9b43621a52646876c35a43103499", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/inline_validators/constraints.ts": "f173ed12173c92b3eca2b306973dee34e18feeccd2c4c51f11fe98216e7d80e7", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/inline_validators/list.ts": "d6ea1984e6dd3e422173b5252fb5e10d27f216c7051aad1452250a0454c465d5", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/inline_validators/number.ts": "aebeb91359a8edcc444b1a229dbca67cefd910837e771f4f18eba0070bdd80bc", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/inline_validators/object.ts": "1c10be974a2ba3b2b60072c34af84497cd099f263fb8223ebe763bccb7ec451a", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/inline_validators/string.ts": "7ea1e1661e54d093a56df7be22ee8590940efd3a230317ebc80b0978a0de5ce4", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/input.ts": "f6f00f03d82288804a31852a65ec89f021134591a6888e9972ea7512bb41aecd", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/matching_variant.ts": "9d9e2f149cbfa08fe39c648198644cb899ff26a2a0ba8d03281c25c338abf42f", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/engine/typecheck/result.ts": "0577ffa0f7f7480e9e34011d72943327629e1263dbc3f4a119fb586fc8b3ce70", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/errors.ts": "89cd0155ccf0d5f4c2862949b5baed441ca8cba0aac8fae04a7f8f45601c22f8", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/libs/jsonpath.ts": "f6851288fb8600dec0e62d5f804f41332b6197b255b6497360ba7e4b7f375cba", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/log.ts": "a44dca4a37baef59ee50bd44b4ee12c77fd57bd57c0bc09aab8016c2550b1b32", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/main.ts": "af5c054d8188afa43b3f5cf3f779a3b0fe2c2bccf2cb7dbde942f469a0ebaad7", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/Runtime.ts": "6fba220b09e69aefca2e4e5a77eaf830906dece0fa4b500d878edb6c6463953c", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/deno.ts": "c893dcf170b38547239d550080a856aca46a788de9922f282bbacf9b5841b5fe", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/deno/deno.ts": "9f5c74dd2b70f0259e9891b62907720e0f77117a34e69f40efd3e080c39acc6c", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/deno/deno_messenger.ts": "18ee6e6797702955744bc2a11e37e4e3cdccdbf249cc4877cbacaeb3aa66775c", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/deno/shared_types.ts": "2ef1fa347c241162a8a32cebb1113b20f94326c4b20b0883e72b79bb879e5d07", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/deno/worker.ts": "fabc721575f048d8e4ca960e41dcda57b7103151b606a736ac0358dd7c418bc6", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/graphql.ts": "a03a5f3e1d538f736c9691074e67e6b4d8bfa880bd7e49918216d8dcd6226acb", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/http.ts": "580b43b0db099a0c5ac3aa971c74fe78bee8e95addc2369d1a827fcc6e15033e", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/mod.ts": "b1d8e5d42a6b382e83342e562397d8213490ce5af245e8b6b1751eeec61d79d2", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "5457677d4b44abc060cb7c625a66fd4db231206df656bfc41b5a2e017833eea2", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "744b0e499ef5a8cdb10f35c5c8570984cac7a00f64d85c1374dabf00624b0397", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/patterns/messenger/types.ts": "23ddb7d12e4d049158ffefdb0b8f00ff9c8b7c1c31637b101e391f89ae6e8a97", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma.ts": "e4b679c3b5e28a323d72bde5ebbcc113abe0efc8da82d70b3b2e390149c57d84", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "70e8b612f4c771dd607233cede7036f7d343702086a8d9cd3904d8e947daac90", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma/hooks/mod.ts": "3e33752e3676b538c7016f3ddd4f1f49d75e217c410bcaa6319d33ed987d3c60", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "b2e7c266991b8c62a86ba7d0c73bd9ddc5e58f030936fe59e595b3e84021f2d8", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma/migration.ts": "3dae1ae03546123ffc2bee76a5d049ab76cf8724fdf353b0c610f6e86364ab2d", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma/mod.ts": "a0e44e86a45aad8b2bb0357ddbe8ba02802e6979451553940ec3688be571127f", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma/prisma.ts": "c36709efd13ea0553d552483d8a268c2432276a932144428bcaac869e2913ca4", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/prisma/types.ts": "44e221d8143e314e8db39b62e245518a290bf4248ace208a755d0aa1a5af99bb", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/python.ts": "32825eba0eb6680fa97933535a96ae80e09e7bd0d207b0385dd3da8cf843bbec", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/random.ts": "2f65216d0bd56953af78938151f697f11e7c22a1ac0c68d15f85940c5fd49a1d", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/s3.ts": "a1d278e20e5095118e8f457a45bfc361be123f67f346ddd14e6c26a8b5493472", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/temporal.ts": "b31d30777e71ae4c8d2ac1cdf522b7b498d545d0c60c2fb4e76c685f3e2c49ee", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/typegate.ts": "ef7fc75335d947e9afce79418bb3802a4a174ad68b4b4b719232fe7df5d78040", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/typegraph.ts": "55b5d9b6a4a0d536a06d63b57e863f12f3dae38b2b421f205c50340424e43f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/utils/graphql_forward_vars.ts": "5faf28e955a0e950a5c79bc3ceb68d9c4a14df3dd2e94dd867e063de6ae1da88", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/utils/graphql_inline_vars.ts": "f69ace5ac7509f3ce33c0b31b73597372efba42eac09948ab5e8e6d38b37e3a3", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/utils/http.ts": "842af99040fd0e3456690f7674311da3a0b9ea64c608d7bc588df1ab28f163a3", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/wasm_reflected.ts": "b3562d7cafc777625f9cc06d74fcac9634d64ab5d191f2e7742155e7426377e0", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/wasm_wire.ts": "d3e53d0eab0482bd9d222897a147d5afa4ea5e31b66b7b98d40b5f13f39e9f7b", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/runtimes/wit_wire/mod.ts": "0cbea1f1d166d99c6e730cc8f2fb19cc5ae27e0d391e038acfe41e525c96f6b9", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/artifact_service.ts": "b910693b1ed6b8ae4ed4036b0e4c423313870cce514cde7095c6dd8f03234bd9", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/cookies.ts": "ebe37f0ff356df71cb72911bb17c13744dba9ebcd5e0eb69abf41d73cf179ee8", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/mod.ts": "0fd5fa8dc8d2278df02a93b457fbb4042261871e57985719e70e39fe491b00f0", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/protocols/basic.ts": "a4361603e15ab387ec4db8664965ecae15457eeb6503f65bc8a11bf7f87a3a6a", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/protocols/internal.ts": "a93b3234a46f4de9e726582d024a3c73114a195560ac59a9e31ad0b3cf397f39", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/protocols/jwt.ts": "f779924412dc01fc557beb200b52198382dc01345e14deb4bf8af9324e1bdbb6", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/protocols/oauth2.ts": "3a6db9349f0e5c8210480eeea26f6c8e26bf2f5df3b5c2a509ac1f3428b214c7", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/protocols/protocol.ts": "158c55618be6165a9ee393ccd1a9da267b084ff04df7e627af1e4fc8fe636644", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/routes/mod.ts": "70ceac64f3e868d5b00b21bd5094b149374f0be487293ad4098415663999320d", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/routes/take.ts": "21304fcbfa9e9f92f240121ac2fad677b315ca1f7e55ec5e6f2905d1ccdeb1aa", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/auth/routes/validate.ts": "f8a2a7f4fa58dac1f10f89dd76d8ec5a4d7ce7e98ddd1d8e56a178c9f6158eaa", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/graphql_service.ts": "bc58c922b24ce2739ccaa27447665bc136f65786b38021b011a784d60e63d758", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/info_service.ts": "a9a1f6ebdcbe64d55806597b879dd5714c32b8b861bed695a944f5e2f1213beb", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/middlewares.ts": "b870a0f9e70880f020510b64d19e0e23450656490ac117192398bafdb00c0ccd", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/playground_service.ts": "d293851d3a5f4d3b196115a38b87d9c4826355290e42c1c1a586604bbbaffd6e", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/responses.ts": "374620f4f7bd96bacb582247f75e279906bff7dee4a1ae107364ba2fbef0b192", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/services/rest_service.ts": "59f294bb3d32353704978f4af67c5824322844da97e816483e6cfb0684854f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/sync/replicated_map.ts": "8f7a1686ebd4c195074549771f27ca039398c6976022da79d204548c9a8e1188", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/sync/typegraph.ts": "9166892f76ca69956dc1300822834a7545886370ef83bdb61a92597dae6b6256", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/system_typegraphs.ts": "ada9d4dc74174078eb502dc707e91b628eae97fb729b90cffd7d59715dcff52f", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/transports/graphql/gq.ts": "341e066e10eb424c17095fe8cc65bbddc9cdfcdd51ecd82dd4905a50c3db8e82", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/transports/graphql/graphql.ts": "fd36d55366b2d0736580a2d8a7c408b6070ad7291db3cfbba37a6ed06ad01733", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/transports/graphql/request_parser.ts": "afbc95debcb1bbfa6fc2b88937d7abedbed1f4335bb2d17bf98c7293761cfdb0", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/transports/graphql/typegraph.ts": "e79b5acd4993a902ca4104f30075931bda49c140a5297920b644d6d3f4712ef2", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/transports/graphql/utils.ts": "ab4ee0fe51e53b4b21f7f2cfc4c77513a47d641a0bfe6822ceb46a7d8128adb9", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/transports/rest/rest_schema_generator.ts": "80d22818682b9856368dd87bf3085d6d7f53b7facf3412956588666b518bb8e5", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegate/artifacts/local.ts": "9405ef3cb3775a25d80b12f49aace608ecce7e18c29ed59196709b1e6a408d9c", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegate/artifacts/mod.ts": "ddc5d09342d9fe74b513fc0db52f0c6900d091d5cb9871b8434af0dbec854ae9", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegate/artifacts/shared.ts": "56ab2fc8250ccb7fbfaad6d586f0ea3c6422f9d76104a20af0ad51c1743bba42", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegate/hooks.ts": "de5f9fb6b4d6c288af0309d08147657eadde71e413513fb4607f7ee24d09d7d5", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegate/mod.ts": "3794b2e9a5aaf873b7636c38270bd64af8bcccc0df3d47937f9b102fc8bc2b0c", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegate/rate_limiter.ts": "0b3126eb28284ed3ed7a9fe434a5a096745ebc03e4d8b1b354fc7b791ccccd93", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegate/register.ts": "3eabfb20967d926c5729ed9f29f454e341182def492ae13208b98d03303d9d20", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraph/mod.ts": "d23de9df6b032624a5ef849bf9a5e2edd13a37d4b5032d61237cdb374491fe5b", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraph/type_node.ts": "e5956ba47eaa04fa1287314991e197c3b502d1a73cf377137f7482190defcb41", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraph/types.ts": "bbfa88cac8049c02ad220656a554e0953a04cf56af2f166174bd23e7be9cb49c", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraph/utils.ts": "09e0d110026dae5c796bfdfbf9f0e374a23e6aa8bac7ea98bf115ef0cb5289d9", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraph/versions.ts": "29e4415454a5095847aa12bec06bcc2ac3cdb6f1b75606dedd8f5612ce64f9f1", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraph/visitor.ts": "bbcd6204c65e841cf9facf6d7b59ce1456ca051b06935c739a9be9e57807331b", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraphs/introspection.json": "76e8796d99a71f93c6fd57e6af9708ef2d8f587f9ceca2ae9aec3f49d242e43e", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraphs/prisma_migration.json": "05bcf740259abcedb1bb2d8b34e6d62cf2ef124481e01379b93ddaf05e99b1c1", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/typegraphs/typegate.json": "99da5fb4052c82a35a65ac18f94cbce47d7e49afdf7678b8127e2f4677805cdb", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/types.ts": "305a38570368838fa2cc3382e7d4fbb8717976397fe8bd4aeda201f7a1cb4b73", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/utils.ts": "17f24991ba464352c3855cd8cda6b4d330f4283f33b167e745571a780e02c8fb", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/src/utils/hash.ts": "2f4ce3f1736df720def3b0fc89ac9e6e29afa0a33d7a988e15cb1d1bebcf026c", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/tests/utils/memory_register.ts": "de21f1494e4e378fc43280e04ea5b59aa791d417c655d47824769cde4fc63b19", - "https://raw.githubusercontent.com/metatypedev/metatype/1076dcec0dfd836e88a2ad5d03e3ec9ca5c28f3b/typegate/tests/utils/no_limiter.ts": "730246db1c73b5ca77e01e1838194f3870f4024cbf29a850674564b20425a7f0", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/engine/bindings.ts": "e9391491bf5c4f682267a5cb4ae384ef33ed7c15273fcada13bea7b064cf1270", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/config.ts": "289820b743711beb9139bca83556f60774521f3c58addd5c441ae3205ef49e61", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/config/loader.ts": "f46ed5199db89c6e5ebe5accb1cd7561a22cb8a158dfc86b371956d3002662cb", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/config/shared.ts": "b2cc53588d6651b5261de312c4b92f517f0b764cd95eb1b8771e46c3f46376a0", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/config/types.ts": "77f7051cece41b67b47471511496e35b76bd7eda0ba10cdcd02fda261ca0ed13", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/crypto.ts": "00efcbf7906e66105a5b18f1654cd78bc05f8b2ed755cc4be9f5755f49a577c3", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/computation_engine.ts": "9fb3033c491a17aec92757a1b7c299fa5c5197dff666b86f074beebc643d239f", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/planner/args.ts": "2eecd557a4cde56ebdfbbdf998bff4386fcd0b79007a7ba5fc1d2c71f57f3a85", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/planner/dependency_resolver.ts": "98c9505a700ad0cd74fac327e7258aae6bbd60cd60587a4ec56bcfe57cf6fe79", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/planner/injection_utils.ts": "21a0b4117e00c48533a83bd2985046eb4510aba3c331c02bf64920d719d282bc", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/planner/mod.ts": "a90671e394e0ade1e47a1d1bf65560fc06d8d14531f062f902254e761d01bdb3", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/planner/parameter_transformer.ts": "953d7c970141e44e29be72d79cc253ab26ea5a366a2f4bcd43ec6c73203737ca", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/planner/policies.ts": "0ef1f49f06d17e1df8e8ec0108bdf1458fcf95b42be8fbdb0c1357b46a5020a2", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/query_engine.ts": "152e96d3c4f5e1161f974ca36c2034ea3d3ef56f548fa64bbb4563dd2ed7d6dc", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/stage_id.ts": "b3b3c62215ff421103788079b77943af8f0026a56eafaa929415cb39ccde3cca", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/code_generator.ts": "adb81b215a10bbf73f00b910d75e953dd8f630d3dd590e6c85323cae4da6b608", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/common.ts": "bf2174d58cc898f094c5e353e43988888922dfbf6878e75619594f5de5498843", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/inline_validators/common.ts": "112f56c8e590215b0af0c1b46dc84b85cb5b9b43621a52646876c35a43103499", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/inline_validators/constraints.ts": "f173ed12173c92b3eca2b306973dee34e18feeccd2c4c51f11fe98216e7d80e7", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/inline_validators/list.ts": "d6ea1984e6dd3e422173b5252fb5e10d27f216c7051aad1452250a0454c465d5", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/inline_validators/number.ts": "aebeb91359a8edcc444b1a229dbca67cefd910837e771f4f18eba0070bdd80bc", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/inline_validators/object.ts": "1c10be974a2ba3b2b60072c34af84497cd099f263fb8223ebe763bccb7ec451a", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/inline_validators/string.ts": "7ea1e1661e54d093a56df7be22ee8590940efd3a230317ebc80b0978a0de5ce4", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/input.ts": "f6f00f03d82288804a31852a65ec89f021134591a6888e9972ea7512bb41aecd", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/matching_variant.ts": "6a9c0232b61fd9a20bd35cc4caa2350901504655bacad839fa275b24f9292e45", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/engine/typecheck/result.ts": "494f6a0b58cf7ee9e27fbae65de71a33e1659efcff428be51dd158824096f247", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/errors.ts": "89cd0155ccf0d5f4c2862949b5baed441ca8cba0aac8fae04a7f8f45601c22f8", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/libs/jsonpath.ts": "f6851288fb8600dec0e62d5f804f41332b6197b255b6497360ba7e4b7f375cba", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/log.ts": "a44dca4a37baef59ee50bd44b4ee12c77fd57bd57c0bc09aab8016c2550b1b32", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/main.ts": "af5c054d8188afa43b3f5cf3f779a3b0fe2c2bccf2cb7dbde942f469a0ebaad7", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/Runtime.ts": "6fba220b09e69aefca2e4e5a77eaf830906dece0fa4b500d878edb6c6463953c", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/deno.ts": "c893dcf170b38547239d550080a856aca46a788de9922f282bbacf9b5841b5fe", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/deno/deno.ts": "9f5c74dd2b70f0259e9891b62907720e0f77117a34e69f40efd3e080c39acc6c", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/deno/deno_messenger.ts": "18ee6e6797702955744bc2a11e37e4e3cdccdbf249cc4877cbacaeb3aa66775c", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/deno/shared_types.ts": "2ef1fa347c241162a8a32cebb1113b20f94326c4b20b0883e72b79bb879e5d07", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/deno/worker.ts": "fabc721575f048d8e4ca960e41dcda57b7103151b606a736ac0358dd7c418bc6", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/graphql.ts": "a03a5f3e1d538f736c9691074e67e6b4d8bfa880bd7e49918216d8dcd6226acb", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/http.ts": "580b43b0db099a0c5ac3aa971c74fe78bee8e95addc2369d1a827fcc6e15033e", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/mod.ts": "b1d8e5d42a6b382e83342e562397d8213490ce5af245e8b6b1751eeec61d79d2", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "5457677d4b44abc060cb7c625a66fd4db231206df656bfc41b5a2e017833eea2", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "744b0e499ef5a8cdb10f35c5c8570984cac7a00f64d85c1374dabf00624b0397", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/patterns/messenger/types.ts": "23ddb7d12e4d049158ffefdb0b8f00ff9c8b7c1c31637b101e391f89ae6e8a97", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma.ts": "e4b679c3b5e28a323d72bde5ebbcc113abe0efc8da82d70b3b2e390149c57d84", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "70e8b612f4c771dd607233cede7036f7d343702086a8d9cd3904d8e947daac90", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma/hooks/mod.ts": "3e33752e3676b538c7016f3ddd4f1f49d75e217c410bcaa6319d33ed987d3c60", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "456398f2300b8da1b870db6e84524c5920e57c7bcf15d8a5f3e1323199f26170", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma/migration.ts": "3dae1ae03546123ffc2bee76a5d049ab76cf8724fdf353b0c610f6e86364ab2d", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma/mod.ts": "a0e44e86a45aad8b2bb0357ddbe8ba02802e6979451553940ec3688be571127f", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma/prisma.ts": "c36709efd13ea0553d552483d8a268c2432276a932144428bcaac869e2913ca4", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/prisma/types.ts": "44e221d8143e314e8db39b62e245518a290bf4248ace208a755d0aa1a5af99bb", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/python.ts": "32825eba0eb6680fa97933535a96ae80e09e7bd0d207b0385dd3da8cf843bbec", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/random.ts": "2f65216d0bd56953af78938151f697f11e7c22a1ac0c68d15f85940c5fd49a1d", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/s3.ts": "a1d278e20e5095118e8f457a45bfc361be123f67f346ddd14e6c26a8b5493472", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/temporal.ts": "b31d30777e71ae4c8d2ac1cdf522b7b498d545d0c60c2fb4e76c685f3e2c49ee", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/typegate.ts": "ef7fc75335d947e9afce79418bb3802a4a174ad68b4b4b719232fe7df5d78040", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/typegraph.ts": "55b5d9b6a4a0d536a06d63b57e863f12f3dae38b2b421f205c50340424e43f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/utils/graphql_forward_vars.ts": "5faf28e955a0e950a5c79bc3ceb68d9c4a14df3dd2e94dd867e063de6ae1da88", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/utils/graphql_inline_vars.ts": "f69ace5ac7509f3ce33c0b31b73597372efba42eac09948ab5e8e6d38b37e3a3", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/utils/http.ts": "842af99040fd0e3456690f7674311da3a0b9ea64c608d7bc588df1ab28f163a3", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/wasm_reflected.ts": "b3562d7cafc777625f9cc06d74fcac9634d64ab5d191f2e7742155e7426377e0", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/wasm_wire.ts": "d3e53d0eab0482bd9d222897a147d5afa4ea5e31b66b7b98d40b5f13f39e9f7b", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/runtimes/wit_wire/mod.ts": "e2c92434274f537f9e8c3f939def9ae1512816aac144962d6445d99d013e0366", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/artifact_service.ts": "b910693b1ed6b8ae4ed4036b0e4c423313870cce514cde7095c6dd8f03234bd9", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/cookies.ts": "ebe37f0ff356df71cb72911bb17c13744dba9ebcd5e0eb69abf41d73cf179ee8", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/mod.ts": "0fd5fa8dc8d2278df02a93b457fbb4042261871e57985719e70e39fe491b00f0", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/protocols/basic.ts": "a4361603e15ab387ec4db8664965ecae15457eeb6503f65bc8a11bf7f87a3a6a", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/protocols/internal.ts": "a93b3234a46f4de9e726582d024a3c73114a195560ac59a9e31ad0b3cf397f39", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/protocols/jwt.ts": "f779924412dc01fc557beb200b52198382dc01345e14deb4bf8af9324e1bdbb6", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/protocols/oauth2.ts": "3a6db9349f0e5c8210480eeea26f6c8e26bf2f5df3b5c2a509ac1f3428b214c7", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/protocols/protocol.ts": "158c55618be6165a9ee393ccd1a9da267b084ff04df7e627af1e4fc8fe636644", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/routes/mod.ts": "70ceac64f3e868d5b00b21bd5094b149374f0be487293ad4098415663999320d", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/routes/take.ts": "21304fcbfa9e9f92f240121ac2fad677b315ca1f7e55ec5e6f2905d1ccdeb1aa", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/auth/routes/validate.ts": "f8a2a7f4fa58dac1f10f89dd76d8ec5a4d7ce7e98ddd1d8e56a178c9f6158eaa", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/graphql_service.ts": "bc58c922b24ce2739ccaa27447665bc136f65786b38021b011a784d60e63d758", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/info_service.ts": "a9a1f6ebdcbe64d55806597b879dd5714c32b8b861bed695a944f5e2f1213beb", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/middlewares.ts": "b870a0f9e70880f020510b64d19e0e23450656490ac117192398bafdb00c0ccd", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/playground_service.ts": "d293851d3a5f4d3b196115a38b87d9c4826355290e42c1c1a586604bbbaffd6e", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/responses.ts": "374620f4f7bd96bacb582247f75e279906bff7dee4a1ae107364ba2fbef0b192", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/services/rest_service.ts": "59f294bb3d32353704978f4af67c5824322844da97e816483e6cfb0684854f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/sync/replicated_map.ts": "8f7a1686ebd4c195074549771f27ca039398c6976022da79d204548c9a8e1188", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/sync/typegraph.ts": "9166892f76ca69956dc1300822834a7545886370ef83bdb61a92597dae6b6256", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/system_typegraphs.ts": "ada9d4dc74174078eb502dc707e91b628eae97fb729b90cffd7d59715dcff52f", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/transports/graphql/gq.ts": "341e066e10eb424c17095fe8cc65bbddc9cdfcdd51ecd82dd4905a50c3db8e82", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/transports/graphql/graphql.ts": "fd36d55366b2d0736580a2d8a7c408b6070ad7291db3cfbba37a6ed06ad01733", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/transports/graphql/request_parser.ts": "afbc95debcb1bbfa6fc2b88937d7abedbed1f4335bb2d17bf98c7293761cfdb0", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/transports/graphql/typegraph.ts": "e79b5acd4993a902ca4104f30075931bda49c140a5297920b644d6d3f4712ef2", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/transports/graphql/utils.ts": "ab4ee0fe51e53b4b21f7f2cfc4c77513a47d641a0bfe6822ceb46a7d8128adb9", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/transports/rest/rest_schema_generator.ts": "80d22818682b9856368dd87bf3085d6d7f53b7facf3412956588666b518bb8e5", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegate/artifacts/local.ts": "9405ef3cb3775a25d80b12f49aace608ecce7e18c29ed59196709b1e6a408d9c", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegate/artifacts/mod.ts": "ddc5d09342d9fe74b513fc0db52f0c6900d091d5cb9871b8434af0dbec854ae9", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegate/artifacts/shared.ts": "56ab2fc8250ccb7fbfaad6d586f0ea3c6422f9d76104a20af0ad51c1743bba42", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegate/hooks.ts": "de5f9fb6b4d6c288af0309d08147657eadde71e413513fb4607f7ee24d09d7d5", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegate/mod.ts": "3794b2e9a5aaf873b7636c38270bd64af8bcccc0df3d47937f9b102fc8bc2b0c", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegate/rate_limiter.ts": "0b3126eb28284ed3ed7a9fe434a5a096745ebc03e4d8b1b354fc7b791ccccd93", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegate/register.ts": "3eabfb20967d926c5729ed9f29f454e341182def492ae13208b98d03303d9d20", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraph/mod.ts": "b15034cbf2d23267199ed58ee61a20be21dd7293c9ee162577918e0845d7c60e", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraph/type_node.ts": "76fcb35bfad244af1fcaa45798b29a7536f5a2a45e8c824ae36a0a8cb87aeab5", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraph/types.ts": "bbfa88cac8049c02ad220656a554e0953a04cf56af2f166174bd23e7be9cb49c", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraph/utils.ts": "4d751910f053f7c3f33ce0cdebdd9b19970bee04ef533f65f01788c727c371e7", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraph/versions.ts": "29e4415454a5095847aa12bec06bcc2ac3cdb6f1b75606dedd8f5612ce64f9f1", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraph/visitor.ts": "bbcd6204c65e841cf9facf6d7b59ce1456ca051b06935c739a9be9e57807331b", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraphs/introspection.json": "76e8796d99a71f93c6fd57e6af9708ef2d8f587f9ceca2ae9aec3f49d242e43e", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraphs/prisma_migration.json": "05bcf740259abcedb1bb2d8b34e6d62cf2ef124481e01379b93ddaf05e99b1c1", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/typegraphs/typegate.json": "99da5fb4052c82a35a65ac18f94cbce47d7e49afdf7678b8127e2f4677805cdb", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/types.ts": "305a38570368838fa2cc3382e7d4fbb8717976397fe8bd4aeda201f7a1cb4b73", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/utils.ts": "17f24991ba464352c3855cd8cda6b4d330f4283f33b167e745571a780e02c8fb", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/src/utils/hash.ts": "2f4ce3f1736df720def3b0fc89ac9e6e29afa0a33d7a988e15cb1d1bebcf026c", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/tests/utils/memory_register.ts": "de21f1494e4e378fc43280e04ea5b59aa791d417c655d47824769cde4fc63b19", - "https://raw.githubusercontent.com/metatypedev/metatype/aaa1b844e0821e84c74b9ba636bb3f85cc2221ed/typegate/tests/utils/no_limiter.ts": "730246db1c73b5ca77e01e1838194f3870f4024cbf29a850674564b20425a7f0", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/engine/bindings.ts": "e9391491bf5c4f682267a5cb4ae384ef33ed7c15273fcada13bea7b064cf1270", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/config.ts": "289820b743711beb9139bca83556f60774521f3c58addd5c441ae3205ef49e61", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/config/loader.ts": "f46ed5199db89c6e5ebe5accb1cd7561a22cb8a158dfc86b371956d3002662cb", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/config/shared.ts": "b2cc53588d6651b5261de312c4b92f517f0b764cd95eb1b8771e46c3f46376a0", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/config/types.ts": "77f7051cece41b67b47471511496e35b76bd7eda0ba10cdcd02fda261ca0ed13", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/crypto.ts": "00efcbf7906e66105a5b18f1654cd78bc05f8b2ed755cc4be9f5755f49a577c3", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/computation_engine.ts": "9fb3033c491a17aec92757a1b7c299fa5c5197dff666b86f074beebc643d239f", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/planner/args.ts": "2eecd557a4cde56ebdfbbdf998bff4386fcd0b79007a7ba5fc1d2c71f57f3a85", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/planner/dependency_resolver.ts": "98c9505a700ad0cd74fac327e7258aae6bbd60cd60587a4ec56bcfe57cf6fe79", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/planner/injection_utils.ts": "21a0b4117e00c48533a83bd2985046eb4510aba3c331c02bf64920d719d282bc", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/planner/mod.ts": "a90671e394e0ade1e47a1d1bf65560fc06d8d14531f062f902254e761d01bdb3", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/planner/parameter_transformer.ts": "953d7c970141e44e29be72d79cc253ab26ea5a366a2f4bcd43ec6c73203737ca", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/planner/policies.ts": "0ef1f49f06d17e1df8e8ec0108bdf1458fcf95b42be8fbdb0c1357b46a5020a2", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/query_engine.ts": "152e96d3c4f5e1161f974ca36c2034ea3d3ef56f548fa64bbb4563dd2ed7d6dc", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/stage_id.ts": "b3b3c62215ff421103788079b77943af8f0026a56eafaa929415cb39ccde3cca", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/code_generator.ts": "adb81b215a10bbf73f00b910d75e953dd8f630d3dd590e6c85323cae4da6b608", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/common.ts": "bf2174d58cc898f094c5e353e43988888922dfbf6878e75619594f5de5498843", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/inline_validators/common.ts": "112f56c8e590215b0af0c1b46dc84b85cb5b9b43621a52646876c35a43103499", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/inline_validators/constraints.ts": "f173ed12173c92b3eca2b306973dee34e18feeccd2c4c51f11fe98216e7d80e7", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/inline_validators/list.ts": "d6ea1984e6dd3e422173b5252fb5e10d27f216c7051aad1452250a0454c465d5", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/inline_validators/number.ts": "aebeb91359a8edcc444b1a229dbca67cefd910837e771f4f18eba0070bdd80bc", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/inline_validators/object.ts": "1c10be974a2ba3b2b60072c34af84497cd099f263fb8223ebe763bccb7ec451a", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/inline_validators/string.ts": "7ea1e1661e54d093a56df7be22ee8590940efd3a230317ebc80b0978a0de5ce4", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/input.ts": "f6f00f03d82288804a31852a65ec89f021134591a6888e9972ea7512bb41aecd", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/matching_variant.ts": "6a9c0232b61fd9a20bd35cc4caa2350901504655bacad839fa275b24f9292e45", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/engine/typecheck/result.ts": "494f6a0b58cf7ee9e27fbae65de71a33e1659efcff428be51dd158824096f247", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/errors.ts": "89cd0155ccf0d5f4c2862949b5baed441ca8cba0aac8fae04a7f8f45601c22f8", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/libs/jsonpath.ts": "f6851288fb8600dec0e62d5f804f41332b6197b255b6497360ba7e4b7f375cba", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/log.ts": "a44dca4a37baef59ee50bd44b4ee12c77fd57bd57c0bc09aab8016c2550b1b32", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/main.ts": "af5c054d8188afa43b3f5cf3f779a3b0fe2c2bccf2cb7dbde942f469a0ebaad7", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/Runtime.ts": "6fba220b09e69aefca2e4e5a77eaf830906dece0fa4b500d878edb6c6463953c", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/deno.ts": "c893dcf170b38547239d550080a856aca46a788de9922f282bbacf9b5841b5fe", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/deno/deno.ts": "9f5c74dd2b70f0259e9891b62907720e0f77117a34e69f40efd3e080c39acc6c", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/deno/deno_messenger.ts": "18ee6e6797702955744bc2a11e37e4e3cdccdbf249cc4877cbacaeb3aa66775c", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/deno/shared_types.ts": "2ef1fa347c241162a8a32cebb1113b20f94326c4b20b0883e72b79bb879e5d07", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/deno/worker.ts": "fabc721575f048d8e4ca960e41dcda57b7103151b606a736ac0358dd7c418bc6", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/graphql.ts": "a03a5f3e1d538f736c9691074e67e6b4d8bfa880bd7e49918216d8dcd6226acb", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/http.ts": "580b43b0db099a0c5ac3aa971c74fe78bee8e95addc2369d1a827fcc6e15033e", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/mod.ts": "b1d8e5d42a6b382e83342e562397d8213490ce5af245e8b6b1751eeec61d79d2", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "5457677d4b44abc060cb7c625a66fd4db231206df656bfc41b5a2e017833eea2", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "744b0e499ef5a8cdb10f35c5c8570984cac7a00f64d85c1374dabf00624b0397", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/patterns/messenger/types.ts": "23ddb7d12e4d049158ffefdb0b8f00ff9c8b7c1c31637b101e391f89ae6e8a97", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma.ts": "e4b679c3b5e28a323d72bde5ebbcc113abe0efc8da82d70b3b2e390149c57d84", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "70e8b612f4c771dd607233cede7036f7d343702086a8d9cd3904d8e947daac90", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma/hooks/mod.ts": "3e33752e3676b538c7016f3ddd4f1f49d75e217c410bcaa6319d33ed987d3c60", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "456398f2300b8da1b870db6e84524c5920e57c7bcf15d8a5f3e1323199f26170", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma/migration.ts": "3dae1ae03546123ffc2bee76a5d049ab76cf8724fdf353b0c610f6e86364ab2d", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma/mod.ts": "a0e44e86a45aad8b2bb0357ddbe8ba02802e6979451553940ec3688be571127f", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma/prisma.ts": "c36709efd13ea0553d552483d8a268c2432276a932144428bcaac869e2913ca4", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/prisma/types.ts": "44e221d8143e314e8db39b62e245518a290bf4248ace208a755d0aa1a5af99bb", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/python.ts": "32825eba0eb6680fa97933535a96ae80e09e7bd0d207b0385dd3da8cf843bbec", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/random.ts": "2f65216d0bd56953af78938151f697f11e7c22a1ac0c68d15f85940c5fd49a1d", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/s3.ts": "a1d278e20e5095118e8f457a45bfc361be123f67f346ddd14e6c26a8b5493472", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/temporal.ts": "b31d30777e71ae4c8d2ac1cdf522b7b498d545d0c60c2fb4e76c685f3e2c49ee", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/typegate.ts": "ef7fc75335d947e9afce79418bb3802a4a174ad68b4b4b719232fe7df5d78040", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/typegraph.ts": "55b5d9b6a4a0d536a06d63b57e863f12f3dae38b2b421f205c50340424e43f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/utils/graphql_forward_vars.ts": "5faf28e955a0e950a5c79bc3ceb68d9c4a14df3dd2e94dd867e063de6ae1da88", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/utils/graphql_inline_vars.ts": "f69ace5ac7509f3ce33c0b31b73597372efba42eac09948ab5e8e6d38b37e3a3", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/utils/http.ts": "842af99040fd0e3456690f7674311da3a0b9ea64c608d7bc588df1ab28f163a3", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/wasm_reflected.ts": "b3562d7cafc777625f9cc06d74fcac9634d64ab5d191f2e7742155e7426377e0", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/wasm_wire.ts": "d3e53d0eab0482bd9d222897a147d5afa4ea5e31b66b7b98d40b5f13f39e9f7b", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/runtimes/wit_wire/mod.ts": "0cbea1f1d166d99c6e730cc8f2fb19cc5ae27e0d391e038acfe41e525c96f6b9", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/artifact_service.ts": "b910693b1ed6b8ae4ed4036b0e4c423313870cce514cde7095c6dd8f03234bd9", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/cookies.ts": "ebe37f0ff356df71cb72911bb17c13744dba9ebcd5e0eb69abf41d73cf179ee8", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/mod.ts": "0fd5fa8dc8d2278df02a93b457fbb4042261871e57985719e70e39fe491b00f0", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/protocols/basic.ts": "a4361603e15ab387ec4db8664965ecae15457eeb6503f65bc8a11bf7f87a3a6a", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/protocols/internal.ts": "a93b3234a46f4de9e726582d024a3c73114a195560ac59a9e31ad0b3cf397f39", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/protocols/jwt.ts": "f779924412dc01fc557beb200b52198382dc01345e14deb4bf8af9324e1bdbb6", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/protocols/oauth2.ts": "3a6db9349f0e5c8210480eeea26f6c8e26bf2f5df3b5c2a509ac1f3428b214c7", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/protocols/protocol.ts": "158c55618be6165a9ee393ccd1a9da267b084ff04df7e627af1e4fc8fe636644", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/routes/mod.ts": "70ceac64f3e868d5b00b21bd5094b149374f0be487293ad4098415663999320d", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/routes/take.ts": "21304fcbfa9e9f92f240121ac2fad677b315ca1f7e55ec5e6f2905d1ccdeb1aa", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/auth/routes/validate.ts": "f8a2a7f4fa58dac1f10f89dd76d8ec5a4d7ce7e98ddd1d8e56a178c9f6158eaa", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/graphql_service.ts": "bc58c922b24ce2739ccaa27447665bc136f65786b38021b011a784d60e63d758", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/info_service.ts": "a9a1f6ebdcbe64d55806597b879dd5714c32b8b861bed695a944f5e2f1213beb", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/middlewares.ts": "b870a0f9e70880f020510b64d19e0e23450656490ac117192398bafdb00c0ccd", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/playground_service.ts": "d293851d3a5f4d3b196115a38b87d9c4826355290e42c1c1a586604bbbaffd6e", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/responses.ts": "374620f4f7bd96bacb582247f75e279906bff7dee4a1ae107364ba2fbef0b192", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/services/rest_service.ts": "59f294bb3d32353704978f4af67c5824322844da97e816483e6cfb0684854f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/sync/replicated_map.ts": "8f7a1686ebd4c195074549771f27ca039398c6976022da79d204548c9a8e1188", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/sync/typegraph.ts": "9166892f76ca69956dc1300822834a7545886370ef83bdb61a92597dae6b6256", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/system_typegraphs.ts": "ada9d4dc74174078eb502dc707e91b628eae97fb729b90cffd7d59715dcff52f", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/transports/graphql/gq.ts": "341e066e10eb424c17095fe8cc65bbddc9cdfcdd51ecd82dd4905a50c3db8e82", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/transports/graphql/graphql.ts": "fd36d55366b2d0736580a2d8a7c408b6070ad7291db3cfbba37a6ed06ad01733", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/transports/graphql/request_parser.ts": "afbc95debcb1bbfa6fc2b88937d7abedbed1f4335bb2d17bf98c7293761cfdb0", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/transports/graphql/typegraph.ts": "e79b5acd4993a902ca4104f30075931bda49c140a5297920b644d6d3f4712ef2", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/transports/graphql/utils.ts": "ab4ee0fe51e53b4b21f7f2cfc4c77513a47d641a0bfe6822ceb46a7d8128adb9", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/transports/rest/rest_schema_generator.ts": "80d22818682b9856368dd87bf3085d6d7f53b7facf3412956588666b518bb8e5", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegate/artifacts/local.ts": "9405ef3cb3775a25d80b12f49aace608ecce7e18c29ed59196709b1e6a408d9c", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegate/artifacts/mod.ts": "ddc5d09342d9fe74b513fc0db52f0c6900d091d5cb9871b8434af0dbec854ae9", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegate/artifacts/shared.ts": "56ab2fc8250ccb7fbfaad6d586f0ea3c6422f9d76104a20af0ad51c1743bba42", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegate/hooks.ts": "de5f9fb6b4d6c288af0309d08147657eadde71e413513fb4607f7ee24d09d7d5", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegate/mod.ts": "3794b2e9a5aaf873b7636c38270bd64af8bcccc0df3d47937f9b102fc8bc2b0c", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegate/rate_limiter.ts": "0b3126eb28284ed3ed7a9fe434a5a096745ebc03e4d8b1b354fc7b791ccccd93", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegate/register.ts": "3eabfb20967d926c5729ed9f29f454e341182def492ae13208b98d03303d9d20", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraph/mod.ts": "b15034cbf2d23267199ed58ee61a20be21dd7293c9ee162577918e0845d7c60e", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraph/type_node.ts": "76fcb35bfad244af1fcaa45798b29a7536f5a2a45e8c824ae36a0a8cb87aeab5", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraph/types.ts": "bbfa88cac8049c02ad220656a554e0953a04cf56af2f166174bd23e7be9cb49c", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraph/utils.ts": "4d751910f053f7c3f33ce0cdebdd9b19970bee04ef533f65f01788c727c371e7", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraph/versions.ts": "29e4415454a5095847aa12bec06bcc2ac3cdb6f1b75606dedd8f5612ce64f9f1", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraph/visitor.ts": "bbcd6204c65e841cf9facf6d7b59ce1456ca051b06935c739a9be9e57807331b", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraphs/introspection.json": "76e8796d99a71f93c6fd57e6af9708ef2d8f587f9ceca2ae9aec3f49d242e43e", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraphs/prisma_migration.json": "05bcf740259abcedb1bb2d8b34e6d62cf2ef124481e01379b93ddaf05e99b1c1", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/typegraphs/typegate.json": "99da5fb4052c82a35a65ac18f94cbce47d7e49afdf7678b8127e2f4677805cdb", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/types.ts": "305a38570368838fa2cc3382e7d4fbb8717976397fe8bd4aeda201f7a1cb4b73", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/utils.ts": "17f24991ba464352c3855cd8cda6b4d330f4283f33b167e745571a780e02c8fb", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/src/utils/hash.ts": "2f4ce3f1736df720def3b0fc89ac9e6e29afa0a33d7a988e15cb1d1bebcf026c", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/tests/utils/memory_register.ts": "de21f1494e4e378fc43280e04ea5b59aa791d417c655d47824769cde4fc63b19", - "https://raw.githubusercontent.com/metatypedev/metatype/e8bfea63e128564929eb523c42d89086f321cb0b/typegate/tests/utils/no_limiter.ts": "730246db1c73b5ca77e01e1838194f3870f4024cbf29a850674564b20425a7f0", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/engine/bindings.ts": "e9391491bf5c4f682267a5cb4ae384ef33ed7c15273fcada13bea7b064cf1270", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/engine/runtime.js": "1ae55e76d3de8e79c37054d9127c92af496ce10aa905ea64021893048bb33794", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/config.ts": "d9c92871308ee08497b654f5ad42dd671c4ffcfe49c6feacff9b310b6b9fa31d", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/config/loader.ts": "f46ed5199db89c6e5ebe5accb1cd7561a22cb8a158dfc86b371956d3002662cb", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/config/shared.ts": "b2cc53588d6651b5261de312c4b92f517f0b764cd95eb1b8771e46c3f46376a0", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/config/types.ts": "77f7051cece41b67b47471511496e35b76bd7eda0ba10cdcd02fda261ca0ed13", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/crypto.ts": "00efcbf7906e66105a5b18f1654cd78bc05f8b2ed755cc4be9f5755f49a577c3", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/computation_engine.ts": "9fb3033c491a17aec92757a1b7c299fa5c5197dff666b86f074beebc643d239f", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/planner/args.ts": "2eecd557a4cde56ebdfbbdf998bff4386fcd0b79007a7ba5fc1d2c71f57f3a85", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/planner/dependency_resolver.ts": "98c9505a700ad0cd74fac327e7258aae6bbd60cd60587a4ec56bcfe57cf6fe79", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/planner/injection_utils.ts": "21a0b4117e00c48533a83bd2985046eb4510aba3c331c02bf64920d719d282bc", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/planner/mod.ts": "a90671e394e0ade1e47a1d1bf65560fc06d8d14531f062f902254e761d01bdb3", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/planner/parameter_transformer.ts": "953d7c970141e44e29be72d79cc253ab26ea5a366a2f4bcd43ec6c73203737ca", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/planner/policies.ts": "0ef1f49f06d17e1df8e8ec0108bdf1458fcf95b42be8fbdb0c1357b46a5020a2", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/query_engine.ts": "152e96d3c4f5e1161f974ca36c2034ea3d3ef56f548fa64bbb4563dd2ed7d6dc", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/stage_id.ts": "b3b3c62215ff421103788079b77943af8f0026a56eafaa929415cb39ccde3cca", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/code_generator.ts": "adb81b215a10bbf73f00b910d75e953dd8f630d3dd590e6c85323cae4da6b608", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/common.ts": "bf2174d58cc898f094c5e353e43988888922dfbf6878e75619594f5de5498843", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/inline_validators/common.ts": "112f56c8e590215b0af0c1b46dc84b85cb5b9b43621a52646876c35a43103499", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/inline_validators/constraints.ts": "f173ed12173c92b3eca2b306973dee34e18feeccd2c4c51f11fe98216e7d80e7", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/inline_validators/list.ts": "d6ea1984e6dd3e422173b5252fb5e10d27f216c7051aad1452250a0454c465d5", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/inline_validators/number.ts": "aebeb91359a8edcc444b1a229dbca67cefd910837e771f4f18eba0070bdd80bc", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/inline_validators/object.ts": "1c10be974a2ba3b2b60072c34af84497cd099f263fb8223ebe763bccb7ec451a", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/inline_validators/string.ts": "7ea1e1661e54d093a56df7be22ee8590940efd3a230317ebc80b0978a0de5ce4", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/input.ts": "f6f00f03d82288804a31852a65ec89f021134591a6888e9972ea7512bb41aecd", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/matching_variant.ts": "6a9c0232b61fd9a20bd35cc4caa2350901504655bacad839fa275b24f9292e45", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/engine/typecheck/result.ts": "494f6a0b58cf7ee9e27fbae65de71a33e1659efcff428be51dd158824096f247", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/errors.ts": "89cd0155ccf0d5f4c2862949b5baed441ca8cba0aac8fae04a7f8f45601c22f8", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/libs/jsonpath.ts": "f6851288fb8600dec0e62d5f804f41332b6197b255b6497360ba7e4b7f375cba", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/log.ts": "a44dca4a37baef59ee50bd44b4ee12c77fd57bd57c0bc09aab8016c2550b1b32", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/main.ts": "af5c054d8188afa43b3f5cf3f779a3b0fe2c2bccf2cb7dbde942f469a0ebaad7", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/Runtime.ts": "6fba220b09e69aefca2e4e5a77eaf830906dece0fa4b500d878edb6c6463953c", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/deno.ts": "c893dcf170b38547239d550080a856aca46a788de9922f282bbacf9b5841b5fe", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/deno/deno.ts": "9f5c74dd2b70f0259e9891b62907720e0f77117a34e69f40efd3e080c39acc6c", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/deno/deno_messenger.ts": "18ee6e6797702955744bc2a11e37e4e3cdccdbf249cc4877cbacaeb3aa66775c", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/deno/shared_types.ts": "2ef1fa347c241162a8a32cebb1113b20f94326c4b20b0883e72b79bb879e5d07", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/deno/worker.ts": "fabc721575f048d8e4ca960e41dcda57b7103151b606a736ac0358dd7c418bc6", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/graphql.ts": "a03a5f3e1d538f736c9691074e67e6b4d8bfa880bd7e49918216d8dcd6226acb", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/http.ts": "580b43b0db099a0c5ac3aa971c74fe78bee8e95addc2369d1a827fcc6e15033e", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/mod.ts": "b1d8e5d42a6b382e83342e562397d8213490ce5af245e8b6b1751eeec61d79d2", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/patterns/messenger/async_messenger.ts": "5457677d4b44abc060cb7c625a66fd4db231206df656bfc41b5a2e017833eea2", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/patterns/messenger/lazy_async_messenger.ts": "744b0e499ef5a8cdb10f35c5c8570984cac7a00f64d85c1374dabf00624b0397", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/patterns/messenger/types.ts": "23ddb7d12e4d049158ffefdb0b8f00ff9c8b7c1c31637b101e391f89ae6e8a97", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma.ts": "e4b679c3b5e28a323d72bde5ebbcc113abe0efc8da82d70b3b2e390149c57d84", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma/hooks/generate_schema.ts": "70e8b612f4c771dd607233cede7036f7d343702086a8d9cd3904d8e947daac90", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma/hooks/mod.ts": "3e33752e3676b538c7016f3ddd4f1f49d75e217c410bcaa6319d33ed987d3c60", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma/hooks/run_migrations.ts": "456398f2300b8da1b870db6e84524c5920e57c7bcf15d8a5f3e1323199f26170", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma/migration.ts": "3dae1ae03546123ffc2bee76a5d049ab76cf8724fdf353b0c610f6e86364ab2d", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma/mod.ts": "a0e44e86a45aad8b2bb0357ddbe8ba02802e6979451553940ec3688be571127f", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma/prisma.ts": "c36709efd13ea0553d552483d8a268c2432276a932144428bcaac869e2913ca4", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/prisma/types.ts": "44e221d8143e314e8db39b62e245518a290bf4248ace208a755d0aa1a5af99bb", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/python.ts": "32825eba0eb6680fa97933535a96ae80e09e7bd0d207b0385dd3da8cf843bbec", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/random.ts": "2f65216d0bd56953af78938151f697f11e7c22a1ac0c68d15f85940c5fd49a1d", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/s3.ts": "a1d278e20e5095118e8f457a45bfc361be123f67f346ddd14e6c26a8b5493472", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/temporal.ts": "b31d30777e71ae4c8d2ac1cdf522b7b498d545d0c60c2fb4e76c685f3e2c49ee", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/typegate.ts": "ef7fc75335d947e9afce79418bb3802a4a174ad68b4b4b719232fe7df5d78040", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/typegraph.ts": "55b5d9b6a4a0d536a06d63b57e863f12f3dae38b2b421f205c50340424e43f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/utils/graphql_forward_vars.ts": "5faf28e955a0e950a5c79bc3ceb68d9c4a14df3dd2e94dd867e063de6ae1da88", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/utils/graphql_inline_vars.ts": "f69ace5ac7509f3ce33c0b31b73597372efba42eac09948ab5e8e6d38b37e3a3", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/utils/http.ts": "842af99040fd0e3456690f7674311da3a0b9ea64c608d7bc588df1ab28f163a3", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/wasm_reflected.ts": "b3562d7cafc777625f9cc06d74fcac9634d64ab5d191f2e7742155e7426377e0", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/wasm_wire.ts": "d3e53d0eab0482bd9d222897a147d5afa4ea5e31b66b7b98d40b5f13f39e9f7b", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/runtimes/wit_wire/mod.ts": "0cbea1f1d166d99c6e730cc8f2fb19cc5ae27e0d391e038acfe41e525c96f6b9", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/artifact_service.ts": "b910693b1ed6b8ae4ed4036b0e4c423313870cce514cde7095c6dd8f03234bd9", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/cookies.ts": "ebe37f0ff356df71cb72911bb17c13744dba9ebcd5e0eb69abf41d73cf179ee8", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/mod.ts": "0fd5fa8dc8d2278df02a93b457fbb4042261871e57985719e70e39fe491b00f0", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/protocols/basic.ts": "a4361603e15ab387ec4db8664965ecae15457eeb6503f65bc8a11bf7f87a3a6a", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/protocols/internal.ts": "a93b3234a46f4de9e726582d024a3c73114a195560ac59a9e31ad0b3cf397f39", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/protocols/jwt.ts": "f779924412dc01fc557beb200b52198382dc01345e14deb4bf8af9324e1bdbb6", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/protocols/oauth2.ts": "3a6db9349f0e5c8210480eeea26f6c8e26bf2f5df3b5c2a509ac1f3428b214c7", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/protocols/protocol.ts": "158c55618be6165a9ee393ccd1a9da267b084ff04df7e627af1e4fc8fe636644", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/routes/mod.ts": "70ceac64f3e868d5b00b21bd5094b149374f0be487293ad4098415663999320d", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/routes/take.ts": "21304fcbfa9e9f92f240121ac2fad677b315ca1f7e55ec5e6f2905d1ccdeb1aa", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/auth/routes/validate.ts": "f8a2a7f4fa58dac1f10f89dd76d8ec5a4d7ce7e98ddd1d8e56a178c9f6158eaa", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/graphql_service.ts": "bc58c922b24ce2739ccaa27447665bc136f65786b38021b011a784d60e63d758", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/info_service.ts": "a9a1f6ebdcbe64d55806597b879dd5714c32b8b861bed695a944f5e2f1213beb", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/middlewares.ts": "b870a0f9e70880f020510b64d19e0e23450656490ac117192398bafdb00c0ccd", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/playground_service.ts": "d293851d3a5f4d3b196115a38b87d9c4826355290e42c1c1a586604bbbaffd6e", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/responses.ts": "374620f4f7bd96bacb582247f75e279906bff7dee4a1ae107364ba2fbef0b192", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/services/rest_service.ts": "59f294bb3d32353704978f4af67c5824322844da97e816483e6cfb0684854f7f", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/sync/replicated_map.ts": "8f7a1686ebd4c195074549771f27ca039398c6976022da79d204548c9a8e1188", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/sync/typegraph.ts": "9166892f76ca69956dc1300822834a7545886370ef83bdb61a92597dae6b6256", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/system_typegraphs.ts": "ada9d4dc74174078eb502dc707e91b628eae97fb729b90cffd7d59715dcff52f", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/transports/graphql/gq.ts": "341e066e10eb424c17095fe8cc65bbddc9cdfcdd51ecd82dd4905a50c3db8e82", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/transports/graphql/graphql.ts": "fd36d55366b2d0736580a2d8a7c408b6070ad7291db3cfbba37a6ed06ad01733", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/transports/graphql/request_parser.ts": "afbc95debcb1bbfa6fc2b88937d7abedbed1f4335bb2d17bf98c7293761cfdb0", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/transports/graphql/typegraph.ts": "e79b5acd4993a902ca4104f30075931bda49c140a5297920b644d6d3f4712ef2", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/transports/graphql/utils.ts": "ab4ee0fe51e53b4b21f7f2cfc4c77513a47d641a0bfe6822ceb46a7d8128adb9", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/transports/rest/rest_schema_generator.ts": "80d22818682b9856368dd87bf3085d6d7f53b7facf3412956588666b518bb8e5", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegate/artifacts/local.ts": "9405ef3cb3775a25d80b12f49aace608ecce7e18c29ed59196709b1e6a408d9c", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegate/artifacts/mod.ts": "ddc5d09342d9fe74b513fc0db52f0c6900d091d5cb9871b8434af0dbec854ae9", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegate/artifacts/shared.ts": "56ab2fc8250ccb7fbfaad6d586f0ea3c6422f9d76104a20af0ad51c1743bba42", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegate/hooks.ts": "de5f9fb6b4d6c288af0309d08147657eadde71e413513fb4607f7ee24d09d7d5", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegate/mod.ts": "3794b2e9a5aaf873b7636c38270bd64af8bcccc0df3d47937f9b102fc8bc2b0c", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegate/rate_limiter.ts": "0b3126eb28284ed3ed7a9fe434a5a096745ebc03e4d8b1b354fc7b791ccccd93", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegate/register.ts": "3eabfb20967d926c5729ed9f29f454e341182def492ae13208b98d03303d9d20", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraph/mod.ts": "b15034cbf2d23267199ed58ee61a20be21dd7293c9ee162577918e0845d7c60e", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraph/type_node.ts": "76fcb35bfad244af1fcaa45798b29a7536f5a2a45e8c824ae36a0a8cb87aeab5", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraph/types.ts": "bbfa88cac8049c02ad220656a554e0953a04cf56af2f166174bd23e7be9cb49c", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraph/utils.ts": "4d751910f053f7c3f33ce0cdebdd9b19970bee04ef533f65f01788c727c371e7", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraph/versions.ts": "29e4415454a5095847aa12bec06bcc2ac3cdb6f1b75606dedd8f5612ce64f9f1", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraph/visitor.ts": "bbcd6204c65e841cf9facf6d7b59ce1456ca051b06935c739a9be9e57807331b", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraphs/introspection.json": "76e8796d99a71f93c6fd57e6af9708ef2d8f587f9ceca2ae9aec3f49d242e43e", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraphs/prisma_migration.json": "05bcf740259abcedb1bb2d8b34e6d62cf2ef124481e01379b93ddaf05e99b1c1", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/typegraphs/typegate.json": "99da5fb4052c82a35a65ac18f94cbce47d7e49afdf7678b8127e2f4677805cdb", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/types.ts": "305a38570368838fa2cc3382e7d4fbb8717976397fe8bd4aeda201f7a1cb4b73", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/utils.ts": "17f24991ba464352c3855cd8cda6b4d330f4283f33b167e745571a780e02c8fb", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/src/utils/hash.ts": "2f4ce3f1736df720def3b0fc89ac9e6e29afa0a33d7a988e15cb1d1bebcf026c", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/tests/utils/memory_register.ts": "de21f1494e4e378fc43280e04ea5b59aa791d417c655d47824769cde4fc63b19", - "https://raw.githubusercontent.com/metatypedev/metatype/eb913d1dc3eece662b91750764d178cf4625da16/typegate/tests/utils/no_limiter.ts": "730246db1c73b5ca77e01e1838194f3870f4024cbf29a850674564b20425a7f0" - } -} diff --git a/examples/templates/deno/api/example.ts b/examples/templates/deno/api/example.ts index 18d650c26e..8095b13988 100644 --- a/examples/templates/deno/api/example.ts +++ b/examples/templates/deno/api/example.ts @@ -1,6 +1,6 @@ -import { Policy, t, typegraph } from "npm:@typegraph/sdk@0.4.4/index"; -import { PythonRuntime } from "npm:@typegraph/sdk@0.4.4/runtimes/python"; -import { DenoRuntime } from "npm:@typegraph/sdk@0.4.4/runtimes/deno"; +import { Policy, t, typegraph } from "npm:@typegraph/sdk@0.4.5/index"; +import { PythonRuntime } from "npm:@typegraph/sdk@0.4.5/runtimes/python"; +import { DenoRuntime } from "npm:@typegraph/sdk@0.4.5/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 d0cdeb0fb3..f63e3bbdc0 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.4.4 + image: ghcr.io/metatypedev/typegate:v0.4.6 restart: always ports: - "7890:7890" diff --git a/examples/templates/node/compose.yml b/examples/templates/node/compose.yml index d0cdeb0fb3..f63e3bbdc0 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.4.4 + image: ghcr.io/metatypedev/typegate:v0.4.6 restart: always ports: - "7890:7890" diff --git a/examples/templates/node/package.json b/examples/templates/node/package.json index 43a22a13ba..9035718de4 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.4.4" + "@typegraph/sdk": "^0.4.6" }, "devDependencies": { "tsx": "^3.13.0", diff --git a/examples/templates/python/compose.yml b/examples/templates/python/compose.yml index d0cdeb0fb3..f63e3bbdc0 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.4.4 + image: ghcr.io/metatypedev/typegate:v0.4.6 restart: always ports: - "7890:7890" diff --git a/examples/templates/python/pyproject.toml b/examples/templates/python/pyproject.toml index a1e5cf8c11..2005eb0f77 100644 --- a/examples/templates/python/pyproject.toml +++ b/examples/templates/python/pyproject.toml @@ -1,12 +1,12 @@ [tool.poetry] name = "example" -version = "0.4.4" +version = "0.4.6" description = "" authors = [] [tool.poetry.dependencies] python = ">=3.8,<4.0" -typegraph = "0.4.4" +typegraph = "0.4.6" [build-system] requires = ["poetry-core"] diff --git a/examples/typegraphs/metagen/rs/mdk.rs b/examples/typegraphs/metagen/rs/mdk.rs index 9a7a6d3032..f2303fc444 100644 --- a/examples/typegraphs/metagen/rs/mdk.rs +++ b/examples/typegraphs/metagen/rs/mdk.rs @@ -109,7 +109,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.4.4"; + static MT_VERSION: &str = "0.4.6"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } diff --git a/ghjk.ts b/ghjk.ts index 8c74feffde..dabe473f04 100644 --- a/ghjk.ts +++ b/ghjk.ts @@ -1,4 +1,4 @@ -import { METATYPE_VERSION } from "./dev/consts.ts"; +import { METATYPE_VERSION, PUBLISHED_VERSION } from "./dev/consts.ts"; import { file, ports, sedLock, semver, stdDeps } from "./dev/deps.ts"; import installs from "./dev/installs.ts"; import tasksBuild from "./dev/tasks-build.ts"; @@ -32,12 +32,18 @@ env("main") TYPEGRAPH_VERSION: "0.0.3", CLICOLOR_FORCE: "1", }) - .allowedBuildDeps(...stdDeps(), installs.python_latest, installs.node); + .allowedBuildDeps( + ...stdDeps(), + installs.python_latest, + installs.node, + installs.rust_stable, + ); env("_rust").install( // use rustup for the actual toolchain ports.protoc({ version: "v24.1" }), - ports.pipi({ packageName: "cmake" })[0], + // TODO: add default param for cmake port + ports.cmake({})[0], ); if (Deno.build.os == "linux" && !Deno.env.has("NO_MOLD")) { @@ -143,12 +149,18 @@ task("version-bump", async ($) => { ), ); + $.logStep(`Bumping ${METATYPE_VERSION} → ${newVersion}`); const lines = [[/^(export const METATYPE_VERSION = ").*(";)$/, newVersion]]; - if (bump !== "prerelease") { - lines.push([/^(export const PUBLISHED_VERSION = ").*(";)$/, newVersion]); + if (bump === "prerelease") { + $.logStep( + `Bumping published version ${PUBLISHED_VERSION} → ${METATYPE_VERSION}`, + ); + lines.push([ + /^(export const PUBLISHED_VERSION = ").*(";)$/, + METATYPE_VERSION, + ]); } - $.logStep(`Bumping ${METATYPE_VERSION} → ${newVersion}`); await sedLock($.workingDir, { lines: { "./dev/consts.ts": lines, diff --git a/libs/common/Cargo.toml b/libs/common/Cargo.toml index 14bc6a1f3e..161b6a07ef 100644 --- a/libs/common/Cargo.toml +++ b/libs/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "common" -version = "0.4.4" +version = "0.4.6" edition = "2021" [dependencies] diff --git a/libs/deno/src/lib.rs b/libs/deno/src/lib.rs index 3e9bd9c008..87cb4e3456 100644 --- a/libs/deno/src/lib.rs +++ b/libs/deno/src/lib.rs @@ -8,7 +8,7 @@ pub use deno; use deno::{ deno_runtime::{ deno_core::{futures::FutureExt, unsync::JoinHandle, ModuleSpecifier}, - permissions::PermissionsOptions, + deno_permissions::{self, PermissionsOptions}, tokio_util::create_and_run_current_thread_with_maybe_metrics, }, *, @@ -47,15 +47,21 @@ pub fn run_sync( permissions: PermissionsOptions, custom_extensions: Arc, ) { - create_and_run_current_thread_with_maybe_metrics(async move { - spawn_subcommand(async move { - run(main_mod, import_map_url, permissions, custom_extensions) + new_thread_builder() + .spawn(|| { + create_and_run_current_thread_with_maybe_metrics(async move { + spawn_subcommand(async move { + run(main_mod, import_map_url, permissions, custom_extensions) + .await + .unwrap() + }) .await .unwrap() + }) }) - .await .unwrap() - }); + .join() + .unwrap(); } pub async fn run( @@ -66,7 +72,7 @@ pub async fn run( ) -> anyhow::Result<()> { deno::util::v8::init_v8_flags(&[], &[], deno::util::v8::get_v8_flags_from_env()); - deno_runtime::permissions::set_prompt_callbacks( + deno_permissions::set_prompt_callbacks( Box::new(util::draw_thread::DrawThread::hide), Box::new(util::draw_thread::DrawThread::show), ); @@ -95,8 +101,8 @@ pub async fn run( let cli_factory = factory::CliFactory::from_flags(flags)?.with_custom_ext_cb(custom_extensions); let worker_factory = cli_factory.create_cli_main_worker_factory().await?; - let permissions = deno_runtime::permissions::PermissionsContainer::new( - deno_runtime::permissions::Permissions::from_options(&permissions)?, + let permissions = deno_permissions::PermissionsContainer::new( + deno_permissions::Permissions::from_options(&permissions)?, ); let mut worker = worker_factory .create_main_worker( @@ -155,7 +161,7 @@ pub async fn test( deno::util::v8::init_v8_flags(&[], &[], deno::util::v8::get_v8_flags_from_env()); - deno_runtime::permissions::set_prompt_callbacks( + deno_permissions::set_prompt_callbacks( Box::new(util::draw_thread::DrawThread::hide), Box::new(util::draw_thread::DrawThread::show), ); @@ -213,21 +219,24 @@ pub async fn test( let options = cli_factory.cli_options().clone(); - let test_options = args::TestOptions { - files, - ..options.resolve_test_options(test_flags)? + let test_options = args::WorkspaceTestOptions { + // files, + ..options.resolve_workspace_test_options(&test_flags) }; + let members_with_test_opts = options.resolve_test_options_for_members(&test_flags)?; let file_fetcher = cli_factory.file_fetcher()?; // Various test files should not share the same permissions in terms of // `PermissionsContainer` - otherwise granting/revoking permissions in one // file would have impact on other files, which is undesirable. - let permissions = deno_runtime::permissions::Permissions::from_options(&permissions)?; + let permissions = deno_permissions::Permissions::from_options(&permissions)?; let specifiers_with_mode = fetch_specifiers_with_test_mode( options.as_ref(), file_fetcher, - test_options.files, + members_with_test_opts + .into_iter() + .map(|(_, opts)| opts.files), &test_options.doc, ) .await?; @@ -287,12 +296,12 @@ pub async fn test( Ok(()) } -fn new_thread_builder() -> std::thread::Builder { +pub fn new_thread_builder() -> std::thread::Builder { let builder = std::thread::Builder::new(); let builder = if cfg!(debug_assertions) { // this is only relevant for WebWorkers // FIXME: find a better location for this as tihs won't work - // if a new thread has already launched by this point + // if a second thread has already launched by this point if std::env::var("RUST_MIN_STACK").is_err() { std::env::set_var("RUST_MIN_STACK", "8388608"); } @@ -305,106 +314,3 @@ fn new_thread_builder() -> std::thread::Builder { }; builder } - -pub fn bench_sync( - files: deno_config::glob::FilePatterns, - config_file: PathBuf, - permissions: PermissionsOptions, - custom_extensions: Arc, - argv: Vec, -) { - new_thread_builder() - .spawn(|| { - create_and_run_current_thread_with_maybe_metrics(async move { - spawn_subcommand(async move { - bench(files, config_file, permissions, custom_extensions, argv) - .await - .unwrap() - }) - .await - .unwrap() - }) - }) - .unwrap() - .join() - .unwrap(); -} - -pub async fn bench( - files: deno_config::glob::FilePatterns, - config_file: PathBuf, - permissions: PermissionsOptions, - custom_extensions: Arc, - argv: Vec, -) -> anyhow::Result<()> { - use deno::tools::bench::*; - use deno::tools::test::TestFilter; - deno::util::v8::init_v8_flags(&[], &[], deno::util::v8::get_v8_flags_from_env()); - - deno_runtime::permissions::set_prompt_callbacks( - Box::new(util::draw_thread::DrawThread::hide), - Box::new(util::draw_thread::DrawThread::show), - ); - let flags = args::Flags { - unstable_config: args::UnstableConfig { - features: DEFAULT_UNSTABLE_FLAGS - .iter() - .copied() - .map(String::from) - .collect(), - ..Default::default() - }, - type_check_mode: args::TypeCheckMode::Local, - config_flag: deno_config::ConfigFlag::Path(config_file.to_string_lossy().into()), - argv, - ..Default::default() - }; - - let bench_options = args::BenchOptions { - ..args::BenchOptions::resolve( - Some(deno_config::BenchConfig { files }), - None, - &std::env::current_dir()?, - )? - }; - let cli_factory = factory::CliFactory::from_flags(flags)?.with_custom_ext_cb(custom_extensions); - - let options = cli_factory.cli_options(); - - // Various bench files should not share the same permissions in terms of - // `PermissionsContainer` - otherwise granting/revoking permissions in one - // file would have impact on other files, which is undesirable. - let permissions = deno_runtime::permissions::Permissions::from_options(&permissions)?; - - let specifiers = util::fs::collect_specifiers( - bench_options.files, - options.vendor_dir_path().map(ToOwned::to_owned), - is_supported_bench_path, - )?; - - if specifiers.is_empty() { - return Err(deno_core::error::generic_error("No bench modules found")); - } - - let main_graph_container = cli_factory.main_module_graph_container().await?; - main_graph_container.check_specifiers(&specifiers).await?; - - if bench_options.no_run { - return Ok(()); - } - - let log_level = options.log_level(); - let worker_factory = Arc::new(cli_factory.create_cli_main_worker_factory().await?); - bench_specifiers( - worker_factory, - &permissions, - specifiers, - BenchSpecifierOptions { - filter: TestFilter::from_flag(&bench_options.filter), - json: bench_options.json, - log_level, - }, - ) - .await?; - Ok(()) -} diff --git a/libs/metagen/src/client_py/mod.rs b/libs/metagen/src/client_py/mod.rs new file mode 100644 index 0000000000..902aa51e27 --- /dev/null +++ b/libs/metagen/src/client_py/mod.rs @@ -0,0 +1,358 @@ +// Copyright Metatype OÃœ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +mod node_metas; + +mod selections; +mod types; +mod utils; + +use core::fmt::Write; + +use common::typegraph::EffectType; + +use crate::interlude::*; +use crate::*; + +use crate::shared::client::*; +use crate::shared::types::NameMemo; +use crate::shared::types::TypeRenderer; +use crate::utils::GenDestBuf; +use utils::normalize_type_title; + +#[derive(Serialize, Deserialize, Debug, garde::Validate)] +pub struct ClienPyGenConfig { + #[serde(flatten)] + #[garde(dive)] + pub base: crate::config::MdkGeneratorConfigBase, +} + +impl ClienPyGenConfig { + pub fn from_json(json: serde_json::Value, workspace_path: &Path) -> anyhow::Result { + let mut config: ClienPyGenConfig = serde_json::from_value(json)?; + config.base.path = workspace_path.join(config.base.path); + config.base.typegraph_path = config + .base + .typegraph_path + .as_ref() + .map(|path| workspace_path.join(path)); + Ok(config) + } +} + +pub struct Generator { + config: ClienPyGenConfig, +} + +impl Generator { + pub const INPUT_TG: &'static str = "tg_name"; + pub fn new(config: ClienPyGenConfig) -> Result { + use garde::Validate; + config.validate(&())?; + Ok(Self { config }) + } +} + +impl crate::Plugin for Generator { + fn bill_of_inputs(&self) -> HashMap { + [( + Self::INPUT_TG.to_string(), + if let Some(tg_name) = &self.config.base.typegraph_name { + GeneratorInputOrder::TypegraphFromTypegate { + name: tg_name.clone(), + } + } else if let Some(tg_path) = &self.config.base.typegraph_path { + GeneratorInputOrder::TypegraphFromPath { + path: tg_path.clone(), + name: self.config.base.typegraph_name.clone(), + } + } else { + unreachable!() + }, + )] + .into_iter() + .collect() + } + + fn generate( + &self, + inputs: HashMap, + ) -> anyhow::Result { + let tg = match inputs + .get(Self::INPUT_TG) + .context("missing generator input")? + { + GeneratorInputResolved::TypegraphFromTypegate { raw } => raw, + GeneratorInputResolved::TypegraphFromPath { raw } => raw, + }; + let mut out = HashMap::new(); + out.insert( + self.config.base.path.join("client.py"), + GeneratedFile { + contents: render_client_py(&self.config, tg)?, + overwrite: true, + }, + ); + + Ok(GeneratorOutput(out)) + } +} + +fn render_client_py(_config: &ClienPyGenConfig, tg: &Typegraph) -> anyhow::Result { + let mut client_py = GenDestBuf { + buf: Default::default(), + }; + + writeln!( + &mut client_py, + "# This file was @generated by metagen and is intended" + )?; + writeln!( + &mut client_py, + "# to be generated again on subsequent metagen runs." + )?; + writeln!(&mut client_py)?; + + render_static(&mut client_py)?; + + let dest: &mut GenDestBuf = &mut client_py; + let manifest = get_manifest(tg)?; + + let name_mapper = NameMapper { + nodes: tg.types.iter().cloned().map(Rc::new).collect(), + memo: Default::default(), + }; + let name_mapper = Rc::new(name_mapper); + + let node_metas = render_node_metas(dest, &manifest, name_mapper.clone())?; + let data_types = render_data_types(dest, &manifest, name_mapper.clone())?; + let data_types = Rc::new(data_types); + let selection_names = + render_selection_types(dest, &manifest, data_types.clone(), name_mapper.clone())?; + + write!( + dest, + r#" +class QueryGraph(QueryGraphBase): + def __init__(self): + super().__init__({{"# + )?; + for ty_name in name_mapper.memo.borrow().deref().values() { + write!( + dest, + // TODO: proper any scalar support + r#" + "{ty_name}": "Any","# + )?; + } + write!( + dest, + r#" + }}) + "# + )?; + + for fun in manifest.root_fns { + use heck::ToSnekCase; + + let node_name = fun.name; + let method_name = node_name.to_snek_case(); + let out_ty_name = data_types.get(&fun.out_id).unwrap(); + + let args_row = match ( + fun.in_id.map(|id| data_types.get(&id).unwrap()), + fun.select_ty.map(|id| selection_names.get(&id).unwrap()), + ) { + (Some(arg_ty), Some(select_ty)) => { + format!("self, args: typing.Union[{arg_ty}, PlaceholderArgs], select: {select_ty}") + } + // functions that return scalars don't need selections + (Some(arg_ty), None) => format!("self, args: typing.Union[{arg_ty}, PlaceholderArgs]"), + // not all functions have args (empty struct arg) + (None, Some(select_ty)) => format!("self, select: {select_ty}"), + (None, None) => "self".into(), + }; + + let args_selection = match (fun.in_id, fun.select_ty) { + (Some(_), Some(_)) => "(args, select)", + (Some(_), None) => "args", + (None, Some(_)) => "select", + (None, None) => "True", + }; + + let meta_method = node_metas + .get(&fun.id) + .map(|str| &str[..]) + .unwrap_or_else(|| "scalar"); + + let node_type = match fun.effect { + EffectType::Read => "QueryNode", + EffectType::Update | EffectType::Delete | EffectType::Create => "MutationNode", + }; + + write!( + dest, + r#" + def {method_name}({args_row}) -> {node_type}[{out_ty_name}]: + node = selection_to_nodes( + {{"{node_name}": {args_selection}}}, + {{"{node_name}": NodeDescs.{meta_method}}}, + "$q" + )[0] + return {node_type}(node.node_name, node.instance_name, node.args, node.sub_nodes) +"# + )?; + } + + writeln!(&mut client_py)?; + Ok(client_py.buf) +} + +/// Render the common sections like the transports +fn render_static(dest: &mut GenDestBuf) -> core::fmt::Result { + let client_py = include_str!("static/client.py"); + writeln!(dest, "{}", client_py)?; + Ok(()) +} + +/// Render the types that'll actually hold the data, the ones +/// used for serialization +fn render_data_types( + dest: &mut GenDestBuf, + manifest: &RenderManifest, + name_mapper: Rc, +) -> anyhow::Result { + let mut renderer = + TypeRenderer::new(name_mapper.nodes.clone(), Rc::new(types::PyTypeRenderer {})); + for &id in &manifest.data_types { + _ = renderer.render(id)?; + } + let (types_ts, name_memo) = renderer.finalize(); + writeln!(dest.buf, "{}", types_ts)?; + Ok(name_memo) +} + +/// Render the type used for selecting fields +fn render_selection_types( + dest: &mut GenDestBuf, + manifest: &RenderManifest, + arg_types_memo: Rc, + name_mapper: Rc, +) -> Result { + let mut renderer = TypeRenderer::new( + name_mapper.nodes.clone(), + Rc::new(selections::PyNodeSelectionsRenderer { + arg_ty_names: arg_types_memo, + }), + ); + for &id in &manifest.selections { + _ = renderer.render(id)?; + } + let (buf, memo) = renderer.finalize(); + write!(dest, "{buf}")?; + Ok(memo) +} + +/// Render the `nodeMetas` object used to encode the query +/// graph metadata +fn render_node_metas( + dest: &mut GenDestBuf, + manifest: &RenderManifest, + name_mapper: Rc, +) -> Result { + let mut renderer = TypeRenderer::new( + name_mapper.nodes.clone(), + Rc::new(node_metas::PyNodeMetasRenderer { name_mapper }), + ); + for &id in &manifest.node_metas { + _ = renderer.render(id)?; + } + let (methods, memo) = renderer.finalize(); + write!( + dest, + r#" +class NodeDescs: + @staticmethod + def scalar(): + return NodeMeta() + {methods} +"# + )?; + Ok(memo) +} + +#[test] +fn e2e() -> anyhow::Result<()> { + use crate::tests::*; + + let tg_name = "gen-test"; + let config = config::Config { + targets: [( + "default".to_string(), + config::Target( + [GeneratorConfig { + generator_name: "client_py".to_string(), + other: serde_json::to_value(client_py::ClienPyGenConfig { + base: config::MdkGeneratorConfigBase { + typegraph_name: Some(tg_name.into()), + typegraph_path: None, + // NOTE: root will map to the test's tempdir + path: "./".into(), + }, + })?, + }] + .into_iter() + .collect(), + ), + )] + .into_iter() + .collect(), + }; + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .thread_stack_size(16 * 1024 * 1024) + .build()? + .block_on(async { + let tg = test_typegraph_3().await?; + e2e_test(vec![E2eTestCase { + typegraphs: [(tg_name.to_string(), tg)].into_iter().collect(), + target: "default".into(), + config, + build_fn: |args| { + Box::pin(async move { + let status = tokio::process::Command::new("ruff") + .args("check client.py".split(' ').collect::>()) + .current_dir(&args.path) + .kill_on_drop(true) + .spawn()? + .wait() + .await?; + if !status.success() { + anyhow::bail!("error checking generated module"); + } + Ok(()) + }) + }, + target_dir: None, + }]) + .await + })?; + Ok(()) +} + +struct NameMapper { + nodes: Vec>, + memo: std::cell::RefCell, +} + +impl NameMapper { + pub fn name_for(&self, id: u32) -> Rc { + self.memo + .borrow_mut() + .entry(id) + .or_insert_with(|| { + Rc::from(normalize_type_title(&self.nodes[id as usize].base().title)) + }) + .clone() + } +} diff --git a/libs/metagen/src/client_py/node_metas.rs b/libs/metagen/src/client_py/node_metas.rs new file mode 100644 index 0000000000..2739819010 --- /dev/null +++ b/libs/metagen/src/client_py/node_metas.rs @@ -0,0 +1,171 @@ +// Copyright Metatype OÃœ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use std::fmt::Write; + +use common::typegraph::*; + +use super::utils::normalize_type_title; +use crate::{interlude::*, shared::types::*}; + +pub struct PyNodeMetasRenderer { + pub name_mapper: Rc, +} + +impl PyNodeMetasRenderer { + /// `props` is a map of prop_name -> (TypeName, subNodeName) + fn render_for_object( + &self, + dest: &mut impl Write, + ty_name: &str, + props: IndexMap>, + ) -> std::fmt::Result { + write!( + dest, + r#" + @staticmethod + def {ty_name}(): + return NodeMeta( + sub_nodes={{"# + )?; + for (key, node_ref) in props { + write!( + dest, + r#" + "{key}": NodeDescs.{node_ref},"# + )?; + } + write!( + dest, + r#" + }}, + ) +"# + )?; + Ok(()) + } + + fn render_for_func( + &self, + dest: &mut impl Write, + ty_name: &str, + return_node: &str, + argument_fields: Option>>, + ) -> std::fmt::Result { + write!( + dest, + r#" + @staticmethod + def {ty_name}(): + return NodeMeta( + sub_nodes=NodeDescs.{return_node}().sub_nodes,"# + )?; + if let Some(fields) = argument_fields { + write!( + dest, + r#" + arg_types={{"# + )?; + + for (key, ty) in fields { + write!( + dest, + r#" + "{key}": "{ty}","# + )?; + } + + write!( + dest, + r#" + }},"# + )?; + } + write!( + dest, + r#" + ) +"# + )?; + Ok(()) + } +} + +impl RenderType for PyNodeMetasRenderer { + fn render( + &self, + renderer: &mut TypeRenderer, + cursor: &mut VisitCursor, + ) -> anyhow::Result { + use heck::ToPascalCase; + + let name = match cursor.node.clone().deref() { + TypeNode::Any { .. } => unimplemented!("Any type support not implemented"), + TypeNode::Boolean { .. } + | TypeNode::Float { .. } + | TypeNode::Integer { .. } + | TypeNode::String { .. } + | TypeNode::File { .. } => "scalar".into(), + // list and optional node just return the meta of the wrapped type + TypeNode::Optional { + data: OptionalTypeData { item, .. }, + .. + } + | TypeNode::List { + data: ListTypeData { items: item, .. }, + .. + } => renderer.render_subgraph(*item, cursor)?.0.unwrap().to_string(), + TypeNode::Function { data, base } => { + let (return_ty_name, _cyclic) = renderer.render_subgraph(data.output, cursor)?; + let return_ty_name = return_ty_name.unwrap() ; + let props = match renderer.nodes[data.input as usize].deref() { + TypeNode::Object { data, .. } if !data.properties.is_empty() => { + let props = data + .properties + .iter() + // generate property types first + .map(|(name, &dep_id)| { + eyre::Ok((name.clone(), self.name_mapper.name_for(dep_id))) + }) + .collect::, _>>()?; + Some(props) + } + _ => None, + }; + let node_name = &base.title; + let ty_name = normalize_type_title(node_name).to_pascal_case(); + self.render_for_func(renderer, &ty_name, &return_ty_name, props)?; + ty_name + } + TypeNode::Object { data, base } => { + let props = data + .properties + .iter() + // generate property types first + .map(|(name, &dep_id)| { + let (ty_name, _cyclic) = renderer.render_subgraph(dep_id, cursor)?; + let ty_name = ty_name.unwrap(); + eyre::Ok((name.clone(), ty_name)) + }) + .collect::, _>>()?; + let node_name = &base.title; + let ty_name = normalize_type_title(node_name).to_pascal_case(); + self.render_for_object(renderer, &ty_name, props)?; + ty_name + } + TypeNode::Either { + .. + // data: EitherTypeData { one_of: variants }, + // base, + } + | TypeNode::Union { + .. + // data: UnionTypeData { any_of: variants }, + // base, + } => { + todo!("unions are wip") + } + }; + Ok(name) + } +} diff --git a/libs/metagen/src/client_py/selections.rs b/libs/metagen/src/client_py/selections.rs new file mode 100644 index 0000000000..58dcab6404 --- /dev/null +++ b/libs/metagen/src/client_py/selections.rs @@ -0,0 +1,98 @@ +// Copyright Metatype OÃœ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use std::fmt::Write; + +use common::typegraph::*; + +use super::utils::*; +use crate::{interlude::*, shared::client::*, shared::types::*}; + +pub struct PyNodeSelectionsRenderer { + pub arg_ty_names: Rc, +} + +impl PyNodeSelectionsRenderer { + /// `props` is a map of prop_name -> (SelectionType, ArgumentType) + fn render_for_object( + &self, + dest: &mut impl Write, + ty_name: &str, + props: IndexMap, + ) -> std::fmt::Result { + writeln!(dest, r#"{ty_name} = typing.TypedDict("{ty_name}", {{"#)?; + writeln!(dest, r#" "_": SelectionFlags,"#)?; + for (name, select_ty) in props { + use SelectionTy::*; + match select_ty { + Scalar => writeln!(dest, r#" "{name}": ScalarSelectNoArgs,"#)?, + ScalarArgs { arg_ty } => { + writeln!(dest, r#" "{name}": ScalarSelectArgs["{arg_ty}"],"#)? + } + Composite { select_ty } => writeln!( + dest, + r#" "{name}": CompositeSelectNoArgs["{select_ty}"],"# + )?, + CompositeArgs { arg_ty, select_ty } => writeln!( + dest, + r#" "{name}": CompositeSelectArgs["{arg_ty}", "{select_ty}"],"# + )?, + }; + } + writeln!(dest, "}}, total=False)")?; + writeln!(dest)?; + Ok(()) + } +} + +impl RenderType for PyNodeSelectionsRenderer { + fn render(&self, renderer: &mut TypeRenderer, cursor: &mut VisitCursor) -> Result { + use heck::ToPascalCase; + + let name = match cursor.node.clone().deref() { + TypeNode::Boolean { .. } + | TypeNode::Float { .. } + | TypeNode::Integer { .. } + | TypeNode::String { .. } + | TypeNode::File { .. } => "scalar".into(), // unreachable!("scalars don't get to have selections"), + TypeNode::Any { .. } => unimplemented!("Any type support not implemented"), + TypeNode::Optional { data: OptionalTypeData { item, .. }, .. } + | TypeNode::List { data: ListTypeData { items: item, .. }, .. } + | TypeNode::Function { data:FunctionTypeData { output: item, .. }, .. } + => renderer.render_subgraph(*item, cursor)?.0.unwrap().to_string(), + TypeNode::Object { data, base } => { + let props = data + .properties + .iter() + // generate property types first + .map(|(name, &dep_id)| { + eyre::Ok( + ( + normalize_struct_prop_name(name), + selection_for_field(dep_id, &self.arg_ty_names, renderer, cursor)? + ) + ) + }) + .collect::, _>>()?; + let node_name = &base.title; + let ty_name = normalize_type_title(node_name); + let ty_name = format!("{ty_name}Selections").to_pascal_case(); + self.render_for_object(renderer, &ty_name, props)?; + ty_name + } + TypeNode::Either { + .. + // data: EitherTypeData { one_of: variants }, + // base, + } + | TypeNode::Union { + .. + // data: UnionTypeData { any_of: variants }, + // base, + } => { + todo!("unions are wip") + } + }; + Ok(name) + } +} diff --git a/libs/metagen/src/client_py/static/client.py b/libs/metagen/src/client_py/static/client.py new file mode 100644 index 0000000000..cd67b1af74 --- /dev/null +++ b/libs/metagen/src/client_py/static/client.py @@ -0,0 +1,498 @@ +import typing +import dataclasses as dc +import json +import urllib.request as request +import urllib.error +import http.client as http_c + + +def selection_to_nodes( + selection: "SelectionGeneric", + metas: typing.Dict[str, typing.Callable[[], "NodeMeta"]], + parent_path: str, +) -> typing.List["SelectNode[typing.Any]"]: + out = [] + flags = selection.get("_") + if flags is not None and not isinstance(flags, SelectionFlags): + raise Exception( + f"selection field '_' should be of type SelectionFlags but found {type(flags)}" + ) + select_all = True if flags is not None and flags.select_all else False + found_nodes = set(selection.keys()) + for node_name, meta_fn in metas.items(): + found_nodes.discard(node_name) + + node_selection = selection.get(node_name) + if node_selection is False or (node_selection is None and not select_all): + # this node was not selected + continue + + meta = meta_fn() + + # we splat out any aliasing of nodes here + node_instances = ( + [(key, val) for key, val in node_selection.items.items()] + if isinstance(node_selection, Alias) + else [(node_name, node_selection)] + ) + + for instance_name, instance_selection in node_instances: + # print(parent_path, instance_selection, meta.sub_nodes, instance_selection, flags) + if instance_selection is False or ( + instance_selection is None and not select_all + ): + # this instance was not selected + continue + if isinstance(instance_selection, Alias): + raise Exception( + f"nested Alias node discovored at {parent_path}.{instance_name}" + ) + + instance_args: typing.Optional[NodeArgs] = None + if meta.arg_types is not None: + arg = instance_selection + + if isinstance(arg, tuple): + arg = arg[0] + + # arg types are always TypedDicts + if not isinstance(arg, dict): + raise Exception( + f"node at {parent_path}.{instance_name} is a node that " + + "requires arguments " + + f"but detected argument is typeof {type(arg)}" + ) + + # convert arg dict to NodeArgs + expected_args = {key: val for key, val in meta.arg_types.items()} + instance_args = {} + for key, val in arg.items(): + ty_name = expected_args.pop(key) + if ty_name is None: + raise Exception( + f"unexpected argument ${key} at {parent_path}.{instance_name}" + ) + instance_args[key] = NodeArgValue(ty_name, val) + + sub_nodes: typing.Optional[typing.List[SelectNode]] = None + if meta.sub_nodes is not None: + sub_selections = instance_selection + + # if node requires both selection and arg, it must be + # a CompositeSelectArgs which is a tuple selection + if meta.arg_types is not None: + if not isinstance(sub_selections, tuple): + raise Exception( + f"node at {parent_path}.{instance_name} is a composite " + + "that requires an argument object " + + f"but selection is typeof {type(sub_selections)}" + ) + sub_selections = sub_selections[1] + + elif isinstance(sub_selections, tuple): + raise Exception( + f"node at {parent_path}.{instance_name} " + + "is a composite that takes no arguments " + + f"but selection is typeof {type(instance_selection)}", + ) + + # selection types are always TypedDicts as well + if not isinstance(sub_selections, dict): + raise Exception( + f"node at {parent_path}.{instance_name} " + + "is a no argument composite but first element of " + + f"selection is typeof {type(instance_selection)}", + ) + sub_nodes = selection_to_nodes( + typing.cast("SelectionGeneric", sub_selections), + meta.sub_nodes, + f"{parent_path}.{instance_name}", + ) + + node = SelectNode(node_name, instance_name, instance_args, sub_nodes) + out.append(node) + + found_nodes.discard("_") + if len(found_nodes) > 0: + raise Exception( + f"unexpected nodes found in selection set at {parent_path}: {found_nodes}", + ) + return out + + +# Util types section # + +Out = typing.TypeVar("Out", covariant=True) + +T = typing.TypeVar("T") + +ArgT = typing.TypeVar("ArgT", bound=typing.Mapping[str, typing.Any]) +SelectionT = typing.TypeVar("SelectionT") + +# Query node types section # + + +@dc.dataclass +class SelectNode(typing.Generic[Out]): + node_name: str + instance_name: str + args: typing.Optional["NodeArgs"] + sub_nodes: typing.Optional[typing.List["SelectNode"]] + + +@dc.dataclass +class QueryNode(SelectNode[Out]): + pass + + +@dc.dataclass +class MutationNode(SelectNode[Out]): + pass + + +@dc.dataclass +class NodeMeta: + sub_nodes: typing.Optional[typing.Dict[str, typing.Callable[[], "NodeMeta"]]] = None + arg_types: typing.Optional[typing.Dict[str, str]] = None + + +# Argument types section # + + +@dc.dataclass +class NodeArgValue: + type_name: str + value: typing.Any + + +NodeArgs = typing.Dict[str, NodeArgValue] + + +class PlaceholderValue(typing.Generic[T]): + def __init__(self, key: str): + self.key = key + + +PlaceholderArgs = typing.Dict[str, PlaceholderValue] + + +class PreparedArgs: + def get(self, key: str) -> PlaceholderValue: + return PlaceholderValue(key) + + +# Selection types section # + + +class Alias(typing.Generic[SelectionT]): + """ + Request multiple instances of a single node under different + aliases. + """ + + def __init__(self, **aliases: SelectionT): + self.items = aliases + + +ScalarSelectNoArgs = typing.Union[bool, Alias[typing.Literal[True]], None] +ScalarSelectArgs = typing.Union[ + ArgT, + PlaceholderArgs, + Alias[typing.Union[ArgT, PlaceholderArgs]], + typing.Literal[False], + None, +] +CompositeSelectNoArgs = typing.Union[ + SelectionT, Alias[SelectionT], typing.Literal[False], None +] +CompositeSelectArgs = typing.Union[ + typing.Tuple[typing.Union[ArgT, PlaceholderArgs], SelectionT], + Alias[typing.Tuple[typing.Union[ArgT, PlaceholderArgs], SelectionT]], + typing.Literal[False], + None, +] + + +# FIXME: ideally this would be a TypedDict +# to allow full dict based queries but +# we need to reliably identify SelectionFlags at runtime +# but TypedDicts don't allow instanceof +@dc.dataclass +class SelectionFlags: + select_all: typing.Union[bool, None] = None + + +class Selection(typing.TypedDict, total=False): + _: SelectionFlags + + +SelectionGeneric = typing.Mapping[ + str, + typing.Union[ + SelectionFlags, + ScalarSelectNoArgs, + ScalarSelectArgs[typing.Mapping[str, typing.Any]], + CompositeSelectNoArgs["SelectionGeneric"], + # FIXME: should be possible to make SelectionT here `SelectionGeneric` recursively + # but something breaks + CompositeSelectArgs[typing.Mapping[str, typing.Any], typing.Any], + ], +] + +# GraphQL section + + +@dc.dataclass +class GraphQLTransportOptions: + headers: typing.Dict[str, str] + + +@dc.dataclass +class GraphQLRequest: + addr: str + method: str + headers: typing.Dict[str, str] + body: bytes + + +@dc.dataclass +class GraphQLResponse: + req: GraphQLRequest + status: int + headers: typing.Dict[str, str] + body: bytes + + +def convert_query_node_gql( + node: SelectNode, + variables: typing.Dict[str, NodeArgValue], +): + out = ( + f"{node.instance_name}: {node.node_name}" + if node.instance_name != node.node_name + else node.node_name + ) + if node.args is not None: + arg_row = "" + for key, val in node.args.items(): + name = f"in{len(variables)}" + variables[name] = val + arg_row += f"{key}: ${name}, " + if len(arg_row): + out += f"({arg_row[:-2]})" + + if node.sub_nodes is not None: + sub_node_list = "" + for node in node.sub_nodes: + sub_node_list += f"{convert_query_node_gql(node, variables)} " + out += f" {{ {sub_node_list}}}" + return out + + +class GraphQLTransportBase: + def __init__( + self, + addr: str, + opts: GraphQLTransportOptions, + ty_to_gql_ty_map: typing.Dict[str, str], + ): + self.addr = addr + self.opts = opts + self.ty_to_gql_ty_map = ty_to_gql_ty_map + + def build_gql( + self, + query: typing.Mapping[str, SelectNode], + ty: typing.Union[typing.Literal["query"], typing.Literal["mutation"]], + name: str = "", + ): + variables: typing.Dict[str, NodeArgValue] = {} + root_nodes = "" + for key, node in query.items(): + fixed_node = SelectNode(node.node_name, key, node.args, node.sub_nodes) + root_nodes += f" {convert_query_node_gql(fixed_node, variables)}\n" + args_row = "" + for key, val in variables.items(): + args_row += f"${key}: {self.ty_to_gql_ty_map[val.type_name]}, " + + if len(args_row): + args_row = f"({args_row[:-2]})" + + doc = f"{ty} {name}{args_row} {{\n{root_nodes}}}" + return (doc, {key: val.value for key, val in variables.items()}) + + def build_req( + self, + doc: str, + variables: typing.Dict[str, typing.Any], + opts: typing.Optional[GraphQLTransportOptions] = None, + ): + headers = {} + headers.update(self.opts.headers) + if opts: + headers.update(opts.headers) + headers.update( + { + "accept": "application/json", + "content-type": "application/json", + } + ) + data = json.dumps({"query": doc, "variables": variables}).encode("utf-8") + return GraphQLRequest( + addr=self.addr, + method="POST", + headers=headers, + body=data, + ) + + def handle_response(self, res: GraphQLResponse): + if res.status != 200: + raise Exception(f"graphql request failed with status {res.status}", res) + if res.headers.get("content-type") != "application/json": + raise Exception("unexpected content-type in graphql response", res) + parsed = json.loads(res.body) + if parsed.get("errors"): + raise Exception("graphql errors in response", parsed) + return parsed["data"] + + +class GraphQLTransportUrlib(GraphQLTransportBase): + def fetch( + self, + doc: str, + variables: typing.Dict[str, typing.Any], + opts: typing.Optional[GraphQLTransportOptions], + ): + req = self.build_req(doc, variables, opts) + try: + with request.urlopen( + request.Request( + url=req.addr, method=req.method, headers=req.headers, data=req.body + ) + ) as res: + http_res: http_c.HTTPResponse = res + return self.handle_response( + GraphQLResponse( + req, + status=http_res.status, + body=http_res.read(), + headers={key: val for key, val in http_res.headers.items()}, + ) + ) + except request.HTTPError as res: + return self.handle_response( + GraphQLResponse( + req, + status=res.status or 599, + body=res.read(), + headers={key: val for key, val in res.headers.items()}, + ) + ) + except urllib.error.URLError as err: + raise Exception(f"URL error: {err.reason}") + + def query( + self, + inp: typing.Dict[str, QueryNode[Out]], + opts: typing.Optional[GraphQLTransportOptions] = None, + name: str = "", + ) -> typing.Dict[str, Out]: + doc, variables = self.build_gql( + {key: val for key, val in inp.items()}, "query", name + ) + # print(doc,variables) + # return {} + return self.fetch(doc, variables, opts) + + def mutation( + self, + inp: typing.Dict[str, MutationNode[Out]], + opts: typing.Optional[GraphQLTransportOptions] = None, + name: str = "", + ) -> typing.Dict[str, Out]: + doc, variables = self.build_gql( + {key: val for key, val in inp.items()}, "mutation", name + ) + return self.fetch(doc, variables, opts) + + def prepare_query( + self, + fun: typing.Callable[[PreparedArgs], typing.Dict[str, QueryNode[Out]]], + name: str = "", + ) -> "PreparedRequestUrlib[Out]": + return PreparedRequestUrlib(self, fun, "query", name) + + def prepare_mutation( + self, + fun: typing.Callable[[PreparedArgs], typing.Dict[str, MutationNode[Out]]], + name: str = "", + ) -> "PreparedRequestUrlib[Out]": + return PreparedRequestUrlib(self, fun, "mutation", name) + + +class PreparedRequestBase(typing.Generic[Out]): + def __init__( + self, + transport: GraphQLTransportBase, + fun: typing.Callable[[PreparedArgs], typing.Mapping[str, SelectNode[Out]]], + ty: typing.Union[typing.Literal["query"], typing.Literal["mutation"]], + name: str = "", + ): + dry_run_node = fun(PreparedArgs()) + doc, variables = transport.build_gql(dry_run_node, ty, name) + self.doc = doc + self._mapping = variables + self.transport = transport + + def resolve_vars( + self, + args: typing.Mapping[str, typing.Any], + mappings: typing.Dict[str, typing.Any], + ): + resolved: typing.Dict[str, typing.Any] = {} + for key, val in mappings.items(): + if isinstance(val, PlaceholderValue): + resolved[key] = args[val.key] + elif isinstance(val, dict): + self.resolve_vars(args, val) + else: + resolved[key] = val + return resolved + + +class PreparedRequestUrlib(PreparedRequestBase[Out]): + def __init__( + self, + transport: GraphQLTransportUrlib, + fun: typing.Callable[[PreparedArgs], typing.Mapping[str, SelectNode[Out]]], + ty: typing.Union[typing.Literal["query"], typing.Literal["mutation"]], + name: str = "", + ): + super().__init__(transport, fun, ty, name) + self.transport = transport + + def perform( + self, + args: typing.Mapping[str, typing.Any], + opts: typing.Optional[GraphQLTransportOptions] = None, + ) -> typing.Dict[str, Out]: + resolved_vars = self.resolve_vars(args, self._mapping) + return self.transport.fetch(self.doc, resolved_vars, opts) + + +# Query graph section # + + +class QueryGraphBase: + def __init__(self, ty_to_gql_ty_map: typing.Dict[str, str]): + self.ty_to_gql_ty_map = ty_to_gql_ty_map + + def graphql_sync( + self, addr: str, opts: typing.Optional[GraphQLTransportOptions] = None + ): + return GraphQLTransportUrlib( + addr, opts or GraphQLTransportOptions({}), self.ty_to_gql_ty_map + ) + + +# - - - - - - - - - -- - - - - - - -- - - # diff --git a/libs/metagen/src/client_py/types.rs b/libs/metagen/src/client_py/types.rs new file mode 100644 index 0000000000..eab7ff1e82 --- /dev/null +++ b/libs/metagen/src/client_py/types.rs @@ -0,0 +1,298 @@ +// Copyright Metatype OÃœ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use std::fmt::Write; + +use common::typegraph::*; + +use super::utils::{normalize_struct_prop_name, normalize_type_title}; +use crate::{interlude::*, shared::types::*}; + +pub struct PyTypeRenderer {} +impl PyTypeRenderer { + fn render_alias( + &self, + dest: &mut impl Write, + alias_name: &str, + aliased_ty: &str, + ) -> std::fmt::Result { + writeln!(dest, "{alias_name} = {aliased_ty}")?; + writeln!(dest)?; + Ok(()) + } + + /// `props` is a map of prop_name -> (TypeName, serialization_name) + fn render_object_type( + &self, + dest: &mut impl Write, + ty_name: &str, + props: IndexMap, bool)>, + ) -> std::fmt::Result { + writeln!(dest, r#"{ty_name} = typing.TypedDict("{ty_name}", {{"#)?; + for (name, (ty_name, _optional)) in props.into_iter() { + // FIXME: use NotRequired when bumping to python version + // that supports it + // also, remove the total param below + // if optional { + // writeln!(dest, r#" "{name}": typing.NotRequired[{ty_name}],"#)?; + // } else { + // writeln!(dest, r#" "{name}": {ty_name},"#)?; + // } + writeln!(dest, r#" "{name}": {ty_name},"#)?; + } + writeln!(dest, "}}, total=False)")?; + writeln!(dest)?; + Ok(()) + } + + fn render_union_type( + &self, + dest: &mut impl Write, + ty_name: &str, + variants: Vec>, + ) -> std::fmt::Result { + writeln!(dest, "{ty_name} = typing.Union[")?; + for ty_name in variants.into_iter() { + writeln!(dest, " {ty_name},")?; + } + writeln!(dest, "]")?; + writeln!(dest)?; + writeln!(dest)?; + Ok(()) + } + + fn quote_ty_name( + &self, + id: u32, + (ty_name, cyclic): (RenderedName, Option), + renderer: &mut TypeRenderer, + ) -> Rc { + match ty_name { + RenderedName::Name(name) => { + if cyclic.is_some() && !name.contains('"') { + format!(r#""{name}""#).into() + } else { + name + } + } + RenderedName::Placeholder(_name) => renderer.placeholder_string( + id, + Box::new(move |ty_name| { + if !ty_name.contains('"') { + format!(r#""{ty_name}""#) + } else { + ty_name.into() + } + }), + ), + } + } +} + +impl RenderType for PyTypeRenderer { + fn render( + &self, + renderer: &mut TypeRenderer, + cursor: &mut VisitCursor, + ) -> anyhow::Result { + let body_required = type_body_required(cursor.node.clone()); + let name = match cursor.node.clone().deref() { + TypeNode::Function { .. } => "None".into(), + TypeNode::Boolean { base } if body_required => { + let ty_name = normalize_type_title(&base.title); + self.render_alias(renderer, &ty_name, "bool")?; + ty_name + } + TypeNode::Boolean { .. } => "bool".into(), + TypeNode::Float { base, .. } if body_required => { + let ty_name = normalize_type_title(&base.title); + self.render_alias(renderer, &ty_name, "float")?; + ty_name + } + TypeNode::Float { .. } => "float".into(), + TypeNode::Integer { base, .. } if body_required => { + let ty_name = normalize_type_title(&base.title); + self.render_alias(renderer, &ty_name, "int")?; + ty_name + } + TypeNode::Integer { .. } => "int".into(), + TypeNode::String { + base: + TypeNodeBase { + enumeration: Some(variants), + title, + .. + }, + .. + } if body_required => { + let ty_name = normalize_type_title(title); + // variants are valid strings in JSON (validated by the validator) + self.render_union_type( + renderer, + &ty_name, + variants + .iter() + .map(|val| format!("typing.Literal[{val}]").into()) + .collect(), + )?; + ty_name + } + TypeNode::String { + data: + StringTypeData { + format: Some(format), + pattern: None, + min_length: None, + max_length: None, + }, + base: + TypeNodeBase { + title, + enumeration: None, + .. + }, + } if title.starts_with("string_") => { + let ty_name = normalize_type_title(&format!("string_{format}")); + self.render_alias(renderer, &ty_name, "str")?; + ty_name + } + TypeNode::String { base, .. } if body_required => { + let ty_name = normalize_type_title(&base.title); + self.render_alias(renderer, &ty_name, "str")?; + ty_name + } + TypeNode::String { .. } => "str".into(), + TypeNode::File { base, .. } if body_required => { + let ty_name = normalize_type_title(&base.title); + self.render_alias(renderer, &ty_name, "bytes")?; + ty_name + } + TypeNode::File { .. } => "bytes".into(), + TypeNode::Any { base } if body_required => { + let ty_name = normalize_type_title(&base.title); + self.render_alias(renderer, &ty_name, "typing.Any")?; + ty_name + } + TypeNode::Any { .. } => "typing.Any".into(), + TypeNode::Object { data, base } => { + let props = data + .properties + .iter() + // generate property types first + .map(|(name, &dep_id)| { + let ty_name = self.quote_ty_name( + dep_id, + renderer.render_subgraph(dep_id, cursor)?, + renderer, + ); + let optional = matches!( + renderer.nodes[dep_id as usize].deref(), + TypeNode::Optional { .. } + ); + Ok::<_, anyhow::Error>(( + normalize_struct_prop_name(&name[..]), + (ty_name, optional), + )) + }) + .collect::, _>>()?; + let ty_name = normalize_type_title(&base.title); + self.render_object_type(renderer, &ty_name, props)?; + ty_name + } + TypeNode::Either { + data: EitherTypeData { one_of: variants }, + base, + } + | TypeNode::Union { + data: UnionTypeData { any_of: variants }, + base, + } => { + let variants = variants + .iter() + .map(|&dep_id| { + let ty_name = self.quote_ty_name( + dep_id, + renderer.render_subgraph(dep_id, cursor)?, + renderer, + ); + Ok::<_, anyhow::Error>(ty_name) + }) + .collect::, _>>()?; + let ty_name = normalize_type_title(&base.title); + self.render_union_type(renderer, &ty_name, variants)?; + ty_name + } + TypeNode::Optional { + // NOTE: keep this condition + // in sync with similar one above + base, + data: + OptionalTypeData { + default_value: None, + item, + }, + } if base.title.starts_with("optional_") => { + // TODO: handle cyclic case where entire cycle is aliases + let inner_ty_name = + self.quote_ty_name(*item, renderer.render_subgraph(*item, cursor)?, renderer); + format!("typing.Optional[{inner_ty_name}]") + } + TypeNode::Optional { data, base } => { + // TODO: handle cyclic case where entire cycle is aliases + let inner_ty_name = self.quote_ty_name( + data.item, + renderer.render_subgraph(data.item, cursor)?, + renderer, + ); + let ty_name = normalize_type_title(&base.title); + self.render_alias( + renderer, + &ty_name, + &format!("typing.Union[{inner_ty_name}, None]"), + )?; + ty_name + } + TypeNode::List { + // NOTE: keep this condition + // in sync with similar one above + base, + data: + ListTypeData { + min_items: None, + max_items: None, + unique_items, + items, + }, + } if base.title.starts_with("list_") => { + // TODO: handle cyclic case where entire cycle is aliases + let inner_ty_name = + self.quote_ty_name(*items, renderer.render_subgraph(*items, cursor)?, renderer); + if let Some(true) = unique_items { + format!("typing.Set[{inner_ty_name}]") + } else { + format!("typing.List[{inner_ty_name}]") + } + } + TypeNode::List { data, base } => { + // TODO: handle cyclic case where entire cycle is aliases + let inner_ty_name = self.quote_ty_name( + data.items, + renderer.render_subgraph(data.items, cursor)?, + renderer, + ); + let ty_name = normalize_type_title(&base.title); + if let Some(true) = data.unique_items { + self.render_alias(renderer, &ty_name, &format!("typing.Set[{inner_ty_name}]"))?; + } else { + self.render_alias( + renderer, + &ty_name, + &format!("typing.List[{inner_ty_name}]"), + )?; + }; + ty_name + } + }; + Ok(name) + } +} diff --git a/libs/metagen/src/client_py/utils.rs b/libs/metagen/src/client_py/utils.rs new file mode 100644 index 0000000000..789eb05b94 --- /dev/null +++ b/libs/metagen/src/client_py/utils.rs @@ -0,0 +1,42 @@ +// Copyright Metatype OÃœ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use heck::*; +use once_cell::sync::Lazy; + +// sourced from +// keyword library https://docs.python.org/3/library/keyword.html +static _KEYWORDS: Lazy> = Lazy::new(|| { + [ + "False", "None", "True", "and", "as", "assert", "async", "await", "break", "class", + "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", + "if", "import", "in", "is", "lambda", "nonlocal", "not", "or", "pass", "raise", "return", + "try", "while", "with", "yield", + ] + .into_iter() + .collect() +}); + +pub fn normalize_type_title(title: &str) -> String { + static RE: Lazy = + Lazy::new(|| regex::Regex::new(r"^(?\d+)(?.*)").unwrap()); + + // TODO: clean up non valid chars + + // clean out underscores at start/end + let title = title.trim_matches('_'); + // move any numbers at start to end + let title = title.to_pascal_case(); + let title = RE.replace(&title, "$rest$startd"); + title.to_string() +} + +/// This assumes title was already through [normalize_type_title] +pub fn normalize_struct_prop_name(title: &str) -> String { + title.to_snek_case() + // if KEYWORDS.contains(&title[..]) { + // format!("{title}_") + // } else { + // title + // } +} diff --git a/libs/metagen/src/client_ts/mod.rs b/libs/metagen/src/client_ts/mod.rs index 95989b7049..9461af4161 100644 --- a/libs/metagen/src/client_ts/mod.rs +++ b/libs/metagen/src/client_ts/mod.rs @@ -12,6 +12,7 @@ use crate::interlude::*; use crate::*; use crate::mdk_typescript::utils; +use crate::shared::client::*; use crate::shared::types::NameMemo; use crate::shared::types::TypeRenderer; use crate::utils::GenDestBuf; @@ -84,9 +85,9 @@ impl crate::Plugin for Generator { }; let mut out = HashMap::new(); out.insert( - self.config.base.path.join("mdk.ts"), + self.config.base.path.join("client.ts"), GeneratedFile { - contents: render_mdk_ts(&self.config, tg)?, + contents: render_client_ts(&self.config, tg)?, overwrite: true, }, ); @@ -95,24 +96,24 @@ impl crate::Plugin for Generator { } } -fn render_mdk_ts(_config: &ClienTsGenConfig, tg: &Typegraph) -> anyhow::Result { - let mut mdk_ts = GenDestBuf { +fn render_client_ts(_config: &ClienTsGenConfig, tg: &Typegraph) -> anyhow::Result { + let mut client_ts = GenDestBuf { buf: Default::default(), }; writeln!( - &mut mdk_ts, + &mut client_ts, "// This file was @generated by metagen and is intended" )?; writeln!( - &mut mdk_ts, + &mut client_ts, "// to be generated again on subsequent metagen runs." )?; - writeln!(&mut mdk_ts)?; + writeln!(&mut client_ts)?; - render_static(&mut mdk_ts)?; + render_static(&mut client_ts)?; - let dest: &mut GenDestBuf = &mut mdk_ts; + let dest: &mut GenDestBuf = &mut client_ts; let manifest = get_manifest(tg)?; let name_mapper = NameMapper { @@ -130,7 +131,7 @@ fn render_mdk_ts(_config: &ClienTsGenConfig, tg: &Typegraph) -> anyhow::Result format!("args: {arg_ty}, select: {select_ty}"), + (Some(arg_ty), Some(select_ty)) => { + format!("args: {arg_ty} | PlaceholderArgs<{arg_ty}>, select: {select_ty}") + } // functions that return scalars don't need selections - (Some(arg_ty), None) => format!("args: {arg_ty}"), + (Some(arg_ty), None) => format!("args: {arg_ty} | PlaceholderArgs<{arg_ty}>"), // not all functions have args (empty struct arg) (None, Some(select_ty)) => format!("select: {select_ty}"), (None, None) => "".into(), @@ -176,20 +179,23 @@ export class QueryGraph extends QueryGraphBase {{ (None, None) => "true", }; - let meta_method = node_metas.get(&fun.id).unwrap(); + let meta_method = node_metas + .get(&fun.id) + .map(|str| &str[..]) + .unwrap_or_else(|| "scalar"); let node_type = match fun.effect { - EffectType::Create => "QueryNode", - EffectType::Update | EffectType::Delete | EffectType::Read => "MutationNode", + EffectType::Read => "QueryNode", + EffectType::Update | EffectType::Delete | EffectType::Create => "MutationNode", }; write!( dest, r#" - {method_name} ({args_row}) {{ - const inner = selectionToNodeSet( + {method_name}({args_row}) {{ + const inner = _selectionToNodeSet( {{ "{node_name}": {args_selection} }}, - [["{node_name}", nodeMetas.{meta_method}()]], + [["{node_name}", nodeMetas.{meta_method}]], "$q", )[0]; return new {node_type}(inner) as {node_type}<{out_ty_name}>; @@ -202,117 +208,14 @@ export class QueryGraph extends QueryGraphBase {{ }}" )?; - writeln!(&mut mdk_ts)?; - Ok(mdk_ts.buf) -} - -struct RootFn { - id: u32, - name: String, - in_id: Option, - out_id: u32, - effect: EffectType, - select_ty: Option, -} - -struct RenderManifest { - data_types: HashSet, - // arg_types: HashSet, - // arg_types: HashSet, - selections: HashSet, - root_fns: Vec, -} - -/// Collect upfront all the items we need to render -fn get_manifest(tg: &Typegraph) -> Result { - let mut root_fns = vec![]; - let mut selections = HashSet::new(); - let mut data_types = HashSet::new(); - // let mut arg_types = HashSet::new(); - - let (_root_base, root) = tg.root().map_err(anyhow_to_eyre!())?; - for (key, &func_id) in &root.properties { - let TypeNode::Function { data, .. } = &tg.types[func_id as usize] else { - bail!( - "invalid typegraph: node of type {} instead of a root function", - tg.types[func_id as usize].type_name() - ); - }; - let mat = &tg.materializers[data.materializer as usize]; - - fn is_composite(types: &[TypeNode], id: u32) -> bool { - match &types[id as usize] { - TypeNode::Function { .. } => unreachable!(), - TypeNode::Any { .. } => unimplemented!("unexpected Any type as output"), - TypeNode::Boolean { .. } - | TypeNode::Float { .. } - | TypeNode::Integer { .. } - | TypeNode::String { .. } - | TypeNode::File { .. } => false, - TypeNode::Object { .. } => true, - TypeNode::Optional { data, .. } => is_composite(types, data.item), - TypeNode::List { data, .. } => is_composite(types, data.items), - TypeNode::Union { data, .. } => { - data.any_of.iter().any(|&id| is_composite(types, id)) - } - TypeNode::Either { data, .. } => { - data.one_of.iter().any(|&id| is_composite(types, id)) - } - } - } - - data_types.insert(data.output); - - let in_id = if matches!( - &tg.types[data.input as usize], - TypeNode::Object { data, .. } if !data.properties.is_empty() - ) { - data_types.insert(data.input); - // arg_types.insert(data.input); - Some(data.input) - } else { - None - }; - root_fns.push(RootFn { - id: func_id, - name: key.clone(), - effect: mat.effect.effect.unwrap_or(EffectType::Read), - // empty struct arguments don't need arguments - in_id, - out_id: data.output, - // scalar return types don't need selections - select_ty: if is_composite(&tg.types, data.output) { - selections.insert(func_id); - Some(data.output) - } else { - None - }, - }); - } - - for node in &tg.types { - if let TypeNode::Function { data, .. } = node { - if matches!( - &tg.types[data.input as usize], - TypeNode::Object { data, .. } if !data.properties.is_empty() - ) { - data_types.insert(data.input); - } - } - } - - Ok(RenderManifest { - root_fns, - selections, - data_types, - // arg_types, - }) + writeln!(&mut client_ts)?; + Ok(client_ts.buf) } /// Render the common sections like the transports fn render_static(dest: &mut GenDestBuf) -> core::fmt::Result { - let mdk_ts = include_str!("static/mod.ts"); - writeln!(dest, "{}", mdk_ts)?; + let client_ts = include_str!("static/mod.ts"); + writeln!(dest, "{}", client_ts)?; Ok(()) } @@ -367,7 +270,7 @@ fn render_node_metas( name_mapper.nodes.clone(), Rc::new(node_metas::TsNodeMetasRenderer { name_mapper }), ); - for &id in &manifest.selections { + for &id in &manifest.node_metas { _ = renderer.render(id)?; } let (methods, memo) = renderer.finalize(); @@ -379,7 +282,7 @@ const nodeMetas = {{ return {{}}; }}, {methods} -}} +}}; "# )?; Ok(memo) @@ -425,7 +328,7 @@ fn e2e() -> anyhow::Result<()> { build_fn: |args| { Box::pin(async move { let status = tokio::process::Command::new("deno") - .args("check mdk.ts".split(' ').collect::>()) + .args("check client.ts".split(' ').collect::>()) .current_dir(&args.path) .kill_on_drop(true) .spawn()? @@ -435,7 +338,7 @@ fn e2e() -> anyhow::Result<()> { anyhow::bail!("error checking generated crate"); } let status = tokio::process::Command::new("deno") - .args("lint mdk.ts".split(' ').collect::>()) + .args("lint client.ts".split(' ').collect::>()) .current_dir(&args.path) .kill_on_drop(true) .spawn()? @@ -447,7 +350,7 @@ fn e2e() -> anyhow::Result<()> { Ok(()) }) }, - target_dir: "./tests/mat_rust/".into(), + target_dir: Some("./tests/client_ts/".into()), }]) .await })?; diff --git a/libs/metagen/src/client_ts/node_metas.rs b/libs/metagen/src/client_ts/node_metas.rs index d64618f083..780cab457b 100644 --- a/libs/metagen/src/client_ts/node_metas.rs +++ b/libs/metagen/src/client_ts/node_metas.rs @@ -31,7 +31,7 @@ impl TsNodeMetasRenderer { write!( dest, r#" - ["{key}", this.{node_ref}()],"# + ["{key}", nodeMetas.{node_ref}],"# )?; } write!( @@ -54,9 +54,10 @@ impl TsNodeMetasRenderer { write!( dest, r#" + {ty_name}(): NodeMeta {{ return {{ - ...this.{return_node}(),"# + ...nodeMetas.{return_node}(),"# )?; if let Some(fields) = argument_fields { write!( diff --git a/libs/metagen/src/client_ts/selections.rs b/libs/metagen/src/client_ts/selections.rs index a8eb86c2ba..e1c5c48452 100644 --- a/libs/metagen/src/client_ts/selections.rs +++ b/libs/metagen/src/client_ts/selections.rs @@ -5,8 +5,8 @@ use std::fmt::Write; use common::typegraph::*; -use super::utils::normalize_type_title; -use crate::{interlude::*, shared::types::*}; +use super::utils::*; +use crate::{interlude::*, shared::client::*, shared::types::*}; pub struct TsNodeSelectionsRenderer { pub arg_ty_names: Rc, @@ -18,28 +18,28 @@ impl TsNodeSelectionsRenderer { &self, dest: &mut impl Write, ty_name: &str, - props: IndexMap, Option>)>, + props: IndexMap, ) -> std::fmt::Result { writeln!( dest, "export type {ty_name} = {{ _?: SelectionFlags;" )?; - for (name, (select_ty, arg_ty)) in props { - if let Some(arg_ty) = arg_ty { - if &select_ty[..] == "boolean" { - // just providing the argument is enough to signal selection - writeln!(dest, " {name}:?: {arg_ty};")?; - } else { - // we need to allow false to allow explicit disabling - // when the select all flag is set - writeln!(dest, " {name}?: [{arg_ty}, {select_ty}] | false;")?; + for (name, select_ty) in props { + use SelectionTy::*; + match select_ty { + Scalar => writeln!(dest, r#" {name}?: ScalarSelectNoArgs,"#)?, + ScalarArgs { arg_ty } => { + writeln!(dest, r#" {name}?: ScalarSelectArgs<{arg_ty}>,"#)? } - } else if &select_ty[..] == "boolean" { - writeln!(dest, " {name}?: {select_ty};")?; - } else { - writeln!(dest, " {name}?: {select_ty} | false;")?; - } + Composite { select_ty } => { + writeln!(dest, r#" {name}?: CompositeSelectNoArgs<{select_ty}>,"#)? + } + CompositeArgs { arg_ty, select_ty } => writeln!( + dest, + r#" {name}?: CompositeSelectArgs<{arg_ty}, {select_ty}>,"# + )?, + }; } writeln!(dest, "}};")?; Ok(()) @@ -59,7 +59,7 @@ impl RenderType for TsNodeSelectionsRenderer { | TypeNode::Float { .. } | TypeNode::Integer { .. } | TypeNode::String { .. } - | TypeNode::File { .. } => "boolean".to_string(), + | TypeNode::File { .. } => "scalar".to_string(), TypeNode::Any { .. } => unimplemented!("Any type support not implemented"), TypeNode::Optional { data: OptionalTypeData { item, .. }, .. } | TypeNode::List { data: ListTypeData { items: item, .. }, .. } @@ -71,22 +71,12 @@ impl RenderType for TsNodeSelectionsRenderer { .iter() // generate property types first .map(|(name, &dep_id)| { - let (select_ty, arg_ty) = match renderer.nodes[dep_id as usize].deref() { - TypeNode::Union { .. } - | TypeNode::Either { .. } => todo!("unions are wip"), - TypeNode::Function { data, .. } => { - let arg_ty = self.arg_ty_names.get(&data.input).unwrap().clone(); - let (out_ty, _) = renderer.render_subgraph(data.output, cursor)?; - let out_ty = out_ty.unwrap(); - (out_ty, Some(arg_ty)) - }, - _ => { - let (select_t, _) = renderer.render_subgraph(dep_id, cursor)?; - let out_ty = select_t.unwrap(); - (out_ty, None) - } - }; - eyre::Ok((name.clone(), (select_ty,arg_ty))) + eyre::Ok( + ( + normalize_struct_prop_name(name), + selection_for_field(dep_id, &self.arg_ty_names, renderer, cursor)? + ) + ) }) .collect::, _>>()?; let node_name = &base.title; diff --git a/libs/metagen/src/client_ts/static/mod.ts b/libs/metagen/src/client_ts/static/mod.ts index a8c1ec3984..416ba93db9 100644 --- a/libs/metagen/src/client_ts/static/mod.ts +++ b/libs/metagen/src/client_ts/static/mod.ts @@ -1,260 +1,604 @@ +function _selectionToNodeSet( + selection: Selection, + metas: [string, () => NodeMeta][], + parentPath: string, +): SelectNode[] { + const out = [] as SelectNode[]; + const selectAll = selection._ == "selectAll"; + // set of the user specified nodes to do sanity + // check at the end + const foundNodes = new Set(Object.keys(selection)); + + for ( + const [nodeName, metaFn] of metas ?? [] + ) { + foundNodes.delete(nodeName); + + const nodeSelection = selection[nodeName]; + if (!nodeSelection && !selectAll) { + // this node was not selected + continue; + } + + const { argumentTypes, subNodes } = metaFn(); + + const nodeInstances = nodeSelection instanceof Alias + ? nodeSelection.aliases() + : { [nodeName]: nodeSelection }; + + for ( + const [instanceName, instanceSelection] of Object.entries(nodeInstances) + ) { + if (!instanceSelection && !selectAll) { + continue; + } + if (instanceSelection instanceof Alias) { + throw new Error( + `nested Alias discovored at ${parentPath}.${instanceName}`, + ); + } + const node: SelectNode = { instanceName, nodeName }; + + if (argumentTypes) { + // make sure the arg is of the expected form + let arg = instanceSelection; + if (Array.isArray(arg)) { + arg = arg[0]; + } + // TODO: consider bringing in Zod (after hoisting impl into common lib) + if (typeof arg != "object" || arg === null) { + throw new Error( + `node at ${parentPath}.${instanceName} is a node ` + + `that requires arguments object but detected argument ` + + `is typeof ${typeof arg}`, + ); + } + + const expectedArguments = new Map(Object.entries(argumentTypes)); + node.args = {}; + for (const [key, value] of Object.entries(arg)) { + const typeName = expectedArguments.get(key); + // TODO: consider logging a warning if `_` is detected incase user passes + // Selection as arg + if (!typeName) { + throw new Error( + `unexpected argument ${key} at ${parentPath}.${instanceName}`, + ); + } + expectedArguments.delete(key); + node.args[key] = { typeName, value }; + } + } + + if (subNodes) { + // sanity check selection object + let subSelections = instanceSelection; + if (argumentTypes) { + if (!Array.isArray(subSelections)) { + throw new Error( + `node at ${parentPath}.${instanceName} ` + + `is a composite that takes an argument ` + + `but selection is typeof ${typeof subSelections}`, + ); + } + subSelections = subSelections[1]; + } else if (Array.isArray(subSelections)) { + throw new Error( + `node at ${parentPath}.${instanceName} ` + + `is a composite that takes no arguments ` + + `but selection is typeof ${typeof subSelections}`, + ); + } + if (typeof subSelections != "object") { + throw new Error( + `node at ${parentPath}.${nodeName} ` + + `is a no argument composite but first element of ` + + `selection is typeof ${typeof nodeSelection}`, + ); + } + + node.subNodes = _selectionToNodeSet( + // assume it's a Selection. If it's an argument + // object, mismatch between the node desc should hopefully + // catch it + subSelections as Selection, + subNodes, + `${parentPath}.${instanceName}`, + ); + } + + out.push(node); + } + } + foundNodes.delete("_"); + if (foundNodes.size > 0) { + throw new Error( + `unexpected nodes found in selection set at ${parentPath}: ${[ + ...foundNodes, + ]}`, + ); + } + return out; +} + +/* Query node types section */ + +type SelectNode<_Out = unknown> = { + nodeName: string; + instanceName: string; + args?: NodeArgs; + subNodes?: SelectNode[]; +}; + +export class QueryNode { + #inner: SelectNode; + constructor( + inner: SelectNode, + ) { + this.#inner = inner; + } + + inner() { + return this.#inner; + } +} + +export class MutationNode { + #inner: SelectNode; + constructor( + inner: SelectNode, + ) { + this.#inner = inner; + } + + inner() { + return this.#inner; + } +} + +type SelectNodeOut = T extends (QueryNode | MutationNode) + ? O + : never; +type QueryDocOut = T extends + Record | MutationNode> ? { + [K in keyof T]: SelectNodeOut; + } + : never; + +type NodeMeta = { + subNodes?: [string, () => NodeMeta][]; + argumentTypes?: { [name: string]: string }; +}; + +/* Selection types section */ + +type SelectionFlags = "selectAll"; + +type Selection = { + _?: SelectionFlags; + [key: string]: + | SelectionFlags + | ScalarSelectNoArgs + | ScalarSelectArgs> + | CompositeSelectNoArgs + | CompositeSelectArgs, Selection> + | Selection; +}; + +type ScalarSelectNoArgs = + | boolean + | Alias + | null + | undefined; + +type ScalarSelectArgs> = + | ArgT + | PlaceholderArgs + | Alias> + | false + | null + | undefined; + +type CompositeSelectNoArgs = + | SelectionT + | Alias + | false + | null + | undefined; + +type CompositeSelectArgs, SelectionT> = + | [ArgT | PlaceholderArgs, SelectionT] + | Alias<[ArgT | PlaceholderArgs, SelectionT]> + | false + | undefined + | null; + +/** + * Request multiple instances of a single node under different + * aliases. Look at {@link alias} for a functional way of instantiating + * this class. + */ +export class Alias { + #aliases: Record; + constructor( + aliases: Record, + ) { + this.#aliases = aliases; + } + aliases() { + return this.#aliases; + } +} + +/** + * Request multiple instances of a single node under different + * aliases. + */ +export function alias(aliases: Record): Alias { + return new Alias(aliases); +} + +/* Argument types section */ + +type NodeArgValue = { + typeName: string; + value: unknown; +}; + +type NodeArgs = { + [name: string]: NodeArgValue; +}; + +/** + * This object is passed to closures used for preparing requests + * ahead of time for {@link PreparedRequest}s. It allows one to + * get {@link PlaceholderValue}s that can be used in place of node + * arguments. At request time, the {@link PreparedRequest} then + * takes an object that adheres to `T` that can then be used + * to replace the placeholders. + */ +export class PreparedArgs> { + get(key: OnlyStringKeys): PlaceholderValue { + return new PlaceholderValue(key); + } +} + +/** + * Placeholder values for use by {@link PreparedRequest} + */ +export class PlaceholderValue<_T> { + #key: string; + constructor(key: string) { + this.#key = key; + } + + key() { + return this.#key; + } +} + +export type PlaceholderArgs> = { + [K in keyof T]: PlaceholderValue; +}; + +/* GraphQL section */ + +/** + * Options to be used for requests performed by {@link GraphQLTransport}. + */ export type GraphQlTransportOptions = Omit & { + /** + * {@link fetch} implementaiton to use. Defaults to the one found in the environment + */ fetch?: typeof fetch; }; -const variablePath = Symbol("variablePath"); -const pathSeparator = "%.%"; +function convertQueryNodeGql( + node: SelectNode, + variables: Map, +) { + let out = node.nodeName == node.instanceName + ? node.nodeName + : `${node.instanceName}: ${node.nodeName}`; + + const args = node.args; + if (args) { + out = `${out} (${ + Object.entries(args) + .map(([key, val]) => { + const name = `in${variables.size}`; + variables.set(name, val); + return `${key}: $${name}`; + }) + .join(", ") + })`; + } + + const subNodes = node.subNodes; + if (subNodes) { + out = `${out} { ${ + subNodes.map((node) => convertQueryNodeGql(node, variables)).join(" ") + } }`; + } + return out; +} + +function buildGql( + typeToGqlTypeMap: Record, + query: Record, + ty: "query" | "mutation", + name: string = "", +) { + const variables = new Map(); + + const rootNodes = Object + .entries(query) + .map(([key, node]) => { + const fixedNode = { ...node, instanceName: key }; + return convertQueryNodeGql(fixedNode, variables); + }) + .join("\n "); + + let argsRow = [...variables.entries()] + .map(([key, val]) => `$${key}: ${typeToGqlTypeMap[val.typeName]}`) + .join(", "); + if (argsRow.length > 0) { + // graphql doesn't like empty parentheses so we only + // add them if there are args + argsRow = `(${argsRow})`; + } + + const doc = `${ty} ${name}${argsRow} { + ${rootNodes} +}`; + return { + doc, + variables: Object.fromEntries( + [...variables.entries()] + .map(([key, val]) => [key, val.value]), + ), + }; +} + +async function fetchGql( + addr: URL, + doc: string, + variables: Record, + options: GraphQlTransportOptions, +) { + // console.log(doc, variables); + const fetchImpl = options.fetch ?? fetch; + const res = await fetchImpl(addr, { + ...options, + method: "POST", + headers: { + accept: "application/json", + "content-type": "application/json", + ...options.headers ?? {}, + }, + body: JSON.stringify({ + query: doc, + variables, + }), + }); + if (!res.ok) { + const body = await res.text().catch((err) => `error reading body: ${err}`); + throw new (Error as ErrorPolyfill)( + `graphql request to ${addr} failed with status ${res.status}: ${body}`, + { + cause: { + response: res, + body, + }, + }, + ); + } + if (res.headers.get("content-type") != "application/json") { + throw new (Error as ErrorPolyfill)( + "unexpected content type in response", + { + cause: { + response: res, + body: await res.text().catch((err) => `error reading body: ${err}`), + }, + }, + ); + } + return await res.json() as { data: unknown; errors?: object[] }; +} -class GraphQLTransportCore { +/** + * Access the typegraph over it's exposed GraphQL API. + */ +export class GraphQLTransport { constructor( public address: URL, public options: GraphQlTransportOptions, private typeToGqlTypeMap: Record, - ) {} - - buildGql( - query: Record, - ty: "query" | "mutation", - name: string = "", ) { - const variables = new Map(); - const rootNodes = Object - .entries(query) - .map(([key, node]) => `${key}: ${convertQueryNodeGql(node, variables)}`) - .join("\n "); - const argsRow = [...variables.entries()] - .map(([key, val]) => `$${key}: ${this.typeToGqlTypeMap[val.typeName]}`) - .join(", "); - const doc = `${ty} ${name}(${argsRow}) { - ${rootNodes} -}`; - return { - doc, - variables: Object.fromEntries( - [...variables.entries()] - .map(([key, val]) => [key, val.value]), - ), - }; } - async fetch( + async #request( doc: string, variables: Record, options?: GraphQlTransportOptions, ) { - // console.log({ doc, variables }); - const fetchImpl = options?.fetch ?? this.options.fetch ?? fetch; - const res = await fetchImpl(this.address, { + const res = await fetchGql(this.address, doc, variables, { ...this.options, ...options, - method: "POST", - headers: { - accept: "application/json", - "content-type": "application/json", - ...this.options.headers ?? {}, - ...options?.headers ?? {}, - }, - body: JSON.stringify({ - query: doc, - variables, - }), }); - if (!res.ok) { - const body = await res.text().catch((err) => - `error reading body: ${err}` - ); - throw new Error( - `graphql request to ${this.address} failed: ${body}`, - { - cause: { - response: res, - body, - }, - }, - ); - } - if (res.headers.get("content-type") != "application/json") { - throw new Error( - "unexpected content type in response", - { - cause: { - response: res, - body: await res.text().catch((err) => `error reading body: ${err}`), - }, - }, - ); + if ("errors" in res) { + throw new (Error as ErrorPolyfill)("graphql errors on response", { + cause: res.errors, + }); } - return await res.json() as { data: unknown; errors?: object[] }; + return res.data; } -} -export class GraphQLTransport { - #core: GraphQLTransportCore; - constructor( - address: URL, - options: GraphQlTransportOptions, - typeToGqlTypeMap: Record, - ) { - this.#core = new GraphQLTransportCore(address, options, typeToGqlTypeMap); - } + /** + * Make a query request to the typegraph. + */ async query>>( query: Doc, - options?: GraphQlTransportOptions, + { options, name = "" }: { + options?: GraphQlTransportOptions; + name?: string; + } = {}, ): Promise> { - const { variables, doc } = this.#core.buildGql( + const { variables, doc } = buildGql( + this.typeToGqlTypeMap, Object.fromEntries( Object.entries(query).map(( [key, val], - ) => [key, (val as QueryNode).inner]), + ) => [key, (val as QueryNode).inner()]), ), "query", + name, ); - const res = await this.#core.fetch(doc, variables, options); - if ("errors" in res) { - throw new Error("graphql errors on response", { - cause: res.errors, - }); - } - return res.data as QueryDocOut; + return await this.#request(doc, variables, options) as QueryDocOut; } - async mutation>>( + /** + * Make a mutation request to the typegraph. + */ + async mutation>>( query: Doc, - options?: GraphQlTransportOptions, + { options, name = "" }: { + options?: GraphQlTransportOptions; + name?: string; + } = {}, ): Promise> { - const { variables, doc } = this.#core.buildGql( + const { variables, doc } = buildGql( + this.typeToGqlTypeMap, Object.fromEntries( Object.entries(query).map(( [key, val], - ) => [key, (val as MutationNode).inner]), + ) => [key, (val as MutationNode).inner()]), ), - "query", + "mutation", + name, ); - const res = await this.#core.fetch(doc, variables, options); - if ("errors" in res) { - throw new Error("graphql errors on response", { - cause: res.errors, - }); - } - return res.data as QueryDocOut; + return await this.#request(doc, variables, options) as QueryDocOut; } + /** + * Prepare an ahead of time query {@link PreparedRequest}. + */ prepareQuery< T extends JsonObject, Doc extends Record>, >( - fun: (args: T) => Doc, + fun: (args: PreparedArgs) => Doc, + { name = "" }: { name?: string } = {}, ): PreparedRequest { - return new PreparedRequest(this.#core, fun, "query"); + return new PreparedRequest( + this.address, + this.options, + this.typeToGqlTypeMap, + fun, + "query", + name, + ); } + /** + * Prepare an ahead of time mutation {@link PreparedRequest}. + */ prepareMutation< T extends JsonObject, Q extends Record>, >( - fun: (args: T) => Q, + fun: (args: PreparedArgs) => Q, + { name = "" }: { name?: string } = {}, ): PreparedRequest { - return new PreparedRequest(this.#core, fun, "mutation"); + return new PreparedRequest( + this.address, + this.options, + this.typeToGqlTypeMap, + fun, + "mutation", + name, + ); } } -class PreparedRequest< +/** + * Prepares the GraphQL string ahead of time and allows re-use + * avoid the compute and garbage overhead of re-building it for + * repeat queries. + */ +export class PreparedRequest< T extends JsonObject, Doc extends Record | MutationNode>, > { - #doc: string; + public doc: string; #mappings: Record; constructor( - private core: GraphQLTransportCore, - fun: (args: T) => Doc, + private address: URL, + private options: GraphQlTransportOptions, + typeToGqlTypeMap: Record, + fun: (args: PreparedArgs) => Doc, ty: "query" | "mutation", name: string = "", ) { - const rootId = "$root"; - const dryRunNode = fun(this.#getProxy(rootId) as unknown as T); - const { doc, variables } = core.buildGql( + const args = new PreparedArgs(); + const dryRunNode = fun(args); + const { doc, variables } = buildGql( + typeToGqlTypeMap, Object.fromEntries( Object.entries(dryRunNode).map(( [key, val], - ) => [key, (val as MutationNode).inner]), + ) => [key, (val as MutationNode).inner()]), ), ty, name, ); - this.#doc = doc; + this.doc = doc; this.#mappings = variables; } - resolveVariable( + resolveVariables( args: T, - cur: Json, - path: string[], - idx = 0, - ): unknown { - if (idx == path.length - 1) { - return cur; - } - if (typeof cur != "object" || cur == null) { - const curPath = path.slice(0, idx); - throw new Error( - `unexpected prepard request arguments shape: item at ${curPath} is not object when trying to access ${path}`, - { - cause: { - args, - curPath, - curObj: cur, - mappings: this.#mappings, - }, - }, - ); + mappings: Record, + ) { + const resolvedVariables = {} as Record; + for (const [key, val] of Object.entries(mappings)) { + if (val instanceof PlaceholderValue) { + resolvedVariables[key] = args[val.key()]; + } else if (typeof val == "object" && val != null) { + this.resolveVariables(args, val as JsonObject); + } else { + resolvedVariables[key] = val; + } } - const childIdx = idx + 1; - return this.resolveVariable( - args, - (cur as JsonObject)[path[childIdx]], - path, - childIdx, - ); + return resolvedVariables; } - #getProxy(path: string): { [variablePath]: string } { - return new Proxy( - { [variablePath]: path }, - { - get: (target, prop, _reciever) => { - if (prop === variablePath) { - return path; - } - return this.#getProxy( - `${target[variablePath]}${pathSeparator}${String(prop)}`, - ); - }, - }, - ); - } - - async do(args: T, opts?: GraphQlTransportOptions): Promise< + /** + * Execute the prepared request. + */ + async perform(args: T, opts?: GraphQlTransportOptions): Promise< { [K in keyof Doc]: SelectNodeOut; } > { - const resolvedVariables = {} as Record; - for (const [key, val] of Object.entries(this.#mappings)) { - if (typeof val !== "object" || val == null || !(variablePath in val)) { - throw new Error("impossible"); - } - const path = (val[variablePath] as string).split(pathSeparator); - resolvedVariables[key] = this.resolveVariable(args, args, path); - } - // console.log({ + const resolvedVariables = this.resolveVariables(args, this.#mappings); + // console.log(this.doc, { // resolvedVariables, - // doc: this.#doc, // mapping: this.#mappings, // }); - const res = await this.core.fetch(this.#doc, resolvedVariables, opts); + const res = await fetchGql( + this.address, + this.doc, + resolvedVariables, + { + ...this.options, + ...opts, + }, + ); if ("errors" in res) { - throw new Error("graphql errors on response", { + throw new (Error as ErrorPolyfill)("graphql errors on response", { cause: res.errors, }); } @@ -262,199 +606,27 @@ class PreparedRequest< } } -type NodeArgValue = { - typeName: string; - value: unknown; -}; - -type NodeArgs = { - [name: string]: NodeArgValue; -}; - -type SelectionFlags = "selectAll"; - -type Selection = { - _?: SelectionFlags; - [key: string]: - | undefined - | boolean - | Selection - | SelectionFlags - | [Record, Selection | undefined]; -}; +/* Util types section */ -type NodeMeta = { - subNodes?: [string, NodeMeta][]; - argumentTypes?: { [name: string]: string }; -}; +type OnlyStringKeys> = { + [K in keyof T]: K extends string ? K : never; +}[keyof T]; -export type JsonLiteral = string | number | boolean | null; -export type JsonObject = { [key: string]: Json }; -export type JsonArray = Json[]; -export type Json = JsonLiteral | JsonObject | JsonArray; +type JsonLiteral = string | number | boolean | null; +type JsonObject = { [key: string]: Json }; +type JsonArray = Json[]; +type Json = JsonLiteral | JsonObject | JsonArray; -export type DeArrayify = T extends Array ? Inner : T; +type ErrorPolyfill = new (msg: string, payload: unknown) => Error; -type SelectNode = { - _phantom?: Out; - name: string; - args?: NodeArgs; - subNodes?: SelectNode[]; -}; - -export class QueryNode { - constructor( - public inner: SelectNode, - ) {} -} - -export class MutationNode { - constructor( - public inner: SelectNode, - ) {} -} - -type SelectNodeOut = T extends (QueryNode | MutationNode) - ? O - : never; -type QueryDocOut = T extends - Record | MutationNode> ? { - [K in keyof T]: SelectNodeOut; - } - : never; - -function selectionToNodeSet( - selection: Selection, - metas: [string, NodeMeta][], - parentPath: string, -): SelectNode[] { - const out = [] as SelectNode[]; - const selectAll = selection._ == "selectAll"; - // set of the user specified nodes to do sanity - // check at the end - const foundNodes = new Set(Object.keys(selection)); - - for ( - const [nodeName, { subNodes, argumentTypes }] of metas ?? [] - ) { - foundNodes.delete(nodeName); - - const nodeSelection = selection[nodeName]; - if (!nodeSelection && !selectAll) { - // this node was not selected - continue; - } - - const node: SelectNode = { name: nodeName }; - - if (argumentTypes) { - if (!Array.isArray(nodeSelection)) { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `requires arguments but selection ` + - `is typeof ${typeof nodeSelection}`, - ); - } - const [arg] = nodeSelection; - // TODO: consider bringing in Zod (after hoisting impl into common lib) - if (typeof arg != "object") { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `requires argument object but first element of ` + - `selection is typeof ${typeof arg}`, - ); - } - const expectedArguments = new Map(Object.entries(argumentTypes)); - // TODO: consider logging a warning if `_` is detected incase user passes - // Selection as arg - node.args = Object.fromEntries( - Object.entries(arg).map(([key, value]) => { - const typeName = expectedArguments.get(key); - if (!typeName) { - throw new Error( - `unexpected argument ${key} at ${parentPath}.${nodeName}`, - ); - } - expectedArguments.delete(key); - return [key, { typeName, value }]; - }), - ); - // TODO: consider detecting required arguments here - } - - if (subNodes) { - let subSelections = nodeSelection; - if (argumentTypes) { - if (!Array.isArray(subSelections)) { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `is a composite that takes an argument but selection is typeof ${typeof nodeSelection}`, - ); - } - subSelections = subSelections[1]; - } else if (Array.isArray(subSelections)) { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `is a composite that takes no arguments but selection is typeof ${typeof nodeSelection}`, - ); - } - if (typeof subSelections != "object") { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `is a no argument composite but first element of ` + - `selection is typeof ${typeof nodeSelection}`, - ); - } - node.subNodes = selectionToNodeSet( - subSelections, - subNodes, - `${parentPath}.${nodeName}`, - ); - } - - out.push(node); - } - foundNodes.delete("_"); - if (foundNodes.size > 0) { - throw new Error( - `unexpected nodes found in selection set at ${parentPath}: ${[ - ...foundNodes, - ]}`, - ); - } - return out; -} - -function convertQueryNodeGql( - node: SelectNode, - variables: Map, -) { - let out = node.name; - - const args = node.args; - if (args) { - out = `${out} (${ - Object.entries(args) - .map(([key, val]) => { - const name = `in${variables.size}`; - variables.set(name, val); - return `${key}: $${name}`; - }) - })`; - } - - const subNodes = node.subNodes; - if (subNodes) { - out = `${out} { ${ - subNodes.map((node) => convertQueryNodeGql(node, variables)).join(" ") - } }`; - } - return out; -} +/* QueryGraph section */ -class QueryGraphBase { +class _QueryGraphBase { constructor(private typeNameMapGql: Record) {} + /** + * Get the {@link GraphQLTransport} for the typegraph. + */ graphql(addr: URL | string, options?: GraphQlTransportOptions) { return new GraphQLTransport( new URL(addr), diff --git a/libs/metagen/src/lib.rs b/libs/metagen/src/lib.rs index 3b76377b7c..882cf3cbd4 100644 --- a/libs/metagen/src/lib.rs +++ b/libs/metagen/src/lib.rs @@ -6,7 +6,7 @@ mod interlude { pub use common::typegraph::TypeNode; pub use common::typegraph::Typegraph; - pub use std::collections::{HashMap, HashSet}; + pub use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; pub use std::ops::Deref; pub use std::path::{Path, PathBuf}; pub use std::rc::Rc; @@ -34,6 +34,7 @@ mod mdk_python; mod mdk_rust; mod mdk_typescript; +mod client_py; mod client_ts; #[cfg(test)] @@ -160,6 +161,16 @@ impl GeneratorRunner { }, }, ), + ( + "client_py".to_string(), + GeneratorRunner { + op: |workspace_path: &Path, val| { + let config = client_py::ClienPyGenConfig::from_json(val, workspace_path)?; + let generator = client_py::Generator::new(config)?; + Ok(Box::new(generator)) + }, + }, + ), ]); } diff --git a/libs/metagen/src/mdk_python/mod.rs b/libs/metagen/src/mdk_python/mod.rs index 6a2520c9cc..001793c04d 100644 --- a/libs/metagen/src/mdk_python/mod.rs +++ b/libs/metagen/src/mdk_python/mod.rs @@ -5,6 +5,7 @@ use garde::external::compact_str::CompactStringExt; use heck::ToPascalCase; +use indexmap::IndexSet; use crate::interlude::*; use crate::shared::*; @@ -211,7 +212,7 @@ fn render_main( required: &MergedRequiredObjects, file_stem: &str, ) -> anyhow::Result { - let mut exports = HashSet::new(); + let mut exports = std::collections::BTreeSet::new(); for func in required.funcs.iter() { exports.insert(format!("typed_{}", func.name)); exports.insert(func.input_name.clone()); @@ -321,8 +322,8 @@ fn merge_requirements( memo: Memo::new(), top_level_types: vec![], }; - let mut types = HashSet::new(); - let mut funcs = HashSet::new(); + let mut types = IndexSet::new(); + let mut funcs = IndexSet::new(); for req in requirements { // merge classes diff --git a/libs/metagen/src/mdk_python/static/types.py.jinja b/libs/metagen/src/mdk_python/static/types.py.jinja index b79aafca65..8a0fe582c5 100644 --- a/libs/metagen/src/mdk_python/static/types.py.jinja +++ b/libs/metagen/src/mdk_python/static/types.py.jinja @@ -4,7 +4,7 @@ from dataclasses import dataclass, asdict, fields FORWARD_REFS = {} -class Struct(): +class Struct: def repr(self): return asdict(self) @@ -76,21 +76,22 @@ class Struct(): except Exception: return val + {% for class in classes -%} {{ class.def }} - FORWARD_REFS["{{ class.hint }}"] = {{ class.hint }} -{% endfor -%} + +{% endfor -%} {% for def in types -%} {{ def }} {% endfor %} - def __repr(value: Any): if isinstance(value, Struct): return value.repr() return value + {%for func in funcs %} def typed_{{ func.name }}(user_fn: Callable[[{{ func.input_name }}], {{ func.output_name }}]): def exported_wrapper(raw_inp): @@ -99,6 +100,7 @@ def typed_{{ func.name }}(user_fn: Callable[[{{ func.input_name }}], {{ func.out if isinstance(out, list): return [__repr(v) for v in out] return __repr(out) + return exported_wrapper {% endfor %} diff --git a/libs/metagen/src/mdk_python/types.rs b/libs/metagen/src/mdk_python/types.rs index 521bfb87e1..96631a1240 100644 --- a/libs/metagen/src/mdk_python/types.rs +++ b/libs/metagen/src/mdk_python/types.rs @@ -98,7 +98,7 @@ fn visit_union_or_either( tg: &Typegraph, ) -> anyhow::Result { let mut visit_variants = |variants: &[u32]| -> anyhow::Result { - let mut variants_repr = HashSet::new(); + let mut variants_repr = std::collections::BTreeSet::new(); for idx in variants.iter() { let field_tpe = &tg.types[*idx as usize]; let type_repr = visit_type(tera, memo, field_tpe, tg)?.hint; diff --git a/libs/metagen/src/mdk_rust/mod.rs b/libs/metagen/src/mdk_rust/mod.rs index 53f1e0777a..8560ec0823 100644 --- a/libs/metagen/src/mdk_rust/mod.rs +++ b/libs/metagen/src/mdk_rust/mod.rs @@ -190,7 +190,7 @@ fn gen_mod_rs(config: &MdkRustGenConfig, tg: &Typegraph) -> anyhow::Result anyhow::Result<()> { Ok(()) }) }, - target_dir: "./tests/mat_rust/".into(), + target_dir: Some("./tests/mat_rust/".into()), }]) .await })?; diff --git a/libs/metagen/src/mdk_rust/stubs.rs b/libs/metagen/src/mdk_rust/stubs.rs index c2fff44457..4facdcede1 100644 --- a/libs/metagen/src/mdk_rust/stubs.rs +++ b/libs/metagen/src/mdk_rust/stubs.rs @@ -12,7 +12,7 @@ pub struct GenStubOptions {} pub fn gen_stub( fun: &StubbedFunction, mod_stub_traits: &mut GenDestBuf, - type_names: &HashMap>, + type_names: &BTreeMap>, _opts: &GenStubOptions, ) -> anyhow::Result { let TypeNode::Function { base, data } = &fun.node else { @@ -55,7 +55,7 @@ pub fn gen_stub( } pub fn gen_op_to_mat_map( - op_to_trait_map: &HashMap, + op_to_trait_map: &BTreeMap, dest: &mut GenDestBuf, _opts: &GenStubOptions, ) -> anyhow::Result<()> { diff --git a/libs/metagen/src/mdk_typescript/mod.rs b/libs/metagen/src/mdk_typescript/mod.rs index 74dd838db6..7ec2af6879 100644 --- a/libs/metagen/src/mdk_typescript/mod.rs +++ b/libs/metagen/src/mdk_typescript/mod.rs @@ -225,7 +225,7 @@ fn e2e() -> anyhow::Result<()> { Ok(()) }) }, - target_dir: "./tests/mat_rust/".into(), + target_dir: Some("./tests/mat_rust/".into()), }]) .await })?; diff --git a/libs/metagen/src/mdk_typescript/types.rs b/libs/metagen/src/mdk_typescript/types.rs index 631ff0f100..d751438eac 100644 --- a/libs/metagen/src/mdk_typescript/types.rs +++ b/libs/metagen/src/mdk_typescript/types.rs @@ -24,11 +24,15 @@ impl TypescriptTypeRenderer { &self, dest: &mut impl Write, ty_name: &str, - props: IndexMap>, + props: IndexMap, bool)>, ) -> std::fmt::Result { writeln!(dest, "export type {ty_name} = {{")?; - for (name, ty_name) in props.into_iter() { - writeln!(dest, " {name}: {ty_name};")?; + for (name, (ty_name, optional)) in props.into_iter() { + if optional { + writeln!(dest, " {name}?: {ty_name};")?; + } else { + writeln!(dest, " {name}: {ty_name};")?; + } } writeln!(dest, "}};")?; Ok(()) @@ -138,11 +142,23 @@ impl RenderType for TypescriptTypeRenderer { RenderedName::Name(name) => name, RenderedName::Placeholder(name) => name, }; - Ok::<_, anyhow::Error>((normalize_struct_prop_name(&name[..]), ty_name)) + let optional = matches!( + renderer.nodes[dep_id as usize].deref(), + TypeNode::Optional { .. } + ); + Ok::<_, anyhow::Error>(( + normalize_struct_prop_name(&name[..]), + (ty_name, optional), + )) }) .collect::, _>>()?; + let ty_name = normalize_type_title(&base.title); - self.render_object_type(renderer, &ty_name, props)?; + if !props.is_empty() { + self.render_object_type(renderer, &ty_name, props)?; + } else { + self.render_alias(renderer, &ty_name, "Record")?; + } ty_name } TypeNode::Either { diff --git a/libs/metagen/src/shared/client.rs b/libs/metagen/src/shared/client.rs new file mode 100644 index 0000000000..8a3a3473bc --- /dev/null +++ b/libs/metagen/src/shared/client.rs @@ -0,0 +1,152 @@ +// Copyright Metatype OÃœ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use crate::interlude::*; + +use super::types::*; +use common::typegraph::{EffectType, ListTypeData, OptionalTypeData}; + +pub struct RenderManifest { + pub data_types: HashSet, + // arg_types: HashSet, + pub node_metas: HashSet, + pub selections: HashSet, + pub root_fns: Vec, +} + +pub struct RootFn { + pub id: u32, + pub name: String, + pub in_id: Option, + pub out_id: u32, + pub effect: EffectType, + pub select_ty: Option, +} + +/// Collect upfront all the items we need to render +pub fn get_manifest(tg: &Typegraph) -> Result { + let mut root_fns = vec![]; + let mut selections = HashSet::new(); + let mut data_types = HashSet::new(); + let mut node_metas = HashSet::new(); + // let mut arg_types = HashSet::new(); + + let (_root_base, root) = tg.root().map_err(anyhow_to_eyre!())?; + for (key, &func_id) in &root.properties { + let TypeNode::Function { data, .. } = &tg.types[func_id as usize] else { + bail!( + "invalid typegraph: node of type {} instead of a root function", + tg.types[func_id as usize].type_name() + ); + }; + let mat = &tg.materializers[data.materializer as usize]; + + node_metas.insert(func_id); + data_types.insert(data.output); + root_fns.push(RootFn { + id: func_id, + name: key.clone(), + effect: mat.effect.effect.unwrap_or(EffectType::Read), + out_id: data.output, + // empty struct arguments don't need arguments + in_id: if matches!( + &tg.types[data.input as usize], + TypeNode::Object { data, .. } if !data.properties.is_empty() + ) { + data_types.insert(data.input); + // arg_types.insert(data.input); + Some(data.input) + } else { + None + }, + // scalar return types don't need selections + select_ty: if super::is_composite(&tg.types, data.output) { + node_metas.insert(func_id); + selections.insert(func_id); + Some(data.output) + } else { + None + }, + }); + } + + for node in &tg.types { + if let TypeNode::Function { data, .. } = node { + if matches!( + &tg.types[data.input as usize], + TypeNode::Object { data, .. } if !data.properties.is_empty() + ) { + data_types.insert(data.input); + } + } + } + + Ok(RenderManifest { + root_fns, + selections, + data_types, + node_metas, + // arg_types, + }) +} + +pub enum SelectionTy { + Scalar, + ScalarArgs { arg_ty: Rc }, + CompositeArgs { arg_ty: Rc, select_ty: Rc }, + Composite { select_ty: Rc }, +} + +pub fn selection_for_field( + ty: u32, + arg_ty_names: &NameMemo, + renderer: &mut TypeRenderer, + cursor: &mut VisitCursor, +) -> Result { + Ok(match renderer.nodes[ty as usize].deref() { + TypeNode::Boolean { .. } + | TypeNode::Float { .. } + | TypeNode::Integer { .. } + | TypeNode::String { .. } + | TypeNode::File { .. } => SelectionTy::Scalar, + TypeNode::Function { data, .. } => { + let arg_ty = if !matches!( + renderer.nodes[data.input as usize].deref(), + TypeNode::Object { data, .. } if data.properties.is_empty() + ) { + Some(arg_ty_names.get(&data.input).unwrap().clone()) + } else { + None + }; + match ( + arg_ty, + selection_for_field(data.output, arg_ty_names, renderer, cursor)?, + ) { + (None, SelectionTy::Scalar) => SelectionTy::Scalar, + (Some(arg_ty), SelectionTy::Scalar) => SelectionTy::ScalarArgs { arg_ty }, + (None, SelectionTy::Composite { select_ty }) => { + SelectionTy::Composite { select_ty } + } + (Some(arg_ty), SelectionTy::Composite { select_ty }) => { + SelectionTy::CompositeArgs { select_ty, arg_ty } + } + (_, SelectionTy::CompositeArgs { .. }) | (_, SelectionTy::ScalarArgs { .. }) => { + unreachable!("function can not return a function") + } + } + } + TypeNode::Optional { + data: OptionalTypeData { item, .. }, + .. + } + | TypeNode::List { + data: ListTypeData { items: item, .. }, + .. + } => selection_for_field(*item, arg_ty_names, renderer, cursor)?, + TypeNode::Object { .. } => SelectionTy::Composite { + select_ty: renderer.render_subgraph(ty, cursor)?.0.unwrap(), + }, + TypeNode::Union { .. } | TypeNode::Either { .. } => todo!("unions are wip"), + TypeNode::Any { .. } => unimplemented!("Any type support not implemented"), + }) +} diff --git a/libs/metagen/src/shared/mod.rs b/libs/metagen/src/shared/mod.rs index 54d05d0f7a..cde8a9375b 100644 --- a/libs/metagen/src/shared/mod.rs +++ b/libs/metagen/src/shared/mod.rs @@ -4,6 +4,7 @@ //! This module contains common logic for mdk generation //! imlementations +pub mod client; pub mod types; use common::typegraph::{runtimes::TGRuntime, Materializer}; @@ -11,9 +12,11 @@ use common::typegraph::{runtimes::TGRuntime, Materializer}; use crate::interlude::*; pub struct StubbedFunction { + #[allow(unused)] pub id: u32, pub node: TypeNode, pub mat: Materializer, + #[allow(unused)] pub runtime: Rc, } @@ -60,3 +63,20 @@ pub fn filter_stubbed_funcs( .collect(); Ok(stubbed_funcs) } + +pub fn is_composite(types: &[TypeNode], id: u32) -> bool { + match &types[id as usize] { + TypeNode::Function { .. } => unreachable!(), + TypeNode::Any { .. } => unimplemented!("unexpected Any type as output"), + TypeNode::Boolean { .. } + | TypeNode::Float { .. } + | TypeNode::Integer { .. } + | TypeNode::String { .. } + | TypeNode::File { .. } => false, + TypeNode::Object { .. } => true, + TypeNode::Optional { data, .. } => is_composite(types, data.item), + TypeNode::List { data, .. } => is_composite(types, data.items), + TypeNode::Union { data, .. } => data.any_of.iter().any(|&id| is_composite(types, id)), + TypeNode::Either { data, .. } => data.one_of.iter().any(|&id| is_composite(types, id)), + } +} diff --git a/libs/metagen/src/shared/types.rs b/libs/metagen/src/shared/types.rs index cb6e153734..2eabbd77dc 100644 --- a/libs/metagen/src/shared/types.rs +++ b/libs/metagen/src/shared/types.rs @@ -87,7 +87,7 @@ pub trait RenderType { } } -pub type NameMemo = HashMap>; +pub type NameMemo = std::collections::BTreeMap>; /// type_id, old_str, (final_ty_name) -> new_str type ReplacementRecords = Vec<(u32, Rc, Box String>)>; diff --git a/libs/metagen/src/tests/mod.rs b/libs/metagen/src/tests/mod.rs index f86667e56c..ff8a23c99b 100644 --- a/libs/metagen/src/tests/mod.rs +++ b/libs/metagen/src/tests/mod.rs @@ -33,7 +33,7 @@ type BoxFuture = std::pin::Pin + Send pub struct E2eTestCase { pub target: String, pub config: config::Config, - pub target_dir: PathBuf, + pub target_dir: Option, pub typegraphs: HashMap>, pub build_fn: fn(BuildArgs) -> BoxFuture>, } @@ -44,11 +44,11 @@ pub async fn e2e_test(cases: Vec) -> anyhow::Result<()> { let tmp_dir = tokio::task::spawn_blocking(tempfile::tempdir) .await?? .into_path(); - { - let mut dir = tokio::fs::read_dir(&case.target_dir).await?; + if let Some(target_dir) = &case.target_dir { + let mut dir = tokio::fs::read_dir(target_dir).await?; while let Some(entry) = dir.next_entry().await? { let entry_path = entry.path(); - let target_path = tmp_dir.join(entry.path().strip_prefix(&case.target_dir)?); + let target_path = tmp_dir.join(entry.path().strip_prefix(target_dir)?); tokio::fs::copy(entry_path, &target_path) .await .context("error copying target_dir to temp dir")?; @@ -80,7 +80,7 @@ pub async fn e2e_test(cases: Vec) -> anyhow::Result<()> { // TODO: query generated stub functions // cleanup - // tokio::fs::remove_dir_all(tmp_dir).await?; + tokio::fs::remove_dir_all(tmp_dir).await?; // node.try_undeploy(&typegraphs.keys().cloned().collect::>()).await?; } Ok(()) diff --git a/libs/metagen/tests/client_ts/deno.json b/libs/metagen/tests/client_ts/deno.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/libs/metagen/tests/client_ts/deno.json @@ -0,0 +1 @@ +{} diff --git a/libs/metagen/tests/client_ts/main.ts b/libs/metagen/tests/client_ts/main.ts new file mode 100644 index 0000000000..bfe8b366f9 --- /dev/null +++ b/libs/metagen/tests/client_ts/main.ts @@ -0,0 +1,59 @@ +// Copyright Metatype OÃœ, licensed under the Elastic License 2.0. +// SPDX-License-Identifier: Elastic-2.0 + +import { alias, PreparedArgs, QueryGraph } from "./client.ts"; + +const api1 = new QueryGraph(); + +const gqlClient = api1.graphql( + `http://localhost:${Deno.env.get("TG_PORT")}/sample`, +); + +const prepared = gqlClient.prepareQuery(( + args: PreparedArgs<{ + id: string; + slug: string; + title: string; + }>, +) => ({ + scalarArgs: api1.scalarArgs({ + id: args.get("id"), + slug: args.get("slug"), + title: args.get("title"), + }), + compositeArgs: api1.compositeArgs({ id: args.get("id") }, { _: "selectAll" }), +})); + +const { scalarArgs, compositeArgs } = await prepared.do({ + id: "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + slug: "s", + title: "t", +}); + +const res = await gqlClient.query({ + // syntax very similar to typegraph definition + user: api1.getUser({ + _: "selectAll", + posts: alias({ + post1: { id: true, slug: true, title: true }, + post2: { _: "selectAll", id: false }, + }), + }), + posts: api1.getPosts({ _: "selectAll" }), + + scalarNoArgs: api1.scalarNoArgs(), + scalarArgs: api1.scalarArgs({ + id: "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + slug: "", + title: "", + }), + compositeNoArgs: api1.compositeNoArgs({ + _: "selectAll", + }), + compositeArgs: api1.compositeArgs({ + id: "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + }, { + _: "selectAll", + }), +}); +console.log(JSON.stringify(res)); diff --git a/libs/metagen/tests/mat_rust/Cargo.toml b/libs/metagen/tests/mat_rust/Cargo.toml index 51b62ae116..1bf34c376b 100644 --- a/libs/metagen/tests/mat_rust/Cargo.toml +++ b/libs/metagen/tests/mat_rust/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "mat_rust" edition = "2021" -version = "0.4.4" +version = "0.4.6" [workspace] members = ["gen"] diff --git a/libs/metagen/tests/tg2.ts b/libs/metagen/tests/tg2.ts index 260a31a5e3..c9e733ce85 100644 --- a/libs/metagen/tests/tg2.ts +++ b/libs/metagen/tests/tg2.ts @@ -1,53 +1,48 @@ -import { fx, Policy, t, typegraph } from "@typegraph/sdk/index.ts"; +import { Policy, t, typegraph } from "@typegraph/sdk/index.ts"; import { DenoRuntime } from "@typegraph/sdk/runtimes/deno.ts"; +import { RandomRuntime } from "@typegraph/sdk/runtimes/random.ts"; const genUser = () => ({ id: "69099108-e48b-43c9-ad02-c6514eaad6e3", email: "yuse@mail.box", }); -const genPosts = () => [ +const _genPosts = () => [ { slug: "hair", title: "I dyed my hair!" }, { slug: "hello", title: "Hello World!" }, ]; -await typegraph({ +export const tg = await typegraph({ name: "sample", builder(g) { + const random = new RandomRuntime({ seed: 0 }); const deno = new DenoRuntime(); + const post = t.struct({ + id: t.uuid({ asId: true, config: { auto: true } }), slug: t.string(), title: t.string(), - }, { name: "Post" }); - - const getPosts = deno.func( - t.struct({ filter: t.string().optional() }).rename("GetPostsInput"), - t.list(post), - { - code: genPosts, - effect: fx.read(), - }, - ).withPolicy(Policy.public()); + }, { name: "post" }); const user = t.struct({ - id: t.uuid(), + id: t.uuid({ asId: true, config: { auto: true } }), email: t.email(), - posts: getPosts, - }, { name: "User" }); + posts: t.list(g.ref("post")), + }, { name: "user" }); g.expose( { - getUser: deno.func( - t.struct({ id: t.string() }).rename("GetUserInput"), - user, - { - code: genUser, - effect: fx.read(), - }, - ), - getPosts, + getUser: random.gen(user), + getPosts: random.gen(post), - noArgs: deno.func(t.struct({}), user, { code: genUser }), + scalarNoArgs: random.gen(t.string()), + scalarArgs: deno.func(post, t.string(), { code: () => "hello" }), + compositeNoArgs: deno.func(t.struct({}), post, { code: genUser }), + compositeArgs: deno.func( + t.struct({ id: t.string() }), + post, + { code: genUser }, + ), }, Policy.public(), ); diff --git a/libs/pyrt_wit_wire/pyproject.toml b/libs/pyrt_wit_wire/pyproject.toml index 4b7d018906..0435584e4f 100644 --- a/libs/pyrt_wit_wire/pyproject.toml +++ b/libs/pyrt_wit_wire/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pyrt_wit_wire" -version = "0.4.4" +version = "0.4.6" description = "Wasm component implementing the PythonRuntime host using wit_wire protocol." license = "Elastic-2.0" readme = "README.md" diff --git a/libs/xtask/Cargo.toml b/libs/xtask/Cargo.toml index 750a465c30..67e609185d 100644 --- a/libs/xtask/Cargo.toml +++ b/libs/xtask/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xtask" -version = "0.4.4" +version = "0.4.6" edition = "2021" [dependencies] diff --git a/libs/xtask/src/deno.rs b/libs/xtask/src/deno.rs index db60dc2078..2a3ef7e1f5 100644 --- a/libs/xtask/src/deno.rs +++ b/libs/xtask/src/deno.rs @@ -15,7 +15,6 @@ impl Deno { pub fn run(self) -> Result<()> { match self.command { Commands::Test(cmd) => cmd.run()?, - Commands::Bench(cmd) => cmd.run()?, } Ok(()) } @@ -25,8 +24,6 @@ impl Deno { pub enum Commands { // Run deno tests with the metatype extension support Test(Test), - // Run deno benches with the metatype extension support - Bench(Bench), } #[derive(Parser, Debug)] @@ -48,13 +45,14 @@ pub struct Test { impl Test { fn run(self) -> Result<()> { - let permissions = mt_deno::deno::deno_runtime::permissions::PermissionsOptions { + let permissions = mt_deno::deno::deno_runtime::deno_permissions::PermissionsOptions { allow_run: Some( [ "cargo", "hostname", "meta", "meta-full", + "meta-old", "git", "python3", "rm", @@ -110,86 +108,3 @@ impl Test { Ok(()) } } - -#[derive(Parser, Debug)] -pub struct Bench { - /// Files to bench - files: Option>, - /// Bench files to ignore - #[clap(long)] - ignore: Option>, - /// Path to `deno.json` - #[clap(long)] - config: PathBuf, - #[clap(last = true)] - argv: Vec, -} - -impl Bench { - fn run(self) -> Result<()> { - let permissions = mt_deno::deno::deno_runtime::permissions::PermissionsOptions { - allow_run: Some( - [ - "cargo", - "hostname", - "meta", - "meta-full", - "git", - "python3", - "rm", - "mkdir", - "bash", - "npm", - "pnpm", - "setsid", - "temporal", - "deno", - "poetry", - "xtask", - ] - .into_iter() - .map(str::to_owned) - .collect(), - ), - allow_sys: Some(vec![]), - allow_env: Some(vec![]), - allow_hrtime: true, - allow_write: Some( - ["tmp", "typegate/tests"] - .into_iter() - .map(std::str::FromStr::from_str) - .collect::>()?, - ), - allow_ffi: Some(vec![]), - allow_read: Some(vec![]), - allow_net: Some(vec![]), - ..Default::default() - }; - let inj = typegate_engine::OpDepInjector::from_env(); - use mt_deno::deno::deno_config; - mt_deno::bench_sync( - deno_config::glob::FilePatterns { - base: std::env::current_dir()?, - include: self.files.map(|vec| { - deno_config::glob::PathOrPatternSet::new( - vec.into_iter() - .map(deno_config::glob::PathOrPattern::Path) - .collect(), - ) - }), - exclude: deno_config::glob::PathOrPatternSet::new( - self.ignore - .unwrap_or_default() - .into_iter() - .map(deno_config::glob::PathOrPattern::Path) - .collect(), - ), - }, - self.config, - permissions, - std::sync::Arc::new(move || typegate_engine::extensions(inj.clone())), - self.argv, - ); - Ok(()) - } -} diff --git a/meta-cli/Cargo.toml b/meta-cli/Cargo.toml index aea3f60cd4..49116e2d37 100644 --- a/meta-cli/Cargo.toml +++ b/meta-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "meta-cli" -version = "0.4.4" +version = "0.4.6" edition = "2021" description = "Declarative API development platform. Build backend components with WASM, Typescript and Python, no matter where and how your (legacy) systems are." diff --git a/meta-cli/src/cli/deploy.rs b/meta-cli/src/cli/deploy.rs index 64b2f78ba2..309028d321 100644 --- a/meta-cli/src/cli/deploy.rs +++ b/meta-cli/src/cli/deploy.rs @@ -75,8 +75,8 @@ pub struct DeployOptions { // FIXME incompatible with non-watch mode #[cfg(feature = "typegate")] /// Run a typegate with the current target configuration - #[clap(long)] - pub run_typegate: bool, + #[clap(skip = None)] + pub typegate_options: Option, /// maximum number of concurrent deployment tasks #[clap(long)] @@ -306,14 +306,19 @@ mod watch_mode { ); #[cfg(feature = "typegate")] - let _typegate_addr = if deploy.options.run_typegate { + let _typegate_addr = if let Some(tg_opts) = deploy.options.typegate_options { use crate::deploy::actors::typegate::TypegateInit; info!("starting typegate"); Some( - TypegateInit::new(&deploy.node_config, &deploy.base_dir) - .await? - .start(console.clone()) - .await?, + TypegateInit::new( + &deploy.node_config, + &deploy.base_dir, + tg_opts.main_url, + tg_opts.import_map_url, + ) + .await? + .start(console.clone()) + .await?, ) } else { None diff --git a/meta-cli/src/cli/dev.rs b/meta-cli/src/cli/dev.rs index 6d3a6ca465..4b29248ffa 100644 --- a/meta-cli/src/cli/dev.rs +++ b/meta-cli/src/cli/dev.rs @@ -40,6 +40,10 @@ pub struct Dev { /// initial retry interval #[clap(long)] retry_interval_ms: Option, + + #[cfg(feature = "typegate")] + #[clap(flatten)] + pub typegate_options: super::typegate::Typegate, } #[async_trait] @@ -55,7 +59,11 @@ impl Action for Dev { create_migration: true, secrets: self.secrets.clone(), #[cfg(feature = "typegate")] - run_typegate: !self.no_typegate, + typegate_options: if !self.no_typegate { + Some(self.typegate_options.clone()) + } else { + None + }, threads: self.threads, retry: self.retry, retry_interval_ms: self.retry_interval_ms, diff --git a/meta-cli/src/cli/typegate.rs b/meta-cli/src/cli/typegate.rs index 1ac69711a4..9f07a3fc37 100644 --- a/meta-cli/src/cli/typegate.rs +++ b/meta-cli/src/cli/typegate.rs @@ -6,14 +6,14 @@ use clap::Parser; use crate::cli::{Action, ConfigArgs}; -#[derive(Parser, Debug)] +#[derive(Parser, Debug, Clone)] pub struct Typegate { /// The url to the `main.ts` module of typegate deno #[clap(long)] - main_url: Option, + pub main_url: Option, /// The url to the `import_map.json` manifest for typegate #[clap(long)] - import_map_url: Option, + pub import_map_url: Option, } #[async_trait] @@ -30,26 +30,38 @@ pub fn command(_cmd: Typegate, _gen_args: ConfigArgs) -> Result<()> { } #[cfg(feature = "typegate")] { - let cmd = _cmd; - let runtime = typegate_engine::runtime(); - const BASE_URL: &str = "https://raw.githubusercontent.com/metatypedev/metatype/"; - let main_url = cmd.main_url.unwrap_or_else(|| { - BASE_URL.to_owned() + crate::build::COMMIT_HASH + "/typegate/src/main.ts" - }); - let import_map_url = cmd.import_map_url.unwrap_or_else(|| { - BASE_URL.to_owned() + crate::build::COMMIT_HASH + "/typegate/import_map.json" - }); - - runtime - .block_on(typegate_engine::launch_typegate_deno( - // typegate_core::resolve_url_or_path( - // "", - // &std::env::current_dir()?.join("./typegate/src/main.ts"), - // )?, - typegate_engine::resolve_url(&main_url)?, - Some(import_map_url), - )) - .map_err(anyhow_to_eyre!())?; + if cfg!(debug_assertions) { + typegate_engine::new_thread_builder() + .spawn(|| run_typegate(_cmd))? + .join() + .map_err(|_err| ferr!("error joining thread"))??; + } else { + run_typegate(_cmd)?; + } Ok(()) } } + +#[cfg(feature = "typegate")] +fn run_typegate(cmd: Typegate) -> Result<()> { + let runtime = typegate_engine::runtime(); + const BASE_URL: &str = "https://raw.githubusercontent.com/metatypedev/metatype/"; + let main_url = cmd.main_url.unwrap_or_else(|| { + BASE_URL.to_owned() + crate::build::COMMIT_HASH + "/typegate/src/main.ts" + }); + let import_map_url = cmd.import_map_url.unwrap_or_else(|| { + BASE_URL.to_owned() + crate::build::COMMIT_HASH + "/typegate/import_map.json" + }); + + runtime + .block_on(typegate_engine::launch_typegate_deno( + // typegate_core::resolve_url_or_path( + // "", + // &std::env::current_dir()?.join("./typegate/src/main.ts"), + // )?, + typegate_engine::resolve_url(&main_url)?, + Some(import_map_url), + )) + .map_err(anyhow_to_eyre!())?; + Ok(()) +} diff --git a/meta-cli/src/config.rs b/meta-cli/src/config.rs index dad5be31af..6d499ae69d 100644 --- a/meta-cli/src/config.rs +++ b/meta-cli/src/config.rs @@ -109,7 +109,11 @@ impl NodeConfig { } } - pub async fn get_admin_password(&self, dir: impl AsRef) -> Result { + #[tracing::instrument] + pub async fn get_admin_password( + &self, + dir: impl AsRef + std::fmt::Debug, + ) -> Result { let raw_username = self .username .clone() diff --git a/meta-cli/src/deploy/actors/discovery.rs b/meta-cli/src/deploy/actors/discovery.rs index 7551c80ec6..06ef532ac3 100644 --- a/meta-cli/src/deploy/actors/discovery.rs +++ b/meta-cli/src/deploy/actors/discovery.rs @@ -75,7 +75,7 @@ impl Actor for DiscoveryActor { Ok(_) => (), Err(err) => console.error(format!("Error while discovering modules: {}", err)), } - + task_manager.do_send(task_manager::message::DiscoveryDone); discovery.do_send(Stop); } .in_current_span(); @@ -83,7 +83,7 @@ impl Actor for DiscoveryActor { } fn stopped(&mut self, _ctx: &mut Self::Context) { - log::trace!("DiscoveryActor stopped"); + trace!("DiscoveryActor stopped"); } } diff --git a/meta-cli/src/deploy/actors/task/action.rs b/meta-cli/src/deploy/actors/task/action.rs index 24fb41f74c..58cf134414 100644 --- a/meta-cli/src/deploy/actors/task/action.rs +++ b/meta-cli/src/deploy/actors/task/action.rs @@ -66,11 +66,11 @@ impl TaskFilter { } } -impl ToString for TaskFilter { - fn to_string(&self) -> String { +impl core::fmt::Display for TaskFilter { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - TaskFilter::All => "all".to_string(), - TaskFilter::Typegraphs(typegraphs) => format!("typegraphs={}", typegraphs.join(",")), + TaskFilter::All => write!(f, "all"), + TaskFilter::Typegraphs(typegraphs) => write!(f, "typegraphs={}", typegraphs.join(",")), } } } diff --git a/meta-cli/src/deploy/actors/task/command.rs b/meta-cli/src/deploy/actors/task/command.rs index d8cafaeb06..6aabfe64dd 100644 --- a/meta-cli/src/deploy/actors/task/command.rs +++ b/meta-cli/src/deploy/actors/task/command.rs @@ -3,6 +3,7 @@ use crate::config::ModuleType; use crate::interlude::*; +use crate::utils::shell_words; use std::process::Stdio; use std::{path::Path, sync::Arc}; use tokio::process::Command; @@ -26,7 +27,7 @@ pub(super) async fn build_task_command( ctx.ensure_file_exists().await?; - let mut command = if let Some(command) = ctx.build_raw_from_env() { + let mut command = if let Ok(command) = ctx.build_raw_from_env() { command } else { match ModuleType::try_from(ctx.path.as_path())? { @@ -65,34 +66,31 @@ impl CommandContext { Ok(()) } - fn build_raw_from_env(&self) -> Option { - if let Ok(argv_str) = std::env::var("MCLI_LOADER_CMD") { - let argv_str_fmtd = argv_str - .replace("{filepath}", self.path.to_str().unwrap()) - .replace( - "{cwd}", - &std::env::current_dir() - .map(|c| c.to_string_lossy().to_string()) - .unwrap_or("{cwd}".to_string()), - ) - .to_string(); - let command = if !argv_str_fmtd.eq(&argv_str) { - // custom - let argv = argv_str_fmtd.split(' ').collect::>(); - let mut command = Command::new(argv[0]); - command.args(&argv[1..]); - command - } else { - // prefix the path - let argv = argv_str.split(' ').collect::>(); - let mut command = Command::new(argv[0]); - command.args(&argv[1..]).arg(self.path.to_str().unwrap()); - command - }; - Some(command) + fn build_raw_from_env(&self) -> Result { + let argv_str = std::env::var("MCLI_LOADER_CMD")?; + let argv_str_fmtd = argv_str + .replace("{filepath}", self.path.to_str().unwrap()) + .replace( + "{cwd}", + &std::env::current_dir() + .map(|c| c.to_string_lossy().to_string()) + .unwrap_or("{cwd}".to_string()), + ) + .to_string(); + let command = if !argv_str_fmtd.eq(&argv_str) { + // custom + let argv = shell_words::split(&argv_str_fmtd).map_err(|err| anyhow::anyhow!(err))?; + let mut command = Command::new(argv[0].clone()); + command.args(&argv[1..]); + command } else { - None - } + // prefix the path + let argv = shell_words::split(&argv_str).map_err(|err| anyhow::anyhow!(err))?; + let mut command = Command::new(argv[0].clone()); + command.args(&argv[1..]).arg(self.path.to_str().unwrap()); + command + }; + Ok(command) } fn setup_task(&self, command: &mut Command) { diff --git a/meta-cli/src/deploy/actors/task/command/python.rs b/meta-cli/src/deploy/actors/task/command/python.rs index 13fc5c1b20..511e1cebc2 100644 --- a/meta-cli/src/deploy/actors/task/command/python.rs +++ b/meta-cli/src/deploy/actors/task/command/python.rs @@ -3,6 +3,7 @@ use tokio::process::Command; +use crate::utils::shell_words; use crate::{interlude::*, utils::ensure_venv}; pub(super) async fn get_raw_command(path: impl AsRef) -> Result { @@ -14,10 +15,10 @@ pub(super) async fn get_raw_command(path: impl AsRef) -> Result { ) })?; let loader_py = std::env::var("MCLI_LOADER_PY").unwrap_or_else(|_| "python3".to_string()); - let mut loader_py = loader_py.split_whitespace(); - let mut command = Command::new(loader_py.next().unwrap()); + let loader_py = shell_words::split(&loader_py).map_err(|err| anyhow::anyhow!(err))?; + let mut command = Command::new(loader_py[0].clone()); command - .args(loader_py) + .args(&loader_py[1..]) .arg(path.as_ref().to_str().unwrap()) .env("PYTHONUNBUFFERED", "1") .env("PYTHONDONTWRITEBYTECODE", "1") diff --git a/meta-cli/src/deploy/actors/task/deploy/migrations.rs b/meta-cli/src/deploy/actors/task/deploy/migrations.rs index 19f86bcad8..0935c391b2 100644 --- a/meta-cli/src/deploy/actors/task/deploy/migrations.rs +++ b/meta-cli/src/deploy/actors/task/deploy/migrations.rs @@ -201,6 +201,7 @@ impl DeployActionInner { } } +#[allow(unused)] // FIXME: #[derive(Debug)] pub struct ConfirmDatabaseResetRequired { pub task: Addr>, diff --git a/meta-cli/src/deploy/actors/task_manager.rs b/meta-cli/src/deploy/actors/task_manager.rs index 2c92b515f6..386211c3f0 100644 --- a/meta-cli/src/deploy/actors/task_manager.rs +++ b/meta-cli/src/deploy/actors/task_manager.rs @@ -51,6 +51,10 @@ pub mod message { #[derive(Message)] #[rtype(result = "()")] pub struct Restart; + + #[derive(Message)] + #[rtype(result = "()")] + pub struct DiscoveryDone; } use message::*; @@ -116,6 +120,7 @@ pub struct TaskManager { reports: IndexMap, TaskFinishStatus>, watcher_addr: Option>>, console: Addr, + seen_tasks: usize, } const DEFAULT_INITIAL_RETRY_INTERVAL: Duration = Duration::from_secs(3); @@ -186,6 +191,7 @@ impl TaskManagerInit { reports: IndexMap::new(), watcher_addr, console, + seen_tasks: 0, } }); @@ -329,6 +335,7 @@ impl Handler for TaskManager { // ok: new task } + self.seen_tasks += 1; self.task_queue.push_back(msg.task_ref); ctx.address().do_send(message::NextTask); } @@ -438,6 +445,30 @@ impl Handler> for TaskManager { } } +impl Handler for TaskManager { + type Result = (); + + fn handle(&mut self, _: DiscoveryDone, ctx: &mut Context) -> Self::Result { + self.console.debug("discovery done".to_string()); + + // TODO check queue?? + if self.active_tasks.is_empty() { + if self.seen_tasks == 0 { + self.console.error("no typegraphs discovered".to_string()); + self.stop_reason = Some(StopReason::Error); + ctx.stop(); + } else if self.watcher_addr.is_none() && self.pending_retries.is_empty() { + // no watcher, auto stop when all tasks finished + self.console.debug("all tasks finished".to_string()); + self.stop_reason = Some(StopReason::Natural); + ctx.stop(); + } else if let Some(StopReason::Manual) = self.stop_reason { + ctx.stop(); + } + } + } +} + impl Handler for TaskManager { type Result = (); diff --git a/meta-cli/src/deploy/actors/typegate.rs b/meta-cli/src/deploy/actors/typegate.rs index 8147c0046b..8032d236f9 100644 --- a/meta-cli/src/deploy/actors/typegate.rs +++ b/meta-cli/src/deploy/actors/typegate.rs @@ -31,13 +31,21 @@ pub struct TypegateActor { temp_dir: Option, } +#[derive(Debug)] pub struct TypegateInit { port: u16, admin_password: String, + main_url: Option, + import_map_url: Option, } impl TypegateInit { - pub async fn new(node_config: &NodeConfig, working_dir: impl AsRef) -> Result { + pub async fn new( + node_config: &NodeConfig, + working_dir: impl AsRef + std::fmt::Debug, + main_url: Option, + import_map_url: Option, + ) -> Result { let host = node_config .url .host_str() @@ -58,9 +66,12 @@ impl TypegateInit { Ok(Self { port, admin_password, + main_url, + import_map_url, }) } + #[tracing::instrument] pub async fn start(self, console: Addr) -> Result> { let (ready_tx, ready_rx) = oneshot::channel(); @@ -74,6 +85,7 @@ impl TypegateInit { let command = self.create_command(&temp_dir)?; let addr = TypegateActor::create(move |ctx| { + trace!("typegate actor starting"); ctx.address() .do_send(message::StartProcess(command, ready_tx)); @@ -103,6 +115,12 @@ impl TypegateInit { .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::piped()); + if let Some(url) = &self.main_url { + command.arg(format!("--main-url={url}")); + } + if let Some(url) = &self.import_map_url { + command.arg(format!("--import-map-url={url}")); + } Ok(command) } @@ -325,7 +343,6 @@ impl TypegateActor { while let Some(line) = error_handler.handle(reader.next_line().await) { let naked_line = strip_ansi_escapes::strip_str(&line); - log::debug!("from line native: {naked_line:?}"); if let Some(log_record) = LogRecord::from_line_native(&naked_line) { log_record.log(&console); } else { diff --git a/meta-cli/src/main.rs b/meta-cli/src/main.rs index 29863bdf92..f25d4adb46 100644 --- a/meta-cli/src/main.rs +++ b/meta-cli/src/main.rs @@ -85,18 +85,6 @@ fn main() -> Result<()> { std::env::set_var("RUST_LOG", format!("warn,meta={filter}")); } logger::init(); - - let runner = actix::System::with_tokio_rt(|| { - tokio::runtime::Builder::new_multi_thread() - .enable_all() - .build() - .unwrap_or_log() - }); - - if let Err(err) = runner.block_on(upgrade_check()) { - warn!("cannot check for update: {err}"); - } - if args.version { println!("meta {}", build::PKG_VERSION); return Ok(()); @@ -105,16 +93,32 @@ fn main() -> Result<()> { match args.command { // the deno task requires use of a single thread runtime which it'll spawn itself Some(cli::Commands::Typegate(cmd_args)) => cli::typegate::command(cmd_args, args.config)?, - Some(command) => runner.block_on(async move { - match command { - cli::Commands::Serialize(_) - | cli::Commands::Dev(_) - | cli::Commands::Deploy(_) - | cli::Commands::List(_) - | cli::Commands::Gen(_) => command.run(args.config).await, - _ => command.run(args.config).await.map(|_| ()), + Some(command) => { + // NOTE: we avoid making the runner (i.e. launching a new thread) + // if we're launching the typegate as this messes with + // the RUST_MIN_STACK + let runner = actix::System::with_tokio_rt(|| { + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap_or_log() + }); + + if let Err(err) = runner.block_on(upgrade_check()) { + warn!("cannot check for update: {err}"); } - })?, + + runner.block_on(async move { + match command { + cli::Commands::Serialize(_) + | cli::Commands::Dev(_) + | cli::Commands::Deploy(_) + | cli::Commands::List(_) + | cli::Commands::Gen(_) => command.run(args.config).await, + _ => command.run(args.config).await.map(|_| ()), + } + })? + } None => Args::command().print_help()?, } diff --git a/meta-cli/src/utils/mod.rs b/meta-cli/src/utils/mod.rs index bc901a6230..c015d3abc0 100644 --- a/meta-cli/src/utils/mod.rs +++ b/meta-cli/src/utils/mod.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: MPL-2.0 pub mod clap; +pub mod shell_words; use crate::interlude::*; diff --git a/meta-cli/src/utils/shell_words.rs b/meta-cli/src/utils/shell_words.rs new file mode 100644 index 0000000000..5c00018f2e --- /dev/null +++ b/meta-cli/src/utils/shell_words.rs @@ -0,0 +1,156 @@ +// no-auto-license-header + +/* +Copyright (c) 2016 Tomasz MiÄ…sko + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + +use core::fmt; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct ParseError; + +impl fmt::Display for ParseError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.write_str("missing closing quote") + } +} + +enum State { + Delimiter, + Backslash, + Unquoted, + UnquotedBackslash, + SingleQuoted, + DoubleQuoted, + DoubleQuotedBackslash, + Comment, +} + +pub fn split(s: &str) -> Result, ParseError> { + use State::*; + + let mut words = Vec::new(); + let mut word = String::new(); + let mut chars = s.chars(); + let mut state = Delimiter; + + loop { + let c = chars.next(); + state = match state { + Delimiter => match c { + None => break, + Some('\'') => SingleQuoted, + Some('\"') => DoubleQuoted, + Some('\\') => Backslash, + Some('\t') | Some(' ') | Some('\n') => Delimiter, + Some('#') => Comment, + Some(c) => { + word.push(c); + Unquoted + } + }, + Backslash => match c { + None => { + word.push('\\'); + words.push(std::mem::take(&mut word)); + break; + } + Some('\n') => Delimiter, + Some(c) => { + word.push(c); + Unquoted + } + }, + Unquoted => match c { + None => { + words.push(std::mem::take(&mut word)); + break; + } + Some('\'') => SingleQuoted, + Some('\"') => DoubleQuoted, + Some('\\') => UnquotedBackslash, + Some('\t') | Some(' ') | Some('\n') => { + words.push(std::mem::take(&mut word)); + Delimiter + } + Some(c) => { + word.push(c); + Unquoted + } + }, + UnquotedBackslash => match c { + None => { + word.push('\\'); + words.push(std::mem::take(&mut word)); + break; + } + Some('\n') => Unquoted, + Some(c) => { + word.push(c); + Unquoted + } + }, + SingleQuoted => match c { + None => return Err(ParseError), + Some('\'') => Unquoted, + Some(c) => { + word.push(c); + SingleQuoted + } + }, + DoubleQuoted => match c { + None => return Err(ParseError), + Some('\"') => Unquoted, + Some('\\') => DoubleQuotedBackslash, + Some(c) => { + word.push(c); + DoubleQuoted + } + }, + DoubleQuotedBackslash => match c { + None => return Err(ParseError), + Some('\n') => DoubleQuoted, + Some(c @ '$') | Some(c @ '`') | Some(c @ '"') | Some(c @ '\\') => { + word.push(c); + DoubleQuoted + } + Some(c) => { + word.push('\\'); + word.push(c); + DoubleQuoted + } + }, + Comment => match c { + None => break, + Some('\n') => Delimiter, + Some(_) => Comment, + }, + } + } + + Ok(words) +} diff --git a/meta-lsp/package.json b/meta-lsp/package.json index 11a5b33aba..29bc099eba 100644 --- a/meta-lsp/package.json +++ b/meta-lsp/package.json @@ -4,7 +4,7 @@ "description": "VSCode extension for Metatype support", "icon": "logo.png", "author": "Metatype Team", - "version": "0.4.4", + "version": "0.4.6", "repository": { "type": "git", "url": "https://github.com/metatypedev/metatype" diff --git a/meta-lsp/ts-language-server/package.json b/meta-lsp/ts-language-server/package.json index 6540fe0903..e7e1d941f4 100644 --- a/meta-lsp/ts-language-server/package.json +++ b/meta-lsp/ts-language-server/package.json @@ -2,7 +2,7 @@ "name": "typegraph-ts-server", "description": "TypeScript language server for TypeGraph", "author": "Metatype Team", - "version": "0.4.4", + "version": "0.4.6", "repository": { "type": "git", "url": "https://github.com/metatypedev/metatype" diff --git a/meta-lsp/vscode-metatype-support/package.json b/meta-lsp/vscode-metatype-support/package.json index d9a9ba6da4..88095b07b9 100644 --- a/meta-lsp/vscode-metatype-support/package.json +++ b/meta-lsp/vscode-metatype-support/package.json @@ -2,7 +2,7 @@ "name": "vscode-metatype-support", "description": "VSCode extension for Metatype support", "author": "Metatype Team", - "version": "0.4.4", + "version": "0.4.6", "repository": { "type": "git", "url": "https://github.com/metatypedev/metatype" diff --git a/pyproject.toml b/pyproject.toml index ff30160235..8d84907735 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "metatype" -version = "0.4.4" +version = "0.4.6" description = "" authors = [] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 424cf7ff15..21bafc2c23 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.77.1" +channel = "1.79.0" components = ["rustfmt", "clippy"] targets = ["wasm32-unknown-unknown", "wasm32-wasi"] diff --git a/typegate/deno.lock b/typegate/deno.lock index 4893960165..b49800c930 100644 --- a/typegate/deno.lock +++ b/typegate/deno.lock @@ -13,19 +13,12 @@ "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/streams@0.221.0": "jsr:@std/streams@0.221.0", - "npm:@noble/hashes@1.4.0": "npm:@noble/hashes@1.4.0", "npm:@sentry/node@7.70.0": "npm:@sentry/node@7.70.0", "npm:@types/node": "npm:@types/node@18.16.19", "npm:chance@1.1.11": "npm:chance@1.1.11", "npm:graphql@16.8.1": "npm:graphql@16.8.1", - "npm:json-schema-faker@0.5.3": "npm:json-schema-faker@0.5.3", "npm:lodash@4.17.21": "npm:lodash@4.17.21", - "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:zod-validation-error@3.3.0": "npm:zod-validation-error@3.3.0_zod@3.23.8", - "npm:zod@3.23.8": "npm:zod@3.23.8" + "npm:validator@13.12.0": "npm:validator@13.12.0" }, "jsr": { "@david/dax@0.41.0": { @@ -79,16 +72,6 @@ } }, "npm": { - "@babel/runtime@7.24.7": { - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", - "dependencies": { - "regenerator-runtime": "regenerator-runtime@0.14.1" - } - }, - "@noble/hashes@1.4.0": { - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dependencies": {} - }, "@sentry-internal/tracing@7.70.0": { "integrity": "sha512-SpbE6wZhs6QwG2ORWCt8r28o1T949qkWx/KeRTCdK4Ub95PQ3Y3DgnqD8Wz//3q50Wt6EZDEibmz4t067g6PPg==", "dependencies": { @@ -140,24 +123,10 @@ "debug": "debug@4.3.5" } }, - "argparse@1.0.10": { - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "sprintf-js@1.0.3" - } - }, - "call-me-maybe@1.0.2": { - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dependencies": {} - }, "chance@1.1.11": { "integrity": "sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA==", "dependencies": {} }, - "complex.js@2.1.1": { - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", - "dependencies": {} - }, "cookie@0.5.0": { "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dependencies": {} @@ -168,26 +137,6 @@ "ms": "ms@2.1.2" } }, - "decimal.js@10.4.3": { - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dependencies": {} - }, - "escape-latex@1.2.0": { - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", - "dependencies": {} - }, - "esprima@4.0.1": { - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dependencies": {} - }, - "format-util@1.0.5": { - "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==", - "dependencies": {} - }, - "fraction.js@4.3.4": { - "integrity": "sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==", - "dependencies": {} - }, "graphql@16.8.1": { "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dependencies": {} @@ -199,36 +148,6 @@ "debug": "debug@4.3.5" } }, - "javascript-natural-sort@0.7.1": { - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", - "dependencies": {} - }, - "js-yaml@3.14.1": { - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "argparse@1.0.10", - "esprima": "esprima@4.0.1" - } - }, - "json-schema-faker@0.5.3": { - "integrity": "sha512-BeIrR0+YSrTbAR9dOMnjbFl1MvHyXnq+Wpdw1FpWZDHWKLzK229hZ5huyPcmzFUfVq1ODwf40WdGVoE266UBUg==", - "dependencies": { - "json-schema-ref-parser": "json-schema-ref-parser@6.1.0", - "jsonpath-plus": "jsonpath-plus@7.2.0" - } - }, - "json-schema-ref-parser@6.1.0": { - "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", - "dependencies": { - "call-me-maybe": "call-me-maybe@1.0.2", - "js-yaml": "js-yaml@3.14.1", - "ono": "ono@4.0.11" - } - }, - "jsonpath-plus@7.2.0": { - "integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==", - "dependencies": {} - }, "lodash@4.17.21": { "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dependencies": {} @@ -237,176 +156,21 @@ "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", "dependencies": {} }, - "mathjs@11.11.1": { - "integrity": "sha512-uWrwMrhU31TCqHKmm1yFz0C352njGUVr/I1UnpMOxI/VBTTbCktx/mREUXx5Vyg11xrFdg/F3wnMM7Ql/csVsQ==", - "dependencies": { - "@babel/runtime": "@babel/runtime@7.24.7", - "complex.js": "complex.js@2.1.1", - "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.2": { "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dependencies": {} }, - "multiformats@13.1.0": { - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", - "dependencies": {} - }, - "ono@4.0.11": { - "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", - "dependencies": { - "format-util": "format-util@1.0.5" - } - }, - "pg-cloudflare@1.1.1": { - "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", - "dependencies": {} - }, - "pg-connection-string@2.6.4": { - "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", - "dependencies": {} - }, - "pg-int8@1.0.1": { - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "dependencies": {} - }, - "pg-pool@3.6.2_pg@8.12.0": { - "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", - "dependencies": { - "pg": "pg@8.12.0" - } - }, - "pg-protocol@1.6.1": { - "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==", - "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.6.4", - "pg-pool": "pg-pool@3.6.2_pg@8.12.0", - "pg-protocol": "pg-protocol@1.6.1", - "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" - } - }, - "regenerator-runtime@0.14.1": { - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dependencies": {} - }, - "seedrandom@3.0.5": { - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "dependencies": {} - }, - "split2@4.2.0": { - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dependencies": {} - }, - "sprintf-js@1.0.3": { - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dependencies": {} - }, - "tiny-emitter@2.1.0": { - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dependencies": {} - }, "tslib@2.6.3": { "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dependencies": {} }, - "typed-function@4.2.1": { - "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==", - "dependencies": {} - }, "validator@13.12.0": { "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "dependencies": {} - }, - "xtend@4.0.2": { - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dependencies": {} - }, - "zod-validation-error@3.3.0_zod@3.23.8": { - "integrity": "sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==", - "dependencies": { - "zod": "zod@3.23.8" - } - }, - "zod@3.23.8": { - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "dependencies": {} } } }, - "redirects": { - "https://cdn.pika.dev/big.js/^5.2.2": "https://cdn.skypack.dev/big.js@^5.2.2", - "https://crux.land/api/get/2KNRVU": "https://crux.land/api/get/2KNRVU.ts", - "https://crux.land/api/get/router@0.0.5": "https://crux.land/api/get/2KNRVU", - "https://crux.land/router@0.0.5": "https://crux.land/api/get/router@0.0.5", - "https://github.com/levibostian/deno-udd/raw/ignore-prerelease/mod.ts": "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/mod.ts", - "https://raw.github.com/metatypedev/ghjk/44d9a41/deps/common.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/deps/common.ts", - "https://raw.github.com/metatypedev/ghjk/44d9a41/mod.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/mod.ts", - "https://raw.github.com/metatypedev/ghjk/44d9a41/ports/mod.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/mod.ts", - "https://raw.github.com/metatypedev/ghjk/44d9a41/std.ts": "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/std.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://crux.land/api/get/2KNRVU.ts": "6a77d55844aba78d01520c5ff0b2f0af7f24cc1716a0de8b3bb6bd918c47b5ba", - "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", - "https://deno.land/std@0.116.0/path/_constants.ts": "1247fee4a79b70c89f23499691ef169b41b6ccf01887a0abd131009c5581b853", - "https://deno.land/std@0.116.0/path/_interface.ts": "1fa73b02aaa24867e481a48492b44f2598cd9dfa513c7b34001437007d3642e4", - "https://deno.land/std@0.116.0/path/_util.ts": "2e06a3b9e79beaf62687196bd4b60a4c391d862cfa007a20fc3a39f778ba073b", - "https://deno.land/std@0.116.0/path/common.ts": "f41a38a0719a1e85aa11c6ba3bea5e37c15dd009d705bd8873f94c833568cbc4", - "https://deno.land/std@0.116.0/path/glob.ts": "ea87985765b977cc284b92771003b2070c440e0807c90e1eb0ff3e095911a820", - "https://deno.land/std@0.116.0/path/mod.ts": "4465dc494f271b02569edbb4a18d727063b5dbd6ed84283ff906260970a15d12", - "https://deno.land/std@0.116.0/path/posix.ts": "34349174b9cd121625a2810837a82dd8b986bbaaad5ade690d1de75bbb4555b2", - "https://deno.land/std@0.116.0/path/separator.ts": "8fdcf289b1b76fd726a508f57d3370ca029ae6976fcde5044007f062e643ff1c", - "https://deno.land/std@0.116.0/path/win32.ts": "11549e8c6df8307a8efcfa47ad7b2a75da743eac7d4c89c9723a944661c8bd2e", "https://deno.land/std@0.129.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", "https://deno.land/std@0.129.0/_util/os.ts": "49b92edea1e82ba295ec946de8ffd956ed123e2948d9bd1d3e901b04e4307617", "https://deno.land/std@0.129.0/archive/tar.ts": "35ea1baddec7988cc4034765a2cee7613bc8074bd40940d3f5e98f63070a716a", @@ -480,87 +244,10 @@ "https://deno.land/std@0.129.0/streams/conversion.ts": "712585bfa0172a97fb68dd46e784ae8ad59d11b88079d6a4ab098ff42e697d21", "https://deno.land/std@0.129.0/testing/_diff.ts": "9d849cd6877694152e01775b2d93f9d6b7aef7e24bfe3bfafc4d7a1ac8e9f392", "https://deno.land/std@0.129.0/testing/asserts.ts": "0a95d9e8076dd3e7f0eeb605a67c148078b4b11f4abcd5eef115b0361b0736a2", - "https://deno.land/std@0.140.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", - "https://deno.land/std@0.140.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", - "https://deno.land/std@0.140.0/bytes/bytes_list.ts": "67eb118e0b7891d2f389dad4add35856f4ad5faab46318ff99653456c23b025d", - "https://deno.land/std@0.140.0/bytes/equals.ts": "fc16dff2090cced02497f16483de123dfa91e591029f985029193dfaa9d894c9", - "https://deno.land/std@0.140.0/bytes/mod.ts": "763f97d33051cc3f28af1a688dfe2830841192a9fea0cbaa55f927b49d49d0bf", - "https://deno.land/std@0.140.0/fmt/colors.ts": "30455035d6d728394781c10755351742dd731e3db6771b1843f9b9e490104d37", - "https://deno.land/std@0.140.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f", - "https://deno.land/std@0.140.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d", - "https://deno.land/std@0.140.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b", - "https://deno.land/std@0.140.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", - "https://deno.land/std@0.140.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", - "https://deno.land/std@0.140.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", - "https://deno.land/std@0.140.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", - "https://deno.land/std@0.140.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", - "https://deno.land/std@0.140.0/path/mod.ts": "d3e68d0abb393fb0bf94a6d07c46ec31dc755b544b13144dee931d8d5f06a52d", - "https://deno.land/std@0.140.0/path/posix.ts": "293cdaec3ecccec0a9cc2b534302dfe308adb6f10861fa183275d6695faace44", - "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", - "https://deno.land/std@0.166.0/flags/mod.ts": "3b459daf581e047819b6b799c92b96c81b4eecbd5ea025643d54dc0abc6ac923", - "https://deno.land/std@0.166.0/fmt/colors.ts": "9e36a716611dcd2e4865adea9c4bec916b5c60caad4cdcdc630d4974e6bb8bd4", - "https://deno.land/std@0.166.0/fs/_util.ts": "fdc156f897197f261a1c096dcf8ff9267ed0ff42bd5b31f55053a4763a4bae3b", - "https://deno.land/std@0.166.0/fs/copy.ts": "37ad2d3390a672a34baf7d16a8623238906a1ee9b2c5fffc8efaa97810f4e6a9", - "https://deno.land/std@0.166.0/fs/empty_dir.ts": "c15a0aaaf40f8c21cca902aa1e01a789ad0c2fd1b7e2eecf4957053c5dbf707f", - "https://deno.land/std@0.166.0/fs/ensure_dir.ts": "76395fc1c989ca8d2de3aedfa8240eb8f5225cde20f926de957995b063135b80", - "https://deno.land/std@0.166.0/fs/ensure_file.ts": "b8e32ea63aa21221d0219760ba3f741f682d7f7d68d0d24a3ec067c338568152", - "https://deno.land/std@0.166.0/fs/ensure_link.ts": "5cc1c04f18487d7d1edf4c5469705f30b61390ffd24ad7db6df85e7209b32bb2", - "https://deno.land/std@0.166.0/fs/ensure_symlink.ts": "5273557b8c50be69477aa9cb003b54ff2240a336db52a40851c97abce76b96ab", - "https://deno.land/std@0.166.0/fs/eol.ts": "65b1e27320c3eec6fb653b27e20056ee3d015d3e91db388cfefa41616ebc7cb3", - "https://deno.land/std@0.166.0/fs/exists.ts": "6a447912e49eb79cc640adacfbf4b0baf8e17ede6d5bed057062ce33c4fa0d68", - "https://deno.land/std@0.166.0/fs/expand_glob.ts": "d08678afa768881b055bdfb5cebe4f089f8db4513a4d2b0bbe748f5870d77ce3", - "https://deno.land/std@0.166.0/fs/mod.ts": "354a6f972ef4e00c4dd1f1339a8828ef0764c1c23d3c0010af3fcc025d8655b0", - "https://deno.land/std@0.166.0/fs/move.ts": "6d7fa9da60dbc7a32dd7fdbc2ff812b745861213c8e92ba96dace0669b0c378c", - "https://deno.land/std@0.166.0/fs/walk.ts": "0a754cc4696a15bdb175380a4b7deff3eb65be9768cb11d91a4138beee35c2d7", - "https://deno.land/std@0.166.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", - "https://deno.land/std@0.166.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", - "https://deno.land/std@0.166.0/path/_util.ts": "d16be2a16e1204b65f9d0dfc54a9bc472cafe5f4a190b3c8471ec2016ccd1677", - "https://deno.land/std@0.166.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", - "https://deno.land/std@0.166.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", - "https://deno.land/std@0.166.0/path/mod.ts": "56fec03ad0ebd61b6ab39ddb9b0ddb4c4a5c9f2f4f632e09dd37ec9ebfd722ac", - "https://deno.land/std@0.166.0/path/posix.ts": "6b63de7097e68c8663c84ccedc0fd977656eb134432d818ecd3a4e122638ac24", - "https://deno.land/std@0.166.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", - "https://deno.land/std@0.166.0/path/win32.ts": "7cebd2bda6657371adc00061a1d23fdd87bcdf64b4843bb148b0b24c11b40f69", - "https://deno.land/std@0.181.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", - "https://deno.land/std@0.181.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", - "https://deno.land/std@0.181.0/fs/_util.ts": "65381f341af1ff7f40198cee15c20f59951ac26e51ddc651c5293e24f9ce6f32", - "https://deno.land/std@0.181.0/fs/ensure_dir.ts": "dc64c4c75c64721d4e3fb681f1382f803ff3d2868f08563ff923fdd20d071c40", - "https://deno.land/std@0.181.0/fs/expand_glob.ts": "e4f56259a0a70fe23f05215b00de3ac5e6ba46646ab2a06ebbe9b010f81c972a", - "https://deno.land/std@0.181.0/fs/walk.ts": "ea95ffa6500c1eda6b365be488c056edc7c883a1db41ef46ec3bf057b1c0fe32", - "https://deno.land/std@0.181.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", - "https://deno.land/std@0.181.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", - "https://deno.land/std@0.181.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", - "https://deno.land/std@0.181.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", - "https://deno.land/std@0.181.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", - "https://deno.land/std@0.181.0/path/mod.ts": "bf718f19a4fdd545aee1b06409ca0805bd1b68ecf876605ce632e932fe54510c", - "https://deno.land/std@0.181.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", - "https://deno.land/std@0.181.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", - "https://deno.land/std@0.181.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", - "https://deno.land/std@0.182.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", - "https://deno.land/std@0.182.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", - "https://deno.land/std@0.182.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e", - "https://deno.land/std@0.182.0/fs/_util.ts": "65381f341af1ff7f40198cee15c20f59951ac26e51ddc651c5293e24f9ce6f32", - "https://deno.land/std@0.182.0/fs/empty_dir.ts": "c3d2da4c7352fab1cf144a1ecfef58090769e8af633678e0f3fabaef98594688", - "https://deno.land/std@0.182.0/fs/expand_glob.ts": "e4f56259a0a70fe23f05215b00de3ac5e6ba46646ab2a06ebbe9b010f81c972a", - "https://deno.land/std@0.182.0/fs/walk.ts": "920be35a7376db6c0b5b1caf1486fb962925e38c9825f90367f8f26b5e5d0897", - "https://deno.land/std@0.182.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", - "https://deno.land/std@0.182.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", - "https://deno.land/std@0.182.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", - "https://deno.land/std@0.182.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", - "https://deno.land/std@0.182.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", - "https://deno.land/std@0.182.0/path/mod.ts": "bf718f19a4fdd545aee1b06409ca0805bd1b68ecf876605ce632e932fe54510c", - "https://deno.land/std@0.182.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", - "https://deno.land/std@0.182.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", - "https://deno.land/std@0.182.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", - "https://deno.land/std@0.185.0/semver/mod.ts": "200f50cf6872212667df532fb09f0b1a33d3427a5201f75fad30a0d0c6dbcce3", "https://deno.land/std@0.205.0/encoding/_util.ts": "f368920189c4fe6592ab2e93bd7ded8f3065b84f95cd3e036a4a10a75649dcba", "https://deno.land/std@0.205.0/encoding/base64.ts": "cc03110d6518170aeaa68ec97f89c6d6e2276294b30807e7332591d7ce2e4b72", "https://deno.land/std@0.205.0/encoding/base64url.ts": "7608862858d28a003f9d6cb78dd61e645ecd1ae1f45faf0e09a306eafe66b16e", @@ -572,432 +259,6 @@ "https://deno.land/std@0.211.0/bytes/copy.ts": "f29c03168853720dfe82eaa57793d0b9e3543ebfe5306684182f0f1e3bfd422a", "https://deno.land/std@0.211.0/io/buf_reader.ts": "3ee2cf0d6570ec1ede46efd5d0b0701719dc573f103a123d2cf9f4bfbc36af31", "https://deno.land/std@0.211.0/io/buf_writer.ts": "214134bd77bc46e4478cf74b771dfb614b9e23b313df513a34c54aa88df81584", - "https://deno.land/std@0.213.0/archive/_common.ts": "85edd5cdd4324833f613c1bc055f8e2f935cc9229c6b3044421268d9959997ef", - "https://deno.land/std@0.213.0/archive/untar.ts": "7677c136f2188cd8c33363ccaaee6e77d4ca656cca3e2093d08de8f294d4353d", - "https://deno.land/std@0.213.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", - "https://deno.land/std@0.213.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", - "https://deno.land/std@0.213.0/bytes/concat.ts": "9cac3b4376afbef98ff03588eb3cf948e0d1eb6c27cfe81a7651ab6dd3adc54a", - "https://deno.land/std@0.213.0/bytes/copy.ts": "f29c03168853720dfe82eaa57793d0b9e3543ebfe5306684182f0f1e3bfd422a", - "https://deno.land/std@0.213.0/fmt/colors.ts": "aeaee795471b56fc62a3cb2e174ed33e91551b535f44677f6320336aabb54fbb", - "https://deno.land/std@0.213.0/fs/_create_walk_entry.ts": "5d9d2aaec05bcf09a06748b1684224d33eba7a4de24cf4cf5599991ca6b5b412", - "https://deno.land/std@0.213.0/fs/_get_file_info_type.ts": "da7bec18a7661dba360a1db475b826b18977582ce6fc9b25f3d4ee0403fe8cbd", - "https://deno.land/std@0.213.0/fs/_is_same_path.ts": "709c95868345fea051c58b9e96af95cff94e6ae98dfcff2b66dee0c212c4221f", - "https://deno.land/std@0.213.0/fs/_is_subdir.ts": "c68b309d46cc8568ed83c000f608a61bbdba0943b7524e7a30f9e450cf67eecd", - "https://deno.land/std@0.213.0/fs/_to_path_string.ts": "29bfc9c6c112254961d75cbf6ba814d6de5349767818eb93090cecfa9665591e", - "https://deno.land/std@0.213.0/fs/copy.ts": "dc0f68c4b6c3b090bfdb909387e309f6169b746bd713927c9507c9ef545d71f6", - "https://deno.land/std@0.213.0/fs/empty_dir.ts": "4f01e6d56e2aa8d90ad60f20bc25601f516b00f6c3044cdf6863a058791d91aa", - "https://deno.land/std@0.213.0/fs/ensure_dir.ts": "dffff68de0d10799b5aa9e39dec4e327e12bbd29e762292193684542648c4aeb", - "https://deno.land/std@0.213.0/fs/ensure_file.ts": "ac5cfde94786b0284d2c8e9f7f9425269bea1b2140612b4aea1f20b508870f59", - "https://deno.land/std@0.213.0/fs/ensure_link.ts": "d42af2edefeaa9817873ec6e46dc5d209ac4d744f8c69c5ecc2dffade78465b6", - "https://deno.land/std@0.213.0/fs/ensure_symlink.ts": "aee3f1655700f60090b4a3037f5b6c07ab37c36807cccad746ce89987719e6d2", - "https://deno.land/std@0.213.0/fs/eol.ts": "c9807291f78361d49fd986a9be04654610c615c5e2ec63d748976197d30ff206", - "https://deno.land/std@0.213.0/fs/exists.ts": "d2757ef764eaf5c6c5af7228e8447db2de42ab084a2dae540097f905723d83f5", - "https://deno.land/std@0.213.0/fs/expand_glob.ts": "a64e4ab51f62780f764789c9cdeacc862d221e35207fb81170a980ccc22868e3", - "https://deno.land/std@0.213.0/fs/mod.ts": "107f5afa4424c2d3ce2f7e9266173198da30302c69af662c720115fe504dc5ee", - "https://deno.land/std@0.213.0/fs/move.ts": "39e0d7ccb88a566d20b949712020e766b15ef1ec19159573d11f949bd677909c", - "https://deno.land/std@0.213.0/fs/walk.ts": "f04cc83ad3b27b5a5d078c831a01c7406069474bf280d5db015d937149a60128", - "https://deno.land/std@0.213.0/internal/warn_on_deprecated_api.ts": "0708590b803a3c4462bbd89ee8b9a1b3fe941a7679ee3cfc332227a69b5c36f1", - "https://deno.land/std@0.213.0/io/_common.ts": "36705cdb4dfcd338d6131bca1b16e48a4d5bf0d1dada6ce397268e88c17a5835", - "https://deno.land/std@0.213.0/io/_constants.ts": "3c7ad4695832e6e4a32e35f218c70376b62bc78621ef069a4a0a3d55739f8856", - "https://deno.land/std@0.213.0/io/buf_reader.ts": "ccbd43ace0a9eebbd5e1b4765724b79da79d1e28b90c2b08537b99192da4a1f7", - "https://deno.land/std@0.213.0/io/buf_writer.ts": "bf68b9c74b1bccf51b9960c54db5eec60e7e3d922c7c62781b0d3971770021ba", - "https://deno.land/std@0.213.0/io/buffer.ts": "79182995c8340ece2fa8763a8da86d282c507e854921d0a4c2ba7425c63609ef", - "https://deno.land/std@0.213.0/io/copy.ts": "63c6a4acf71fb1e89f5e47a7b3b2972f9d2c56dd645560975ead72db7eb23f61", - "https://deno.land/std@0.213.0/io/copy_n.ts": "e4a169b8965b69e6a05175d06bf14565caa91266143ec895e54e95b6cdb27cf2", - "https://deno.land/std@0.213.0/io/limited_reader.ts": "2b3e6c2d134bbbabbc918584db5fd2f8b21091843357f75af0d9f262cb5c94c1", - "https://deno.land/std@0.213.0/io/mod.ts": "571384032c5f60530542a28f2e8b0e73e47e87eca77056ba7e2363f4d4a4573a", - "https://deno.land/std@0.213.0/io/multi_reader.ts": "ca8a7813208a3393dfaed75894d955fe58a38c21b880e69839a4e0547eadbf61", - "https://deno.land/std@0.213.0/io/read_all.ts": "876c1cb20adea15349c72afc86cecd3573335845ae778967aefb5e55fe5a8a4a", - "https://deno.land/std@0.213.0/io/read_delim.ts": "fb0884d97adc398877c6f59e1d1450be12e078790f52845fae7876dc119bb8f6", - "https://deno.land/std@0.213.0/io/read_int.ts": "6ada4e0eec5044982df530e4de804e32ae757a2c318b57eba622d893841ffe2a", - "https://deno.land/std@0.213.0/io/read_lines.ts": "34555eaa25269f6cfb9a842a03daedc9eae4f8295c8f933bd2b1639274ce89e3", - "https://deno.land/std@0.213.0/io/read_long.ts": "199cba44526464f8499e1f3d96008d513bcadc8e5665356a9b84425cac6b16ad", - "https://deno.land/std@0.213.0/io/read_range.ts": "a0c930ea61fdc3ea5520be4df34a7927fe8a2d6da9b04bfaa7b9588ef2e1a718", - "https://deno.land/std@0.213.0/io/read_short.ts": "73777709ad41b6faeff3638c275a329cc820c1082f4dad07909f48875a35a71d", - "https://deno.land/std@0.213.0/io/read_string_delim.ts": "8c604ceea5c3c7ab244583570b467ce194238ace6d49b1d47f25d4f75de86d59", - "https://deno.land/std@0.213.0/io/slice_long_to_bytes.ts": "9769174a8f3b4449f1e1af1a79f78e58ef84d0aaf2f457e1fdc31a01f92439b7", - "https://deno.land/std@0.213.0/io/string_reader.ts": "b0176211e61e235a684abef722e7ecc7a6481238ba264f1a7b199b8a1d2a62f5", - "https://deno.land/std@0.213.0/io/string_writer.ts": "4fe4dcbdadff11c726bf79b0239e14fa9b1e8468a795b465622e4dbd6c1f819c", - "https://deno.land/std@0.213.0/io/to_readable_stream.ts": "ed03a44a1ec1cc55a85a857acf6cac472035298f6f3b6207ea209f93b4aefb39", - "https://deno.land/std@0.213.0/io/to_writable_stream.ts": "ef422e0425963c8a1e0481674e66c3023da50f0acbe5ef51ec9789efc3c1e2ed", - "https://deno.land/std@0.213.0/io/types.ts": "748bbb3ac96abda03594ef5a0db15ce5450dcc6c0d841c8906f8b10ac8d32c96", - "https://deno.land/std@0.213.0/io/write_all.ts": "24aac2312bb21096ae3ae0b102b22c26164d3249dff96dbac130958aa736f038", - "https://deno.land/std@0.213.0/log/base_handler.ts": "924b370558d561f4e728295ebcb392224e36061542c7ad2e5b48c8e29614c27f", - "https://deno.land/std@0.213.0/log/console_handler.ts": "75653acd6932fb97c7121f63336b39de3f072e329874d66f05abcb2a7f514558", - "https://deno.land/std@0.213.0/log/file_handler.ts": "7b58c7017117ae290700b0e23f21573c1dc8ba8b5d4978d8aa0b8e05742d75e2", - "https://deno.land/std@0.213.0/log/formatters.ts": "5491ac778cf404a9379025bef33565644eb10b6a1f8083aba2595887d49edf15", - "https://deno.land/std@0.213.0/log/handlers.ts": "ff5b5d8293ca5d452acfb2e7c214f527ad953aaab4036219b818a3b859944b08", - "https://deno.land/std@0.213.0/log/levels.ts": "3746b311bc5cd28340fe7b563002f94508ace565592e9f4730f8b07916f189a6", - "https://deno.land/std@0.213.0/log/logger.ts": "32ad896c88182ee9cbe2a579afb09b48ed642a2bfaa3f3b2fb8009314ab18855", - "https://deno.land/std@0.213.0/log/mod.ts": "d8a8ebca268767a610d686d7f3c5c97096121ff3bc7ebec71ab7dd73cc52231b", - "https://deno.land/std@0.213.0/log/rotating_file_handler.ts": "dc0333959ff725ac1f43b741ababa9fef074f658a60c65235d12e44952085fbe", - "https://deno.land/std@0.213.0/path/_common/assert_path.ts": "2ca275f36ac1788b2acb60fb2b79cb06027198bc2ba6fb7e163efaedde98c297", - "https://deno.land/std@0.213.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", - "https://deno.land/std@0.213.0/path/_common/common.ts": "6157c7ec1f4db2b4a9a187efd6ce76dcaf1e61cfd49f87e40d4ea102818df031", - "https://deno.land/std@0.213.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", - "https://deno.land/std@0.213.0/path/_common/dirname.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.213.0/path/_common/format.ts": "92500e91ea5de21c97f5fe91e178bae62af524b72d5fcd246d6d60ae4bcada8b", - "https://deno.land/std@0.213.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", - "https://deno.land/std@0.213.0/path/_common/glob_to_reg_exp.ts": "2007aa87bed6eb2c8ae8381adcc3125027543d9ec347713c1ad2c68427330770", - "https://deno.land/std@0.213.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.213.0/path/_common/normalize_string.ts": "dfdf657a1b1a7db7999f7c575ee7e6b0551d9c20f19486c6c3f5ff428384c965", - "https://deno.land/std@0.213.0/path/_common/relative.ts": "faa2753d9b32320ed4ada0733261e3357c186e5705678d9dd08b97527deae607", - "https://deno.land/std@0.213.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", - "https://deno.land/std@0.213.0/path/_common/to_file_url.ts": "7f76adbc83ece1bba173e6e98a27c647712cab773d3f8cbe0398b74afc817883", - "https://deno.land/std@0.213.0/path/_interface.ts": "a1419fcf45c0ceb8acdccc94394e3e94f99e18cfd32d509aab514c8841799600", - "https://deno.land/std@0.213.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", - "https://deno.land/std@0.213.0/path/basename.ts": "5d341aadb7ada266e2280561692c165771d071c98746fcb66da928870cd47668", - "https://deno.land/std@0.213.0/path/common.ts": "03e52e22882402c986fe97ca3b5bb4263c2aa811c515ce84584b23bac4cc2643", - "https://deno.land/std@0.213.0/path/constants.ts": "0c206169ca104938ede9da48ac952de288f23343304a1c3cb6ec7625e7325f36", - "https://deno.land/std@0.213.0/path/dirname.ts": "85bd955bf31d62c9aafdd7ff561c4b5fb587d11a9a5a45e2b01aedffa4238a7c", - "https://deno.land/std@0.213.0/path/extname.ts": "593303db8ae8c865cbd9ceec6e55d4b9ac5410c1e276bfd3131916591b954441", - "https://deno.land/std@0.213.0/path/format.ts": "98fad25f1af7b96a48efb5b67378fcc8ed77be895df8b9c733b86411632162af", - "https://deno.land/std@0.213.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", - "https://deno.land/std@0.213.0/path/glob.ts": "04510962905d4b1513b44da9cb195914e0fa46c24359f6feaca20848d797dcb0", - "https://deno.land/std@0.213.0/path/glob_to_regexp.ts": "83c5fd36a8c86f5e72df9d0f45317f9546afa2ce39acaafe079d43a865aced08", - "https://deno.land/std@0.213.0/path/is_absolute.ts": "4791afc8bfd0c87f0526eaa616b0d16e7b3ab6a65b62942e50eac68de4ef67d7", - "https://deno.land/std@0.213.0/path/is_glob.ts": "a65f6195d3058c3050ab905705891b412ff942a292bcbaa1a807a74439a14141", - "https://deno.land/std@0.213.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", - "https://deno.land/std@0.213.0/path/join_globs.ts": "e9589869a33dc3982101898ee50903db918ca00ad2614dbe3934d597d7b1fbea", - "https://deno.land/std@0.213.0/path/mod.ts": "ffeaccb713dbe6c72e015b7c767f753f8ec5fbc3b621ff5eeee486ffc2c0ddda", - "https://deno.land/std@0.213.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", - "https://deno.land/std@0.213.0/path/normalize_glob.ts": "98ee8268fad271193603271c203ae973280b5abfbdd2cbca1053fd2af71869ca", - "https://deno.land/std@0.213.0/path/parse.ts": "65e8e285f1a63b714e19ef24b68f56e76934c3df0b6e65fd440d3991f4f8aefb", - "https://deno.land/std@0.213.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", - "https://deno.land/std@0.213.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", - "https://deno.land/std@0.213.0/path/posix/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.213.0/path/posix/constants.ts": "93481efb98cdffa4c719c22a0182b994e5a6aed3047e1962f6c2c75b7592bef1", - "https://deno.land/std@0.213.0/path/posix/dirname.ts": "6535d2bdd566118963537b9dda8867ba9e2a361015540dc91f5afbb65c0cce8b", - "https://deno.land/std@0.213.0/path/posix/extname.ts": "8d36ae0082063c5e1191639699e6f77d3acf501600a3d87b74943f0ae5327427", - "https://deno.land/std@0.213.0/path/posix/format.ts": "185e9ee2091a42dd39e2a3b8e4925370ee8407572cee1ae52838aed96310c5c1", - "https://deno.land/std@0.213.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", - "https://deno.land/std@0.213.0/path/posix/glob_to_regexp.ts": "54d3ff40f309e3732ab6e5b19d7111d2d415248bcd35b67a99defcbc1972e697", - "https://deno.land/std@0.213.0/path/posix/is_absolute.ts": "cebe561ad0ae294f0ce0365a1879dcfca8abd872821519b4fcc8d8967f888ede", - "https://deno.land/std@0.213.0/path/posix/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.213.0/path/posix/join.ts": "aef88d5fa3650f7516730865dbb951594d1a955b785e2450dbee93b8e32694f3", - "https://deno.land/std@0.213.0/path/posix/join_globs.ts": "ee2f4676c5b8a0dfa519da58b8ade4d1c4aa8dd3fe35619edec883ae9df1f8c9", - "https://deno.land/std@0.213.0/path/posix/mod.ts": "563a18c2b3ddc62f3e4a324ff0f583e819b8602a72ad880cb98c9e2e34f8db5b", - "https://deno.land/std@0.213.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", - "https://deno.land/std@0.213.0/path/posix/normalize_glob.ts": "65f0138fa518ef9ece354f32889783fc38cdf985fb02dcf1c3b14fa47d665640", - "https://deno.land/std@0.213.0/path/posix/parse.ts": "d5bac4eb21262ab168eead7e2196cb862940c84cee572eafedd12a0d34adc8fb", - "https://deno.land/std@0.213.0/path/posix/relative.ts": "3907d6eda41f0ff723d336125a1ad4349112cd4d48f693859980314d5b9da31c", - "https://deno.land/std@0.213.0/path/posix/resolve.ts": "bac20d9921beebbbb2b73706683b518b1d0c1b1da514140cee409e90d6b2913a", - "https://deno.land/std@0.213.0/path/posix/separator.ts": "c9ecae5c843170118156ac5d12dc53e9caf6a1a4c96fc8b1a0ab02dff5c847b0", - "https://deno.land/std@0.213.0/path/posix/to_file_url.ts": "7aa752ba66a35049e0e4a4be5a0a31ac6b645257d2e031142abb1854de250aaf", - "https://deno.land/std@0.213.0/path/posix/to_namespaced_path.ts": "28b216b3c76f892a4dca9734ff1cc0045d135532bfd9c435ae4858bfa5a2ebf0", - "https://deno.land/std@0.213.0/path/relative.ts": "ab739d727180ed8727e34ed71d976912461d98e2b76de3d3de834c1066667add", - "https://deno.land/std@0.213.0/path/resolve.ts": "a6f977bdb4272e79d8d0ed4333e3d71367cc3926acf15ac271f1d059c8494d8d", - "https://deno.land/std@0.213.0/path/separator.ts": "c6c890507f944a1f5cb7d53b8d638d6ce3cf0f34609c8d84a10c1eaa400b77a9", - "https://deno.land/std@0.213.0/path/to_file_url.ts": "88f049b769bce411e2d2db5bd9e6fd9a185a5fbd6b9f5ad8f52bef517c4ece1b", - "https://deno.land/std@0.213.0/path/to_namespaced_path.ts": "b706a4103b104cfadc09600a5f838c2ba94dbcdb642344557122dda444526e40", - "https://deno.land/std@0.213.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", - "https://deno.land/std@0.213.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", - "https://deno.land/std@0.213.0/path/windows/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.213.0/path/windows/constants.ts": "5afaac0a1f67b68b0a380a4ef391bf59feb55856aa8c60dfc01bd3b6abb813f5", - "https://deno.land/std@0.213.0/path/windows/dirname.ts": "33e421be5a5558a1346a48e74c330b8e560be7424ed7684ea03c12c21b627bc9", - "https://deno.land/std@0.213.0/path/windows/extname.ts": "165a61b00d781257fda1e9606a48c78b06815385e7d703232548dbfc95346bef", - "https://deno.land/std@0.213.0/path/windows/format.ts": "bbb5ecf379305b472b1082cd2fdc010e44a0020030414974d6029be9ad52aeb6", - "https://deno.land/std@0.213.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", - "https://deno.land/std@0.213.0/path/windows/glob_to_regexp.ts": "6dcd1242bd8907aa9660cbdd7c93446e6927b201112b0cba37ca5d80f81be51b", - "https://deno.land/std@0.213.0/path/windows/is_absolute.ts": "4a8f6853f8598cf91a835f41abed42112cebab09478b072e4beb00ec81f8ca8a", - "https://deno.land/std@0.213.0/path/windows/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.213.0/path/windows/join.ts": "e0b3356615c1a75c56ebb6a7311157911659e11fd533d80d724800126b761ac3", - "https://deno.land/std@0.213.0/path/windows/join_globs.ts": "ee2f4676c5b8a0dfa519da58b8ade4d1c4aa8dd3fe35619edec883ae9df1f8c9", - "https://deno.land/std@0.213.0/path/windows/mod.ts": "7d6062927bda47c47847ffb55d8f1a37b0383840aee5c7dfc93984005819689c", - "https://deno.land/std@0.213.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", - "https://deno.land/std@0.213.0/path/windows/normalize_glob.ts": "179c86ba89f4d3fe283d2addbe0607341f79ee9b1ae663abcfb3439db2e97810", - "https://deno.land/std@0.213.0/path/windows/parse.ts": "b9239edd892a06a06625c1b58425e199f018ce5649ace024d144495c984da734", - "https://deno.land/std@0.213.0/path/windows/relative.ts": "3e1abc7977ee6cc0db2730d1f9cb38be87b0ce4806759d271a70e4997fc638d7", - "https://deno.land/std@0.213.0/path/windows/resolve.ts": "75b2e3e1238d840782cee3d8864d82bfaa593c7af8b22f19c6422cf82f330ab3", - "https://deno.land/std@0.213.0/path/windows/separator.ts": "e51c5522140eff4f8402617c5c68a201fdfa3a1a8b28dc23587cff931b665e43", - "https://deno.land/std@0.213.0/path/windows/to_file_url.ts": "1cd63fd35ec8d1370feaa4752eccc4cc05ea5362a878be8dc7db733650995484", - "https://deno.land/std@0.213.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", - "https://deno.land/std@0.213.0/semver/_constants.ts": "90879e4ea94a34c49c8ecea3d9c06e13e61ecb7caca80c8f289139440ca9835a", - "https://deno.land/std@0.213.0/semver/_shared.ts": "8d44684775cde4a64bd6bdb99b51f3bc59ed65f10af78ca136cc2eab3f6716f1", - "https://deno.land/std@0.213.0/semver/comparator_format.ts": "41f00b1275923317fa3f7c39df58fa7f62f541b0f231134c1655bc8a42965393", - "https://deno.land/std@0.213.0/semver/comparator_intersects.ts": "dc231c5ebded8e88b8355a33edfbd228e36a08384848d73c15d394833384ee8f", - "https://deno.land/std@0.213.0/semver/comparator_max.ts": "2038cded7cce886e2c81926acb97f625908707f2d66864b603493b9674e2bd58", - "https://deno.land/std@0.213.0/semver/comparator_min.ts": "453d3e449aaee4d59acc9b36fe77eddfcb0c4097ffe7efe11eb2a04a64cc520d", - "https://deno.land/std@0.213.0/semver/compare.ts": "e507146fd997d33ae5abc2675e8b24a1ea84b50ddc9918cb8ddc1b1911c97011", - "https://deno.land/std@0.213.0/semver/constants.ts": "52dde17ff45479fbdc6b3a7198224e02a2deb9cb4f99ac6592c9727173f13a83", - "https://deno.land/std@0.213.0/semver/difference.ts": "be4f01b7745406408a16b708185a48c1c652cc87e0244b12a5ca75c5585db668", - "https://deno.land/std@0.213.0/semver/eq.ts": "7aaffb5d841dee589fa81e18d54fb4aec065feaa701f58214f89e17edbcf5da5", - "https://deno.land/std@0.213.0/semver/equals.ts": "8b9b18260c9a55feee9d3f9250fba345be922380f2e8f8009e455c394ce5e81d", - "https://deno.land/std@0.213.0/semver/format.ts": "26d3a357ac5abd73dee0fe7dbbac6107fbdce0a844370c7b1bcb673c92e46bf6", - "https://deno.land/std@0.213.0/semver/format_range.ts": "d472a7f743cf0290beebed90d1e6d8f1b5e93d91c03f3503e869f18931acd156", - "https://deno.land/std@0.213.0/semver/greater_or_equal.ts": "89c26f68070896944676eb9704cbb617febc6ed693720282741d6859c3d1fe80", - "https://deno.land/std@0.213.0/semver/greater_than.ts": "d8c4a227cd28ea80a1de9c80215d7f3f95786fe1b196f0cb5ec91d6567adad27", - "https://deno.land/std@0.213.0/semver/gt.ts": "e9a7b3e80eaf07fa949daf2622ed0be6f863d972f744557107fbfce7d6786624", - "https://deno.land/std@0.213.0/semver/gte.ts": "2f6deabbeb5c716d916d80bf6c0cfabbb00e0eb12c34420f2cf96dbb85fdc0f7", - "https://deno.land/std@0.213.0/semver/gtr.ts": "50cde7d0a05416f2a8b9d5125848e141eba474755d8c0e852ab2dfd22443ad2c", - "https://deno.land/std@0.213.0/semver/increment.ts": "427a043be71d6481e45c1a3939b955e800924d70779cb297b872d9cbf9f0e46d", - "https://deno.land/std@0.213.0/semver/is_comparator.ts": "895e7ecff33d23d7a465074a76b2341eda430f84c4817199f7492c5393e2e54f", - "https://deno.land/std@0.213.0/semver/is_semver.ts": "57914027d6141e593eb04418aaabbfd6f4562a1c53c6c33a1743fa50ada8d849", - "https://deno.land/std@0.213.0/semver/is_semver_range.ts": "1e4602ed91d5d7228e63765ab4d28042ee358304155a0eeb562871d030cabaee", - "https://deno.land/std@0.213.0/semver/less_or_equal.ts": "7dbf8190f37f3281048c30cf11e072a7af18685534ae88d295baa170b485bd90", - "https://deno.land/std@0.213.0/semver/less_than.ts": "b0c7902c54cecadcc7c1c80afc2f6a0f1bf0b3f53c8d2bfd11f01a3a414cccfe", - "https://deno.land/std@0.213.0/semver/lt.ts": "42b40467018e72e6637c68dde5439960a2db366e1edd730a8bb60a432d30f703", - "https://deno.land/std@0.213.0/semver/lte.ts": "678b9919c5abe85a7917f6815e74a323788f4a81f5da64d329b34cb32bb788c6", - "https://deno.land/std@0.213.0/semver/ltr.ts": "57ee19e33c90883d953e22255c0e02bfc8f682c610e32aab0a76db45a6cd159c", - "https://deno.land/std@0.213.0/semver/max_satisfying.ts": "1008802c70eaa6d13a9455f0bda7fcfbd0dd53d837d87930b8520411670d2766", - "https://deno.land/std@0.213.0/semver/min_satisfying.ts": "ad035539bb23c3d9545d5e9508123cd84be4ec47331acc23574795a3ae6c460e", - "https://deno.land/std@0.213.0/semver/mod.ts": "6c8c5aba6f9c1499e5e2bc1b1272d13157ed1f438296a095a14b8d321e805b59", - "https://deno.land/std@0.213.0/semver/neq.ts": "8c8c474249aa43331cc3d2a93ff0e824792f4fe823b674c79c50b778b06331a9", - "https://deno.land/std@0.213.0/semver/not_equals.ts": "17147a6f68b9d14f4643c1e2150378ccf6954710309f9618f75b411752a8e13d", - "https://deno.land/std@0.213.0/semver/outside.ts": "9953ed5935a1bc79b9d8e6258fa1717281a33bd5501f2ee0bc0fe6ed80b310b9", - "https://deno.land/std@0.213.0/semver/parse.ts": "2ba215c9aa3c71be753570724cfad75cc81972f0026dc81836ea3d1986112066", - "https://deno.land/std@0.213.0/semver/parse_comparator.ts": "94accf91b8c68c083a2fb932ff3afa81fb01cd5ce007d4e679f59ec86be3a132", - "https://deno.land/std@0.213.0/semver/parse_range.ts": "3242441370743df07919ca340be719acd9655311fa6a18e115761dfe562fc5ca", - "https://deno.land/std@0.213.0/semver/range_format.ts": "1d9f3a1b8176be0e49698929143da0e6a1b84f2581eb750e2cf17d7a0b6fac6c", - "https://deno.land/std@0.213.0/semver/range_intersects.ts": "461ce0045852511bbfe9204483ddbee897c4fb5557fc707e055edf98f15d5d30", - "https://deno.land/std@0.213.0/semver/range_max.ts": "c0eba7c51f462470bc3822227df57e0153deeacf47a4c40d5c27790fddd6cb92", - "https://deno.land/std@0.213.0/semver/range_min.ts": "37b9664103d5202c91f6228e8d7ac4ea508d7867f40a686dbe211e2a57f3efff", - "https://deno.land/std@0.213.0/semver/sort.ts": "b97c4f392cf688e27d304dc437b1a4d7278fbf5d2554ad6e51f64db6cc405c09", - "https://deno.land/std@0.213.0/semver/test_comparator.ts": "85476901a71fe8a09520902d85e1c573ce60a353846f8bbf6667e9518686591b", - "https://deno.land/std@0.213.0/semver/test_range.ts": "88de9dab0d61c82fd0861d50eabe72f0f27f29f3df4d50e83f36e09c1c3cd8a6", - "https://deno.land/std@0.213.0/semver/types.ts": "c85eb042ba22c69d62194ea7e535c3c104d0e9af75316b6315379101b4a7ef66", - "https://deno.land/std@0.213.0/streams/_common.ts": "4f9f2958d853b9a456be033631dabb7519daa68ee4d02caf53e2ecbffaf5805f", - "https://deno.land/std@0.213.0/streams/buffer.ts": "71120cceddacab2eb47a2f2908c64e82e79ac089506649bd41412042fcc97773", - "https://deno.land/std@0.213.0/streams/byte_slice_stream.ts": "5bbdcadb118390affa9b3d0a0f73ef8e83754f59bb89df349add669dd9369713", - "https://deno.land/std@0.213.0/streams/copy.ts": "442d1d647ce7daf350dd989797dd2eea51ec8ad3b3a6851fcdaf7ef44a387c71", - "https://deno.land/std@0.213.0/streams/delimiter_stream.ts": "45271f9db844e8e501a6df75b946cd2a5e01663de0e9ccf26b92996983e0cdbe", - "https://deno.land/std@0.213.0/streams/early_zip_readable_streams.ts": "21f5cf6dd36381c6a50c31a7727b5bd219f6382bbb7a413418595c3e466c4d14", - "https://deno.land/std@0.213.0/streams/iterate_reader.ts": "bd79a18de211449e5140e8f705e195c3e0e79020d752a64cd0a1d4b829b14633", - "https://deno.land/std@0.213.0/streams/limited_bytes_transform_stream.ts": "b22a45a337374e863c4eb1867ec6b8ad3e68620a6c52fe837746060ea610e6f1", - "https://deno.land/std@0.213.0/streams/limited_transform_stream.ts": "4c47da5ca38a30fa9f33b0f1a61d4548e7f52a9a58c294b0f430f680e44cc543", - "https://deno.land/std@0.213.0/streams/merge_readable_streams.ts": "9c541012e130d6e36086b6b8c197078a6053f5446367e33f233b71858a2c03cc", - "https://deno.land/std@0.213.0/streams/mod.ts": "cbe5466def4eb5e44a628df7be4700f7e2f88ac8b7d82cf3d769cfef5233aca4", - "https://deno.land/std@0.213.0/streams/read_all.ts": "b39b7d56b3ef9c0f78bbde82244ab3663b4adc1dee1be6ec97c0117f033c884c", - "https://deno.land/std@0.213.0/streams/readable_stream_from_reader.ts": "4289a63836f73901441c1879f2be76eea2a983920f4b10a4a9b8a6d8c29ece56", - "https://deno.land/std@0.213.0/streams/reader_from_iterable.ts": "cf7785e518beaaba1dfb3ff4ae854bb76499bbc1f013910af6402ec7643bf769", - "https://deno.land/std@0.213.0/streams/reader_from_stream_reader.ts": "f981cf94a42133e5c6ace8c3b500565750806c4fc9802262ee63746abc528b0d", - "https://deno.land/std@0.213.0/streams/text_delimiter_stream.ts": "ef0d7898cea4a9fff850173ed9f3d2cf9e42ba858d8175bd89fe851c8dfa6a6e", - "https://deno.land/std@0.213.0/streams/text_line_stream.ts": "21f33d3922e019ec1a1676474beb543929cb564ec99b69cd2654e029e0f45bd5", - "https://deno.land/std@0.213.0/streams/to_array_buffer.ts": "1a9c07c4a396ce557ab205c44415815ab13b614fed94a12f62b80f8e650c726d", - "https://deno.land/std@0.213.0/streams/to_blob.ts": "bf5daaae50fa8f57e0c8bfd7474ebac16ac09e130e3d01ef2947ae5153912b4a", - "https://deno.land/std@0.213.0/streams/to_json.ts": "b6a908d0da7cd30956e5fbbfa7460747e50b8f307d1041282ed6fe9070d579ee", - "https://deno.land/std@0.213.0/streams/to_text.ts": "6f93593bdfc2cea5cca39755ea5caf0d4092580c0a713dfe04a1e85c60df331f", - "https://deno.land/std@0.213.0/streams/to_transform_stream.ts": "4c4836455ef89bab9ece55975ee3a819f07d3d8b0e43101ec7f4ed033c8a2b61", - "https://deno.land/std@0.213.0/streams/writable_stream_from_writer.ts": "62f2712d3a7bebd981fca8bd5140192c37450f9c4aa94283f7ca833e46bc7485", - "https://deno.land/std@0.213.0/streams/write_all.ts": "3170620e750c1eaf43ac9e216669f55df762e2dc827d8b8a920b4f64a803c362", - "https://deno.land/std@0.213.0/streams/writer_from_stream_writer.ts": "b0e39ef607dfdc5abdfb627edf61a9672809463e2bb022afcbaf0cd006c40feb", - "https://deno.land/std@0.213.0/streams/zip_readable_streams.ts": "53eb10d7557539b489bd858907aab6dd28247f074b3446573801de3150cb932e", - "https://deno.land/std@0.213.0/url/_strip.ts": "928fe9af16d7c5bf24816d1e90d84bfe702f3e059f9d63509b5a37087e947800", - "https://deno.land/std@0.213.0/url/basename.ts": "a2e6ef35d44da3764551cbc61cdd39004c778aaedc7a6c2559e571f018c42daa", - "https://deno.land/std@0.213.0/url/dirname.ts": "0915864aac7d2d0413c90dff7841b18b29c83ed102fa340e760af1fb2c0ad26c", - "https://deno.land/std@0.213.0/url/extname.ts": "b247eac636161c5e263220c6e5116ed10e0c1702b5e90fad258a88c0b3b6bf98", - "https://deno.land/std@0.213.0/url/join.ts": "00c7e9088cafaa24963ce4081119e58b3afe2c58f033701383f359ea02620dd2", - "https://deno.land/std@0.213.0/url/mod.ts": "e2621f6a0db6fdbe7fbbd240064095bb203014657e5e1ab81db1c44d80dce6c9", - "https://deno.land/std@0.213.0/url/normalize.ts": "6328c75df0fab300f74bc4a1c255062a0db882240e15ab646606d0009e7e40d7", - "https://deno.land/std@0.219.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", - "https://deno.land/std@0.219.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", - "https://deno.land/std@0.219.0/bytes/concat.ts": "9cac3b4376afbef98ff03588eb3cf948e0d1eb6c27cfe81a7651ab6dd3adc54a", - "https://deno.land/std@0.219.0/bytes/copy.ts": "f29c03168853720dfe82eaa57793d0b9e3543ebfe5306684182f0f1e3bfd422a", - "https://deno.land/std@0.219.0/cli/mod.ts": "58f75df8ce43fb8266bdd26ec4465f73176b910316d72eb8e090b6a0549391da", - "https://deno.land/std@0.219.0/cli/parse_args.ts": "475b3edc8105c9acea09b83b100afc383d7bddbba9828da3f0c4adced006607a", - "https://deno.land/std@0.219.0/cli/prompt_secret.ts": "831cfb4efa83bfaf9bfd320ddbfd619e03cd87e81260909f93ca199ebe214ec2", - "https://deno.land/std@0.219.0/cli/spinner.ts": "005395c4e00b1086bfa2ae44e8c9413c1231c4741a08a55aa0d3c9ea267cecb5", - "https://deno.land/std@0.219.0/fmt/colors.ts": "d239d84620b921ea520125d778947881f62c50e78deef2657073840b8af9559a", - "https://deno.land/std@0.219.0/fmt/duration.ts": "606f8c2bbbadd7f7a122868a478c9ad31f2e66b1e19e0a9769655585414fced6", - "https://deno.land/std@0.219.0/fs/_create_walk_entry.ts": "5d9d2aaec05bcf09a06748b1684224d33eba7a4de24cf4cf5599991ca6b5b412", - "https://deno.land/std@0.219.0/fs/_get_file_info_type.ts": "da7bec18a7661dba360a1db475b826b18977582ce6fc9b25f3d4ee0403fe8cbd", - "https://deno.land/std@0.219.0/fs/_is_same_path.ts": "709c95868345fea051c58b9e96af95cff94e6ae98dfcff2b66dee0c212c4221f", - "https://deno.land/std@0.219.0/fs/_is_subdir.ts": "c68b309d46cc8568ed83c000f608a61bbdba0943b7524e7a30f9e450cf67eecd", - "https://deno.land/std@0.219.0/fs/_to_path_string.ts": "29bfc9c6c112254961d75cbf6ba814d6de5349767818eb93090cecfa9665591e", - "https://deno.land/std@0.219.0/fs/copy.ts": "dc0f68c4b6c3b090bfdb909387e309f6169b746bd713927c9507c9ef545d71f6", - "https://deno.land/std@0.219.0/fs/empty_dir.ts": "4f01e6d56e2aa8d90ad60f20bc25601f516b00f6c3044cdf6863a058791d91aa", - "https://deno.land/std@0.219.0/fs/ensure_dir.ts": "dffff68de0d10799b5aa9e39dec4e327e12bbd29e762292193684542648c4aeb", - "https://deno.land/std@0.219.0/fs/ensure_file.ts": "ac5cfde94786b0284d2c8e9f7f9425269bea1b2140612b4aea1f20b508870f59", - "https://deno.land/std@0.219.0/fs/ensure_link.ts": "d42af2edefeaa9817873ec6e46dc5d209ac4d744f8c69c5ecc2dffade78465b6", - "https://deno.land/std@0.219.0/fs/ensure_symlink.ts": "1f64d7bdd191f7d9b71264e191902fcae5cec86305d54659897944caea70f814", - "https://deno.land/std@0.219.0/fs/eol.ts": "c9807291f78361d49fd986a9be04654610c615c5e2ec63d748976197d30ff206", - "https://deno.land/std@0.219.0/fs/exists.ts": "d2757ef764eaf5c6c5af7228e8447db2de42ab084a2dae540097f905723d83f5", - "https://deno.land/std@0.219.0/fs/expand_glob.ts": "a1ce02b05ed7b96985b0665067c9f1018f3f2ade7ee0fb0d629231050260b158", - "https://deno.land/std@0.219.0/fs/mod.ts": "107f5afa4424c2d3ce2f7e9266173198da30302c69af662c720115fe504dc5ee", - "https://deno.land/std@0.219.0/fs/move.ts": "39e0d7ccb88a566d20b949712020e766b15ef1ec19159573d11f949bd677909c", - "https://deno.land/std@0.219.0/fs/walk.ts": "78e1d01a9f75715614bf8d6e58bd77d9fafb1222c41194e607cd3849d7a0e771", - "https://deno.land/std@0.219.0/io/_common.ts": "36705cdb4dfcd338d6131bca1b16e48a4d5bf0d1dada6ce397268e88c17a5835", - "https://deno.land/std@0.219.0/io/_constants.ts": "3c7ad4695832e6e4a32e35f218c70376b62bc78621ef069a4a0a3d55739f8856", - "https://deno.land/std@0.219.0/io/buffer.ts": "4d1f805f350433e418002accec798bc6c33ce18f614afa65f987c202d7b2234e", - "https://deno.land/std@0.219.0/io/iterate_reader.ts": "1e5e4fea22d8965afb7df4ee9ab9adda0a0fc581adbea31bc2f2d25453f8a6e9", - "https://deno.land/std@0.219.0/io/reader_from_stream_reader.ts": "a75bbc93f39df8b0e372cc1fbdc416a7cbf2a39fc4c09ddb057f1241100191c5", - "https://deno.land/std@0.219.0/io/to_readable_stream.ts": "ed03a44a1ec1cc55a85a857acf6cac472035298f6f3b6207ea209f93b4aefb39", - "https://deno.land/std@0.219.0/io/to_writable_stream.ts": "ef422e0425963c8a1e0481674e66c3023da50f0acbe5ef51ec9789efc3c1e2ed", - "https://deno.land/std@0.219.0/io/types.ts": "acecb3074c730b5ff487ba4fe9ce51e67bd982aa07c95e5f5679b7b2f24ad129", - "https://deno.land/std@0.219.0/io/write_all.ts": "24aac2312bb21096ae3ae0b102b22c26164d3249dff96dbac130958aa736f038", - "https://deno.land/std@0.219.0/path/_common/assert_path.ts": "dbdd757a465b690b2cc72fc5fb7698c51507dec6bfafce4ca500c46b76ff7bd8", - "https://deno.land/std@0.219.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", - "https://deno.land/std@0.219.0/path/_common/common.ts": "ef73c2860694775fe8ffcbcdd387f9f97c7a656febf0daa8c73b56f4d8a7bd4c", - "https://deno.land/std@0.219.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", - "https://deno.land/std@0.219.0/path/_common/dirname.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.219.0/path/_common/format.ts": "92500e91ea5de21c97f5fe91e178bae62af524b72d5fcd246d6d60ae4bcada8b", - "https://deno.land/std@0.219.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", - "https://deno.land/std@0.219.0/path/_common/glob_to_reg_exp.ts": "6cac16d5c2dc23af7d66348a7ce430e5de4e70b0eede074bdbcf4903f4374d8d", - "https://deno.land/std@0.219.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.219.0/path/_common/normalize_string.ts": "dfdf657a1b1a7db7999f7c575ee7e6b0551d9c20f19486c6c3f5ff428384c965", - "https://deno.land/std@0.219.0/path/_common/relative.ts": "faa2753d9b32320ed4ada0733261e3357c186e5705678d9dd08b97527deae607", - "https://deno.land/std@0.219.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", - "https://deno.land/std@0.219.0/path/_common/to_file_url.ts": "7f76adbc83ece1bba173e6e98a27c647712cab773d3f8cbe0398b74afc817883", - "https://deno.land/std@0.219.0/path/_interface.ts": "a1419fcf45c0ceb8acdccc94394e3e94f99e18cfd32d509aab514c8841799600", - "https://deno.land/std@0.219.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", - "https://deno.land/std@0.219.0/path/basename.ts": "5d341aadb7ada266e2280561692c165771d071c98746fcb66da928870cd47668", - "https://deno.land/std@0.219.0/path/common.ts": "03e52e22882402c986fe97ca3b5bb4263c2aa811c515ce84584b23bac4cc2643", - "https://deno.land/std@0.219.0/path/constants.ts": "0c206169ca104938ede9da48ac952de288f23343304a1c3cb6ec7625e7325f36", - "https://deno.land/std@0.219.0/path/dirname.ts": "85bd955bf31d62c9aafdd7ff561c4b5fb587d11a9a5a45e2b01aedffa4238a7c", - "https://deno.land/std@0.219.0/path/extname.ts": "593303db8ae8c865cbd9ceec6e55d4b9ac5410c1e276bfd3131916591b954441", - "https://deno.land/std@0.219.0/path/format.ts": "42a2f3201343df77061207e6aaf78c95bafce7f711dcb7fe1e5840311c505778", - "https://deno.land/std@0.219.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", - "https://deno.land/std@0.219.0/path/glob_to_regexp.ts": "7f30f0a21439cadfdae1be1bf370880b415e676097fda584a63ce319053b5972", - "https://deno.land/std@0.219.0/path/is_absolute.ts": "4791afc8bfd0c87f0526eaa616b0d16e7b3ab6a65b62942e50eac68de4ef67d7", - "https://deno.land/std@0.219.0/path/is_glob.ts": "a65f6195d3058c3050ab905705891b412ff942a292bcbaa1a807a74439a14141", - "https://deno.land/std@0.219.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", - "https://deno.land/std@0.219.0/path/join_globs.ts": "5b3bf248b93247194f94fa6947b612ab9d3abd571ca8386cf7789038545e54a0", - "https://deno.land/std@0.219.0/path/mod.ts": "2821a1bb3a4148a0ffe79c92aa41aa9319fef73c6d6f5178f52b2c720d3eb02d", - "https://deno.land/std@0.219.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", - "https://deno.land/std@0.219.0/path/normalize_glob.ts": "cc89a77a7d3b1d01053b9dcd59462b75482b11e9068ae6c754b5cf5d794b374f", - "https://deno.land/std@0.219.0/path/parse.ts": "65e8e285f1a63b714e19ef24b68f56e76934c3df0b6e65fd440d3991f4f8aefb", - "https://deno.land/std@0.219.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", - "https://deno.land/std@0.219.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", - "https://deno.land/std@0.219.0/path/posix/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.219.0/path/posix/constants.ts": "93481efb98cdffa4c719c22a0182b994e5a6aed3047e1962f6c2c75b7592bef1", - "https://deno.land/std@0.219.0/path/posix/dirname.ts": "6535d2bdd566118963537b9dda8867ba9e2a361015540dc91f5afbb65c0cce8b", - "https://deno.land/std@0.219.0/path/posix/extname.ts": "8d36ae0082063c5e1191639699e6f77d3acf501600a3d87b74943f0ae5327427", - "https://deno.land/std@0.219.0/path/posix/format.ts": "185e9ee2091a42dd39e2a3b8e4925370ee8407572cee1ae52838aed96310c5c1", - "https://deno.land/std@0.219.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", - "https://deno.land/std@0.219.0/path/posix/glob_to_regexp.ts": "76f012fcdb22c04b633f536c0b9644d100861bea36e9da56a94b9c589a742e8f", - "https://deno.land/std@0.219.0/path/posix/is_absolute.ts": "cebe561ad0ae294f0ce0365a1879dcfca8abd872821519b4fcc8d8967f888ede", - "https://deno.land/std@0.219.0/path/posix/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.219.0/path/posix/join.ts": "744fadcbee7047688696455c7cbb368a9625ffde67fc3058a61c98948fcd04de", - "https://deno.land/std@0.219.0/path/posix/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", - "https://deno.land/std@0.219.0/path/posix/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", - "https://deno.land/std@0.219.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", - "https://deno.land/std@0.219.0/path/posix/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", - "https://deno.land/std@0.219.0/path/posix/parse.ts": "0b1fc4cb890dbb699ec1d2c232d274843b4a7142e1ad976b69fe51c954eb6080", - "https://deno.land/std@0.219.0/path/posix/relative.ts": "3907d6eda41f0ff723d336125a1ad4349112cd4d48f693859980314d5b9da31c", - "https://deno.land/std@0.219.0/path/posix/resolve.ts": "08b699cfeee10cb6857ccab38fa4b2ec703b0ea33e8e69964f29d02a2d5257cf", - "https://deno.land/std@0.219.0/path/posix/to_file_url.ts": "7aa752ba66a35049e0e4a4be5a0a31ac6b645257d2e031142abb1854de250aaf", - "https://deno.land/std@0.219.0/path/posix/to_namespaced_path.ts": "28b216b3c76f892a4dca9734ff1cc0045d135532bfd9c435ae4858bfa5a2ebf0", - "https://deno.land/std@0.219.0/path/relative.ts": "ab739d727180ed8727e34ed71d976912461d98e2b76de3d3de834c1066667add", - "https://deno.land/std@0.219.0/path/resolve.ts": "a6f977bdb4272e79d8d0ed4333e3d71367cc3926acf15ac271f1d059c8494d8d", - "https://deno.land/std@0.219.0/path/to_file_url.ts": "88f049b769bce411e2d2db5bd9e6fd9a185a5fbd6b9f5ad8f52bef517c4ece1b", - "https://deno.land/std@0.219.0/path/to_namespaced_path.ts": "b706a4103b104cfadc09600a5f838c2ba94dbcdb642344557122dda444526e40", - "https://deno.land/std@0.219.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", - "https://deno.land/std@0.219.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", - "https://deno.land/std@0.219.0/path/windows/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.219.0/path/windows/constants.ts": "5afaac0a1f67b68b0a380a4ef391bf59feb55856aa8c60dfc01bd3b6abb813f5", - "https://deno.land/std@0.219.0/path/windows/dirname.ts": "33e421be5a5558a1346a48e74c330b8e560be7424ed7684ea03c12c21b627bc9", - "https://deno.land/std@0.219.0/path/windows/extname.ts": "165a61b00d781257fda1e9606a48c78b06815385e7d703232548dbfc95346bef", - "https://deno.land/std@0.219.0/path/windows/format.ts": "bbb5ecf379305b472b1082cd2fdc010e44a0020030414974d6029be9ad52aeb6", - "https://deno.land/std@0.219.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", - "https://deno.land/std@0.219.0/path/windows/glob_to_regexp.ts": "e45f1f89bf3fc36f94ab7b3b9d0026729829fabc486c77f414caebef3b7304f8", - "https://deno.land/std@0.219.0/path/windows/is_absolute.ts": "4a8f6853f8598cf91a835f41abed42112cebab09478b072e4beb00ec81f8ca8a", - "https://deno.land/std@0.219.0/path/windows/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.219.0/path/windows/join.ts": "8d03530ab89195185103b7da9dfc6327af13eabdcd44c7c63e42e27808f50ecf", - "https://deno.land/std@0.219.0/path/windows/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", - "https://deno.land/std@0.219.0/path/windows/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", - "https://deno.land/std@0.219.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", - "https://deno.land/std@0.219.0/path/windows/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", - "https://deno.land/std@0.219.0/path/windows/parse.ts": "dbdfe2bc6db482d755b5f63f7207cd019240fcac02ad2efa582adf67ff10553a", - "https://deno.land/std@0.219.0/path/windows/relative.ts": "3e1abc7977ee6cc0db2730d1f9cb38be87b0ce4806759d271a70e4997fc638d7", - "https://deno.land/std@0.219.0/path/windows/resolve.ts": "8dae1dadfed9d46ff46cc337c9525c0c7d959fb400a6308f34595c45bdca1972", - "https://deno.land/std@0.219.0/path/windows/to_file_url.ts": "40e560ee4854fe5a3d4d12976cef2f4e8914125c81b11f1108e127934ced502e", - "https://deno.land/std@0.219.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", - "https://deno.land/std@0.219.0/semver/_constants.ts": "5ef89c5f33e6095546ae3e57920592feefcb8372d4cc05542f6bf15a1977e3c9", - "https://deno.land/std@0.219.0/semver/_shared.ts": "5c53a675225cba9ad74ae2e17c124e333728fc2b551a13e8a32b99433b90c1c2", - "https://deno.land/std@0.219.0/semver/can_parse.ts": "d4a26f74be078f3ab10293b07bf022021a2f362b3e21b58422c214e7268110b2", - "https://deno.land/std@0.219.0/semver/compare.ts": "e8871844a35cc8fe16e883c16e5237e06a93aa4830ae10d06501abe63586fc57", - "https://deno.land/std@0.219.0/semver/constants.ts": "a0daa58502949654af044928f86288d8b27bd1880218e9faba7733ec0bde63ab", - "https://deno.land/std@0.219.0/semver/difference.ts": "be4f01b7745406408a16b708185a48c1c652cc87e0244b12a5ca75c5585db668", - "https://deno.land/std@0.219.0/semver/equals.ts": "8b9b18260c9a55feee9d3f9250fba345be922380f2e8f8009e455c394ce5e81d", - "https://deno.land/std@0.219.0/semver/format.ts": "26d3a357ac5abd73dee0fe7dbbac6107fbdce0a844370c7b1bcb673c92e46bf6", - "https://deno.land/std@0.219.0/semver/format_range.ts": "6ad2d0c27aac63dfb7efca6286a6ab7742accfb986cc53662047740f17dacfe5", - "https://deno.land/std@0.219.0/semver/greater_or_equal.ts": "89c26f68070896944676eb9704cbb617febc6ed693720282741d6859c3d1fe80", - "https://deno.land/std@0.219.0/semver/greater_than.ts": "d8c4a227cd28ea80a1de9c80215d7f3f95786fe1b196f0cb5ec91d6567adad27", - "https://deno.land/std@0.219.0/semver/increment.ts": "427a043be71d6481e45c1a3939b955e800924d70779cb297b872d9cbf9f0e46d", - "https://deno.land/std@0.219.0/semver/is_range.ts": "15dd9a8d6a8dee56dea6799d8c8210e06c0a38cc1a9aa6152aeea39ce45e2111", - "https://deno.land/std@0.219.0/semver/is_semver.ts": "57914027d6141e593eb04418aaabbfd6f4562a1c53c6c33a1743fa50ada8d849", - "https://deno.land/std@0.219.0/semver/less_or_equal.ts": "7dbf8190f37f3281048c30cf11e072a7af18685534ae88d295baa170b485bd90", - "https://deno.land/std@0.219.0/semver/less_than.ts": "b0c7902c54cecadcc7c1c80afc2f6a0f1bf0b3f53c8d2bfd11f01a3a414cccfe", - "https://deno.land/std@0.219.0/semver/max_satisfying.ts": "03e5182a7424c308ddbb410e4b927da0dabc4e07d4b5a72f7e9b26fb18a02152", - "https://deno.land/std@0.219.0/semver/min_satisfying.ts": "b6fadc9af17278289481c416e1eb135614f88063f4fc2b7b72b43eb3baa2f08f", - "https://deno.land/std@0.219.0/semver/mod.ts": "6e1f8854cec50c027037a597d3dd54af72e063f763ec0cbc4ea1e534a627ffae", - "https://deno.land/std@0.219.0/semver/not_equals.ts": "17147a6f68b9d14f4643c1e2150378ccf6954710309f9618f75b411752a8e13d", - "https://deno.land/std@0.219.0/semver/parse.ts": "b64052ff8ce0b0bba9ed97b835a224c828fc7ad227585c3e8c2bac72a07bf572", - "https://deno.land/std@0.219.0/semver/parse_range.ts": "5190afffc90cc14410ce2478fb81ed83b55d7e96b6fbbd69fc715c457082ec94", - "https://deno.land/std@0.219.0/semver/range_intersects.ts": "2c358f7c27b51960a9889be5462ec1cac44feeb5e40041a5c5a03700c0ddc017", - "https://deno.land/std@0.219.0/semver/range_max.ts": "4c43d018841ba67d018e515f0aef32658dab611a39fdc74e31b1e48709be281c", - "https://deno.land/std@0.219.0/semver/range_min.ts": "37c5e3dac7bd63812ae249add9ea815a351826f510d2baf391c225d1d8272d17", - "https://deno.land/std@0.219.0/semver/test_range.ts": "72ba2af827e4ad94db9a29e22e86cbec9b3f8519fc36fd6ce0d4308717536c70", - "https://deno.land/std@0.219.0/semver/try_parse.ts": "7e2a3594212445d9d6f6154f02288d66a0c0b79ce3e859c41f3d47e29dfa439a", - "https://deno.land/std@0.219.0/semver/try_parse_range.ts": "4f211f0ff4f5fdaa85622ab96c360123bbcf0e5a91a57eb7a8258af6b7a3c704", - "https://deno.land/std@0.219.0/semver/types.ts": "13e1e0c64a4ac76f0add74afee6240c92a7dba184e63e0bd4cb456afed8c7291", - "https://deno.land/std@0.219.0/streams/_common.ts": "948735ef6d140cd6916dca861197b88fc57db52c2f923c392b7a14033d8fed4b", - "https://deno.land/std@0.219.0/streams/buffer.ts": "e012de72a53ad17c56512488e9afb6f4b6ed046b32fc1415ae7a4e6fc0efce38", - "https://deno.land/std@0.219.0/streams/byte_slice_stream.ts": "5bbdcadb118390affa9b3d0a0f73ef8e83754f59bb89df349add669dd9369713", - "https://deno.land/std@0.219.0/streams/delimiter_stream.ts": "4e4050740ff27a8824defa6c96126229ef9d794c4ace4ef9cabb10b5ad4a5d14", - "https://deno.land/std@0.219.0/streams/early_zip_readable_streams.ts": "21f5cf6dd36381c6a50c31a7727b5bd219f6382bbb7a413418595c3e466c4d14", - "https://deno.land/std@0.219.0/streams/iterate_reader.ts": "a50bed95514736c3c554e4c69ea2d8d2699252e4e74507769999d22c3886c777", - "https://deno.land/std@0.219.0/streams/limited_bytes_transform_stream.ts": "b22a45a337374e863c4eb1867ec6b8ad3e68620a6c52fe837746060ea610e6f1", - "https://deno.land/std@0.219.0/streams/limited_transform_stream.ts": "4c47da5ca38a30fa9f33b0f1a61d4548e7f52a9a58c294b0f430f680e44cc543", - "https://deno.land/std@0.219.0/streams/merge_readable_streams.ts": "73eed8ff54c9111b8b974b11a5a11c1ed0b7800e0157c39277ccac3ed14721e2", - "https://deno.land/std@0.219.0/streams/mod.ts": "d56624832b9649b680c74ab9c77e746e8be81ae1a24756cc04623e25a0d43ce9", - "https://deno.land/std@0.219.0/streams/readable_stream_from_reader.ts": "4289a63836f73901441c1879f2be76eea2a983920f4b10a4a9b8a6d8c29ece56", - "https://deno.land/std@0.219.0/streams/reader_from_iterable.ts": "82f1ecef32ec70c7841ca2a54b09c73167d940f0578bec91e874bb8cd42ba8f3", - "https://deno.land/std@0.219.0/streams/reader_from_stream_reader.ts": "dda702bd365a133be8bdbc5a1ba96c67b350c3504410632f3a833895bfc7bae3", - "https://deno.land/std@0.219.0/streams/text_delimiter_stream.ts": "94dfc900204e306496c1b58c80473db57b6097afdcb8ea9eaff453a193a659f1", - "https://deno.land/std@0.219.0/streams/text_line_stream.ts": "21f33d3922e019ec1a1676474beb543929cb564ec99b69cd2654e029e0f45bd5", - "https://deno.land/std@0.219.0/streams/to_array_buffer.ts": "1a9c07c4a396ce557ab205c44415815ab13b614fed94a12f62b80f8e650c726d", - "https://deno.land/std@0.219.0/streams/to_blob.ts": "bf5daaae50fa8f57e0c8bfd7474ebac16ac09e130e3d01ef2947ae5153912b4a", - "https://deno.land/std@0.219.0/streams/to_json.ts": "b6a908d0da7cd30956e5fbbfa7460747e50b8f307d1041282ed6fe9070d579ee", - "https://deno.land/std@0.219.0/streams/to_text.ts": "6f93593bdfc2cea5cca39755ea5caf0d4092580c0a713dfe04a1e85c60df331f", - "https://deno.land/std@0.219.0/streams/to_transform_stream.ts": "4c4836455ef89bab9ece55975ee3a819f07d3d8b0e43101ec7f4ed033c8a2b61", - "https://deno.land/std@0.219.0/streams/writable_stream_from_writer.ts": "62f2712d3a7bebd981fca8bd5140192c37450f9c4aa94283f7ca833e46bc7485", - "https://deno.land/std@0.219.0/streams/writer_from_stream_writer.ts": "b0e39ef607dfdc5abdfb627edf61a9672809463e2bb022afcbaf0cd006c40feb", - "https://deno.land/std@0.219.0/streams/zip_readable_streams.ts": "53eb10d7557539b489bd858907aab6dd28247f074b3446573801de3150cb932e", - "https://deno.land/std@0.219.0/yaml/_dumper/dumper.ts": "5a7b9b18e5b3f5e88b84d040c530b1f8e814c3565dfff7b7a5d16279bdf15ca4", - "https://deno.land/std@0.219.0/yaml/_dumper/dumper_state.ts": "ea262b459dc891c4828a0f814841abfe12d160d319c4b57eb11ed0c768cfcb6b", - "https://deno.land/std@0.219.0/yaml/_error.ts": "f38cdebdb69cde16903d9aa2f3b8a3dd9d13e5f7f3570bf662bfaca69fef669e", - "https://deno.land/std@0.219.0/yaml/_loader/loader.ts": "959c2ab7bbf5fb565bc3f3344f5e92b2712d39ea77a1e57039591696335c6d29", - "https://deno.land/std@0.219.0/yaml/_loader/loader_state.ts": "ee216de6040551940b85473c3185fdb7a6f3030b77153f87a6b7f63f82e489ea", - "https://deno.land/std@0.219.0/yaml/_mark.ts": "1d9d071f8c62d19f284ca4a5aae41680e67653a06a2a4b0eccf931fc5719afa1", - "https://deno.land/std@0.219.0/yaml/_state.ts": "f3b1c1fd11860302f1f33e35e9ce089bf069d4943e8d67516cd6bedbba058c13", - "https://deno.land/std@0.219.0/yaml/_type/binary.ts": "26216e8f306e62401ba00e306e93cdd5fb88da361cdaa567e63ee216dc3ebf93", - "https://deno.land/std@0.219.0/yaml/_type/bool.ts": "121743b23ba82a27ad6a3ec6298c7f5b0908f90e52707f8644a91f7ad51ed2ef", - "https://deno.land/std@0.219.0/yaml/_type/float.ts": "73295b7d8cc24edadfea5041e2255a6332e3491715e884e3bb7d03b563a90a81", - "https://deno.land/std@0.219.0/yaml/_type/function.ts": "bbf705058942bf3370604b37eb77a10aadd72f986c237c9f69b43378a42202c1", - "https://deno.land/std@0.219.0/yaml/_type/int.ts": "c2dc88438a60fccc8d2226042bd18b9967753adaf6bd145feb8b99d567e432ce", - "https://deno.land/std@0.219.0/yaml/_type/map.ts": "ae2acb1cb837fb8e96c75c98611cfd45af847d0114ab5336333c318e7d4b12f4", - "https://deno.land/std@0.219.0/yaml/_type/merge.ts": "ad0d971f91d2fb9f4ab3eba0c837eae357b1804d6b798adc99dc917bc5306b11", - "https://deno.land/std@0.219.0/yaml/_type/mod.ts": "e8929d7b1c969a74f76338d4eb380ef8c4a26cd6441117d521f076b766e9c265", - "https://deno.land/std@0.219.0/yaml/_type/nil.ts": "cbe4387d02d5933322c21b25d8955c5e6228c492e391a6fb82dcf4f498cc421c", - "https://deno.land/std@0.219.0/yaml/_type/omap.ts": "cda915105ab22ba9e1d6317adacee8eec2d8ddaf864cc2f814e3e476946e72c6", - "https://deno.land/std@0.219.0/yaml/_type/pairs.ts": "f97d7dc2b3fa18e246763f44147f6df0d6036c7e122af3e7b6692e4a6b0e289f", - "https://deno.land/std@0.219.0/yaml/_type/regexp.ts": "e49eb9e1c9356fd142bc15f7f323820d411fcc537b5ba3896df9a8b812d270a4", - "https://deno.land/std@0.219.0/yaml/_type/seq.ts": "2deffc7f970869bc01a1541b4961d076329a1c2b30b95e07918f3132db7c3fe2", - "https://deno.land/std@0.219.0/yaml/_type/set.ts": "be8a9e7237a7ffc92dfbe7f5e552d84b7eeba60f3f73cc77fc3c59d3506c74ea", - "https://deno.land/std@0.219.0/yaml/_type/str.ts": "88f0a1ba12295520cd57e96cd78d53aa0787d53c7a1c506155f418c496c2f550", - "https://deno.land/std@0.219.0/yaml/_type/timestamp.ts": "57a6bb4a0f0bd5eab85a1f0ee5ac8820fd3125ea939dc8a037de997a2b6ad05d", - "https://deno.land/std@0.219.0/yaml/_type/undefined.ts": "9d215953c65740f1764e0bdca021007573473f0c49e087f00d9ff02817ecfc97", - "https://deno.land/std@0.219.0/yaml/_utils.ts": "91bbe28b5e7000b9594e40ff5353f8fe7a7ba914eec917e1202cbaf5ac931c58", - "https://deno.land/std@0.219.0/yaml/mod.ts": "54e9bfad77c8cd58f49b65f4d568045ff08989ed36318a2ca733a43cb6f1bc00", - "https://deno.land/std@0.219.0/yaml/parse.ts": "f45278d9ebccb789af4eceeffa5c291e194bcf1fa9aab1b34ff52c2bd4a9d886", - "https://deno.land/std@0.219.0/yaml/schema.ts": "dae089ffa1ac4a2b031176aa019e126be6f7230a3011de38463ead8639b14739", - "https://deno.land/std@0.219.0/yaml/schema/core.ts": "1222f9401e2a0c1d38e63d753da98be333e61a6032335e9c46a68bd45ecce85a", - "https://deno.land/std@0.219.0/yaml/schema/default.ts": "b77c71cfd453951dd828e5f2f02f9f37335c9c0a49c8051d1a9653fa82357740", - "https://deno.land/std@0.219.0/yaml/schema/extended.ts": "996da59626409047b5c1a2d68bdbeead43914cedede47c5923e80ae4febe7d24", - "https://deno.land/std@0.219.0/yaml/schema/failsafe.ts": "24b2b630cef6fcce7de6d29db651523b0f49e5691d690931c42ecf4823837fdb", - "https://deno.land/std@0.219.0/yaml/schema/json.ts": "0fb9268282d266c24d963e75ef77f51accbbb74f40713a99e83ad621a81bc9ae", - "https://deno.land/std@0.219.0/yaml/schema/mod.ts": "9bf7ff80c2a246f781bdcab979211d0389760831a974cf5883bf2016567e3507", - "https://deno.land/std@0.219.0/yaml/stringify.ts": "580f8b2fa56e3233424520d8242f4fc0edf41ac54a6a6d2f6f8e0b6e99cd63c0", - "https://deno.land/std@0.219.0/yaml/type.ts": "708dde5f20b01cc1096489b7155b6af79a217d585afb841128e78c3c2391eb5c", - "https://deno.land/std@0.221.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", - "https://deno.land/std@0.221.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", - "https://deno.land/std@0.221.0/console/_data.json": "cf2cc9d039a192b3adbfe64627167c7e6212704c888c25c769fc8f1709e1e1b8", - "https://deno.land/std@0.221.0/console/_run_length.ts": "7da8642a0f4f41ac27c0adb1364e18886be856c1d08c5cce6c6b5c00543c8722", - "https://deno.land/std@0.221.0/console/unicode_width.ts": "d92f085c0ab9c7ab171e4e7862dfd9d3a36ffd369939be5d3e1140ec58bc820f", - "https://deno.land/std@0.221.0/fmt/colors.ts": "d239d84620b921ea520125d778947881f62c50e78deef2657073840b8af9559a", - "https://deno.land/std@0.221.0/text/closest_string.ts": "8a91ee8b6d69ff96addcb7c251dad53b476ac8be9c756a0ef786abe9e13a93a5", - "https://deno.land/std@0.221.0/text/levenshtein_distance.ts": "24be5cc88326bbba83ca7c1ea89259af0050cffda2817ff3a6d240ad6495eae2", "https://deno.land/std@0.224.0/archive/_common.ts": "5fcad5f7280cec1d20540b4a6e43ea9a6fd63daf9c4cf8a58c6321d07c32e317", "https://deno.land/std@0.224.0/archive/untar.ts": "bd39dbeda737f6fd9409b5923d7172f8abd7826508f09c4a1c38886574f6da4a", "https://deno.land/std@0.224.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975", @@ -1029,16 +290,6 @@ "https://deno.land/std@0.224.0/assert/mod.ts": "48b8cb8a619ea0b7958ad7ee9376500fe902284bb36f0e32c598c3dc34cbd6f3", "https://deno.land/std@0.224.0/assert/unimplemented.ts": "8c55a5793e9147b4f1ef68cd66496b7d5ba7a9e7ca30c6da070c1a58da723d73", "https://deno.land/std@0.224.0/assert/unreachable.ts": "5ae3dbf63ef988615b93eb08d395dda771c96546565f9e521ed86f6510c29e19", - "https://deno.land/std@0.224.0/async/_util.ts": "3e94e674c974c5c9277f6b3ba2d4e8403c320ba5cebb891f50afa3af4b8e0ac9", - "https://deno.land/std@0.224.0/async/abortable.ts": "ea6ddb98c1c6f066d5b26c8fd030e2d5afa54571182674aa07929c39dfa8c5b2", - "https://deno.land/std@0.224.0/async/deadline.ts": "008929d69b1efdd11b1fa55784bb4882add6adf8722868b26e87f68e35efc573", - "https://deno.land/std@0.224.0/async/debounce.ts": "e7bcccb17b6fe34646ac5d37c2a6d3830ca049e7e3534d2aace4001596f42eff", - "https://deno.land/std@0.224.0/async/delay.ts": "f90dd685b97c2f142b8069082993e437b1602b8e2561134827eeb7c12b95c499", - "https://deno.land/std@0.224.0/async/mod.ts": "ae2b6869ad7563f825e037e02c263507da4a55563b4a0bcd9079d2c3eb2670a2", - "https://deno.land/std@0.224.0/async/mux_async_iterator.ts": "8d960e951c7bf6cb682522c2ebf5bd3e738b27c6a7ac9500ab64d27054930972", - "https://deno.land/std@0.224.0/async/pool.ts": "2b972e3643444b73f6a8bcdd19799a2d0821b28a45fbe47fd333223eb84327f0", - "https://deno.land/std@0.224.0/async/retry.ts": "29025b09259c22123c599b8c957aeff2755854272954776dc9a5846c72ea4cfe", - "https://deno.land/std@0.224.0/async/tee.ts": "34373c58950b7ac5950632dc8c9908076abeefcc9032d6299fff92194c284fbd", "https://deno.land/std@0.224.0/bytes/concat.ts": "86161274b5546a02bdb3154652418efe7af8c9310e8d54107a68aaa148e0f5ed", "https://deno.land/std@0.224.0/bytes/copy.ts": "08d85062240a7223e6ec4e2af193ad1a50c59a43f0d86ac3a7b16f3e0d77c028", "https://deno.land/std@0.224.0/collections/_utils.ts": "b2ec8ada31b5a72ebb1d99774b849b4c09fe4b3a38d07794bd010bd218a16e0b", @@ -1087,12 +338,9 @@ "https://deno.land/std@0.224.0/io/_constants.ts": "3c7ad4695832e6e4a32e35f218c70376b62bc78621ef069a4a0a3d55739f8856", "https://deno.land/std@0.224.0/io/buf_reader.ts": "aa6d589e567c964c8ba1f582648f3feac45e88ab2e3d2cc2c9f84fd73c05d051", "https://deno.land/std@0.224.0/io/buffer.ts": "4d1f805f350433e418002accec798bc6c33ce18f614afa65f987c202d7b2234e", - "https://deno.land/std@0.224.0/io/copy.ts": "63c6a4acf71fb1e89f5e47a7b3b2972f9d2c56dd645560975ead72db7eb23f61", - "https://deno.land/std@0.224.0/io/iterate_reader.ts": "1e5e4fea22d8965afb7df4ee9ab9adda0a0fc581adbea31bc2f2d25453f8a6e9", "https://deno.land/std@0.224.0/io/read_all.ts": "876c1cb20adea15349c72afc86cecd3573335845ae778967aefb5e55fe5a8a4a", "https://deno.land/std@0.224.0/io/reader_from_stream_reader.ts": "a75bbc93f39df8b0e372cc1fbdc416a7cbf2a39fc4c09ddb057f1241100191c5", "https://deno.land/std@0.224.0/io/to_readable_stream.ts": "ed03a44a1ec1cc55a85a857acf6cac472035298f6f3b6207ea209f93b4aefb39", - "https://deno.land/std@0.224.0/io/to_writable_stream.ts": "ef422e0425963c8a1e0481674e66c3023da50f0acbe5ef51ec9789efc3c1e2ed", "https://deno.land/std@0.224.0/io/types.ts": "acecb3074c730b5ff487ba4fe9ce51e67bd982aa07c95e5f5679b7b2f24ad129", "https://deno.land/std@0.224.0/io/write_all.ts": "24aac2312bb21096ae3ae0b102b22c26164d3249dff96dbac130958aa736f038", "https://deno.land/std@0.224.0/log/_config.ts": "489e11b6d3c917bf5fc954c5e914c095d3480efd924d1e85f2fc576468581c54", @@ -1222,29 +470,6 @@ "https://deno.land/std@0.224.0/semver/try_parse.ts": "043204f1235243c3d02b66ffca2c37dc2941e417dbccaf6c3a15b476a33f0e24", "https://deno.land/std@0.224.0/semver/try_parse_range.ts": "cf1e2d489bbe9ed6185de551acdf708e23e0e1bc4be0958052dfef178f763eee", "https://deno.land/std@0.224.0/semver/types.ts": "9286e72b160e25856608f4bc5f08f8f5ccba54e6cdfc9aba8adee68a355c4b36", - "https://deno.land/std@0.224.0/streams/_common.ts": "948735ef6d140cd6916dca861197b88fc57db52c2f923c392b7a14033d8fed4b", - "https://deno.land/std@0.224.0/streams/buffer.ts": "e012de72a53ad17c56512488e9afb6f4b6ed046b32fc1415ae7a4e6fc0efce38", - "https://deno.land/std@0.224.0/streams/byte_slice_stream.ts": "5bbdcadb118390affa9b3d0a0f73ef8e83754f59bb89df349add669dd9369713", - "https://deno.land/std@0.224.0/streams/delimiter_stream.ts": "4e4050740ff27a8824defa6c96126229ef9d794c4ace4ef9cabb10b5ad4a5d14", - "https://deno.land/std@0.224.0/streams/early_zip_readable_streams.ts": "21f5cf6dd36381c6a50c31a7727b5bd219f6382bbb7a413418595c3e466c4d14", - "https://deno.land/std@0.224.0/streams/iterate_reader.ts": "a8e698d16373d49821172f90ec7ac011ef1aae7a4036ae4bace284ff99e2bc92", - "https://deno.land/std@0.224.0/streams/limited_bytes_transform_stream.ts": "b22a45a337374e863c4eb1867ec6b8ad3e68620a6c52fe837746060ea610e6f1", - "https://deno.land/std@0.224.0/streams/limited_transform_stream.ts": "4c47da5ca38a30fa9f33b0f1a61d4548e7f52a9a58c294b0f430f680e44cc543", - "https://deno.land/std@0.224.0/streams/merge_readable_streams.ts": "73eed8ff54c9111b8b974b11a5a11c1ed0b7800e0157c39277ccac3ed14721e2", - "https://deno.land/std@0.224.0/streams/mod.ts": "d56624832b9649b680c74ab9c77e746e8be81ae1a24756cc04623e25a0d43ce9", - "https://deno.land/std@0.224.0/streams/readable_stream_from_reader.ts": "64943452485bcba48e203fa8ae61c195aed9ab8b2a178e2fc6a383f761ce010a", - "https://deno.land/std@0.224.0/streams/reader_from_iterable.ts": "e7b064142b2a97bb562d958c2e4b4d129e923e9c9f2f6e003a4e16cbdcd62570", - "https://deno.land/std@0.224.0/streams/reader_from_stream_reader.ts": "b3519118ed2a32e3fb6201a4c257d5c4e58c38b5918bdc505a45fccbfa0a53f9", - "https://deno.land/std@0.224.0/streams/text_delimiter_stream.ts": "94dfc900204e306496c1b58c80473db57b6097afdcb8ea9eaff453a193a659f1", - "https://deno.land/std@0.224.0/streams/text_line_stream.ts": "21f33d3922e019ec1a1676474beb543929cb564ec99b69cd2654e029e0f45bd5", - "https://deno.land/std@0.224.0/streams/to_array_buffer.ts": "1a9c07c4a396ce557ab205c44415815ab13b614fed94a12f62b80f8e650c726d", - "https://deno.land/std@0.224.0/streams/to_blob.ts": "bf5daaae50fa8f57e0c8bfd7474ebac16ac09e130e3d01ef2947ae5153912b4a", - "https://deno.land/std@0.224.0/streams/to_json.ts": "b6a908d0da7cd30956e5fbbfa7460747e50b8f307d1041282ed6fe9070d579ee", - "https://deno.land/std@0.224.0/streams/to_text.ts": "6f93593bdfc2cea5cca39755ea5caf0d4092580c0a713dfe04a1e85c60df331f", - "https://deno.land/std@0.224.0/streams/to_transform_stream.ts": "4c4836455ef89bab9ece55975ee3a819f07d3d8b0e43101ec7f4ed033c8a2b61", - "https://deno.land/std@0.224.0/streams/writable_stream_from_writer.ts": "527fc1b136fc53a9f0b32641f04a4522c72617fa7ca3778d27ed064f9cd98932", - "https://deno.land/std@0.224.0/streams/writer_from_stream_writer.ts": "22cba4e5162fc443c7e5ef62f2054674cd6a20f5d7519a62db8d201496463931", - "https://deno.land/std@0.224.0/streams/zip_readable_streams.ts": "53eb10d7557539b489bd858907aab6dd28247f074b3446573801de3150cb932e", "https://deno.land/std@0.224.0/testing/snapshot.ts": "35ca1c8e8bfb98d7b7e794f1b7be8d992483fcff572540e41396f22a5bddb944", "https://deno.land/std@0.224.0/url/_strip.ts": "928fe9af16d7c5bf24816d1e90d84bfe702f3e059f9d63509b5a37087e947800", "https://deno.land/std@0.224.0/url/basename.ts": "068260fa6da5fae5236d94beb90d4631e555e6c169d5b6dbe2142fd449c97c87", @@ -1296,140 +521,8 @@ "https://deno.land/std@0.224.0/yaml/schema/mod.ts": "0e1558a4823834f106675e48ddc15338e04f6f18469d1a7d6b3f0e1ab06abcb2", "https://deno.land/std@0.224.0/yaml/stringify.ts": "f0ed4e419cb40c807cf79ae4039d6cdf492be9a947121fff4d4b7cd1d4738bae", "https://deno.land/std@0.224.0/yaml/type.ts": "708dde5f20b01cc1096489b7155b6af79a217d585afb841128e78c3c2391eb5c", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/_argument_types.ts": "ab269dacea2030f865a07c2a1e953ec437a64419a05bad1f1ddaab3f99752ead", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/_errors.ts": "d78e1b4d69d84b8b476b5f3c0b028e3906d48f21b8f1ca1d36d5abe9ccfe48bc", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/_spread.ts": "0cc6eb70a6df97b5d7d26008822d39f3e8a1232ee0a27f395aa19e68de738245", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/_type_utils.ts": "820004a59bc858e355b11f80e5b3ff1be2c87e66f31f53f253610170795602f0", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/_utils.ts": "fa0e88cc4215b18554a7308e8e2ae3a12be0fb91c54d1473c54c530dbd4adfcb", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/command.ts": "83cbece11c1459d5bc5add32c3cad0bf49e92c4ddd3ef00f22f80efdae30994e", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/_bash_completions_generator.ts": "0c6cb1df4d378d22f001155781d97a9c3519fd10c48187a198fef2cc63b0f84a", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/_fish_completions_generator.ts": "8ba4455f7f76a756e05c3db4ce35332b2951af65a2891f2750b530e06880f495", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/_zsh_completions_generator.ts": "9df79fbac17a32b9645d01628c41a2bfd295d7976b87b0ae235f50a9c8975fbc", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/bash.ts": "53fe78994eb2359110dc4fa79235bdd86800a38c1d6b1c4fe673c81756f3a0e2", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/complete.ts": "58df61caa5e6220ff2768636a69337923ad9d4b8c1932aeb27165081c4d07d8b", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/completions_command.ts": "506f97f1c6b0b1c3e9956e5069070028b818942310600d4157f64c9b644d3c49", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/fish.ts": "6f0b44b4067740b2931c9ec8863b6619b1d3410fea0c5a3988525a4c53059197", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/mod.ts": "8dda715ca25f3f66d5ec232b76d7c9a96dd4c64b5029feff91738cc0c9586fb1", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/completions/zsh.ts": "f1263c3946975e090d4aadc8681db811d86b52a8ae680f246e03248025885c21", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/deprecated.ts": "bbe6670f1d645b773d04b725b8b8e7814c862c9f1afba460c4d599ffe9d4983c", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/deps.ts": "a58ea2fa4e2ed9b39bb8dd8c35dd0498c74f05392517ff230a9a4d04c4c766b7", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/help/_help_generator.ts": "98619da83ff25523280a6fdcad89af3f13a6fafefc81b71f8230f3344b5ff2c5", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/help/help_command.ts": "fbbf0c0827dd21d3cec7bcc68c00c20b55f53e2b621032891b9d23ac4191231c", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/help/mod.ts": "8369b292761dcc9ddaf41f2d34bfb06fb6800b69efe80da4fc9752c3b890275b", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/mod.ts": "4b708df1b97152522bee0e3828f06abbbc1d2250168910e5cf454950d7b7404b", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/type.ts": "f588f5d9635b79100044e62aced4b00e510e75b83801f9b089c40c2d98674de2", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types.ts": "bc9ff7459b9cc1079eeb95ff101690a51b4b4afa4af5623340076ee361d08dbb", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/action_list.ts": "33c98d449617c7a563a535c9ceb3741bde9f6363353fd492f90a74570c611c27", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/boolean.ts": "3879ec16092b4b5b1a0acb8675f8c9250c0b8a972e1e4c7adfba8335bd2263ed", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/child_command.ts": "f1fca390c7fbfa7a713ca15ef55c2c7656bcbb394d50e8ef54085bdf6dc22559", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/command.ts": "325d0382e383b725fd8d0ef34ebaeae082c5b76a1f6f2e843fee5dbb1a4fe3ac", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/enum.ts": "8a7cd2898e03089234083bb78c8b1d9b7172254c53c32d4710321638165a48ec", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/file.ts": "8618f16ac9015c8589cbd946b3de1988cc4899b90ea251f3325c93c46745140e", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/integer.ts": "29864725fd48738579d18123d7ee78fed37515e6dc62146c7544c98a82f1778d", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/number.ts": "aeba96e6f470309317a16b308c82e0e4138a830ec79c9877e4622c682012bc1f", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/types/string.ts": "e4dadb08a11795474871c7967beab954593813bb53d9f69ea5f9b734e43dc0e0", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/upgrade/_check_version.ts": "6cfa7dc26bc0dc46381500e8d4b130fb224f4c5456152dada15bd3793edca89b", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/upgrade/mod.ts": "4eff69c489467be17dea27fb95a795396111ee385d170ac0cbcc82f0ea38156c", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/upgrade/provider.ts": "c23253334097dc4b8a147ccdeb3aa44f5a95aa953a6386cb5396f830d95d77a5", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/upgrade/provider/deno_land.ts": "24f8d82e38c51e09be989f30f8ad21f9dd41ac1bb1973b443a13883e8ba06d6d", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/upgrade/provider/github.ts": "99e1b133dd446c6aa79f69e69c46eb8bc1c968dd331c2a7d4064514a317c7b59", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/upgrade/provider/nest_land.ts": "0e07936cea04fa41ac9297f32d87f39152ea873970c54cb5b4934b12fee1885e", - "https://deno.land/x/cliffy@v1.0.0-rc.4/command/upgrade/upgrade_command.ts": "27191f4b1ce93581b6d5ee2fff6003fe4fca437f476ecb98b6eae92f2b4d0716", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/_errors.ts": "f1fbb6bfa009e7950508c9d491cfb4a5551027d9f453389606adb3f2327d048f", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/_utils.ts": "25e519ce1f35acc8b43c75d1ca1c4ab591e7dab08327b7b408705b591e27d8bd", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/_validate_flags.ts": "e60b9038c0136ab7e6bd1baf0e993a07bf23f18afbfb6e12c59adf665a622957", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/deprecated.ts": "a72a35de3cc7314e5ebea605ca23d08385b218ef171c32a3f135fb4318b08126", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/deps.ts": "bed26afff36eeb25509440edec9d5d141b3411e08cc7a90e38a370969b5166bb", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/flags.ts": "3e62c4a9756b5705aada29e7e94847001356b3a83cd18ad56f4207387a71cf51", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/types.ts": "9e2f75edff2217d972fc711a21676a59dfd88378da2f1ace440ea84c07db1dcc", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/types/boolean.ts": "4c026dd66ec9c5436860dc6d0241427bdb8d8e07337ad71b33c08193428a2236", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/types/integer.ts": "b60d4d590f309ddddf066782d43e4dc3799f0e7d08e5ede7dc62a5ee94b9a6d9", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/types/number.ts": "610936e2d29de7c8c304b65489a75ebae17b005c6122c24e791fbed12444d51e", - "https://deno.land/x/cliffy@v1.0.0-rc.4/flags/types/string.ts": "e89b6a5ce322f65a894edecdc48b44956ec246a1d881f03e97bbda90dd8638c5", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/_layout.ts": "73a9bcb8a87b3a6817c4c9d2a31a21b874a7dd690ade1c64c9a1f066d628d626", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/_utils.ts": "13390db3f11977b7a4fc1202fa8386be14696b475a7f46a65178354f9a6640b7", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/border.ts": "5c6e9ef5078c6930169aacb668b274bdbb498461c724a7693ac9270fe9d3f5d5", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/cell.ts": "65e3ee699c3cebeb4d4d44e8f156e37a8532a0f317359d73178a95724d3f9267", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/column.ts": "cf14009f2cb14bad156f879946186c1893acdc6a2fee6845db152edddb6a2714", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/consume_words.ts": "369d065dbf7f15c664ea8523e0ef750fb952aea6d88e146c375e64aec9503052", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/deps.ts": "cbb896e8d7a6b5e3c2b9dda7d16638c202d9b46eb738c2dae1fa9480d8091486", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/row.ts": "79eb1468aafdd951e5963898cdafe0752d4ab4c519d5f847f3d8ecb8fe857d4f", - "https://deno.land/x/cliffy@v1.0.0-rc.4/table/table.ts": "298671e72e61f1ab18b42ae36643181993f79e29b39dc411fdc6ffd53aa04684", - "https://deno.land/x/code_block_writer@12.0.0/mod.ts": "2c3448060e47c9d08604c8f40dee34343f553f33edcdfebbf648442be33205e5", - "https://deno.land/x/code_block_writer@12.0.0/utils/string_utils.ts": "60cb4ec8bd335bf241ef785ccec51e809d576ff8e8d29da43d2273b69ce2a6ff", - "https://deno.land/x/color_util@1.0.1/colors/cmykcolor.ts": "f717cee02bdec255c7c2879b55033da7547d46c1fbb8ada7980d49bd2c1554ee", - "https://deno.land/x/color_util@1.0.1/colors/hexcolor.ts": "3b75112b8d693f157d3e6367f9ec44779f3ccef7c7b5f8e0859897f51eb05c4f", - "https://deno.land/x/color_util@1.0.1/colors/hsbcolor.ts": "bdfe171f7e6de43625ea4a33bce2b25dec410fa67f34af71821a6c73f4e23351", - "https://deno.land/x/color_util@1.0.1/colors/hslcolor.ts": "2c61e987dc49822444adbd62249e33cc6fd6a0a33a20fcb287240cf96e6ef41f", - "https://deno.land/x/color_util@1.0.1/colors/hwbcolor.ts": "d1e9558d89c6fbd1b6a7f9bb86fc9c93e114a8e0eb614aee83cbc8201a67f15a", - "https://deno.land/x/color_util@1.0.1/colors/mod.ts": "31099d332b123efc9d3ae0016173daba7cb8242440bf198851a34b339c69a555", - "https://deno.land/x/color_util@1.0.1/colors/rgbcolor.ts": "384ceac5fd708cb6515df2a371de6bf1eea58376003c7015d82819c7809a1b26", - "https://deno.land/x/color_util@1.0.1/mod.ts": "d79c71f1c6583c56cdf56963d020928fdef05d8060d59601fe4f46f7ee1488fd", "https://deno.land/x/compress@v0.4.5/deps.ts": "096395daebc7ed8a18f0484e4ffcc3a7f70e50946735f7df9611a7fcfd8272cc", - "https://deno.land/x/convert_bytes@v2.1.1/mod.ts": "036bd2d9519c8ad44bd5a15d4e42123dc16843f793b3c81ca1fca905b21dd7df", - "https://deno.land/x/convert_bytes@v2.1.1/src/unit.ts": "ebfa749b09d2f6cf16a3a6cae5ab6042ae66667b9780071cbb933fcbdcff9731", - "https://deno.land/x/convert_bytes@v2.1.1/src/utility.ts": "a94b4c50286910a23a90c0a0510e8191fa3311dec44d062a6d4fe3d5b7ff8176", "https://deno.land/x/crc32@v0.2.0/mod.ts": "de7a3fa2d4ef24b96fc21e1cc4d2d65d1d2b1dcea92f63960e3e11bfa82df0fa", - "https://deno.land/x/ctrlc@0.2.1/mod.ts": "b7895894c596f2e8355d3b181ed30fa74cb54b94c419b730f6cb6ff96b20ec8b", - "https://deno.land/x/dax@0.39.2/mod.ts": "309f96ce11fa8a1bb244fdfdcb60fa66f092200a72295402094aab88bdf02bdd", - "https://deno.land/x/dax@0.39.2/src/command.ts": "01980353fec193bbc7f1c3690bb87472607d0b1b7d9844d17904920b907cd0de", - "https://deno.land/x/dax@0.39.2/src/command_handler.ts": "a9e40f0f1ec57318e62904b5785fede82dcdf1101922ebb3ebfad8f1c4d9c8df", - "https://deno.land/x/dax@0.39.2/src/commands/args.ts": "a138aef24294e3cbf13cef08f4836d018e8dd99fd06ad82e7e7f08ef680bbc1d", - "https://deno.land/x/dax@0.39.2/src/commands/cat.ts": "ac42675faaf87609fd5d4bff9a7741cef7fd4465d6de709b8ccabe70f7fd4c98", - "https://deno.land/x/dax@0.39.2/src/commands/cd.ts": "32533465933fada680c1fc887e24b65c8d4de3f5f98d0f55950dcead64da445c", - "https://deno.land/x/dax@0.39.2/src/commands/cp_mv.ts": "29a11a0f6c81e9a19b897c9b3178594f06a55a00ca28cb63c17773e154b34299", - "https://deno.land/x/dax@0.39.2/src/commands/echo.ts": "4672ad44a39fdcb3f9d9296a7c5773895bfae0f50a617fd999d1f0ca62a6aa36", - "https://deno.land/x/dax@0.39.2/src/commands/exit.ts": "508a388671240381a2a9a8910d4bf068421ace27ae1cc10c056df48cf9d23334", - "https://deno.land/x/dax@0.39.2/src/commands/export.ts": "c10d1dc6a45fd00e40afa6b19d7ecd29d09333f422b5b0fc75863baf13350969", - "https://deno.land/x/dax@0.39.2/src/commands/mkdir.ts": "28220eae8d7e872dca26b8217ad1b7e15eacf24e92d80277201caacbbecb8232", - "https://deno.land/x/dax@0.39.2/src/commands/printenv.ts": "8e1210b01ef5fcb8de71623f1195aab6ee034dbe684cd08e068ab855f9133ff9", - "https://deno.land/x/dax@0.39.2/src/commands/pwd.ts": "113af521c5dc257310c26815295c691b8f894051249d1eb8ba49a46965e28c68", - "https://deno.land/x/dax@0.39.2/src/commands/rm.ts": "a3441ddf9cb8f07fdf1657cb475caefcae71b71378681f4948e8ada93ef4478d", - "https://deno.land/x/dax@0.39.2/src/commands/sleep.ts": "2ba65ab19ae0f78709070f43d588c8fd3ff76d0299d2485e587aaaed7b86dd51", - "https://deno.land/x/dax@0.39.2/src/commands/test.ts": "336008d64d9737474ee225be9f8bd6fbad3f1c2128ba427e1b42d2c98366554f", - "https://deno.land/x/dax@0.39.2/src/commands/touch.ts": "b8229c2c38b56ebff054dd8dc70109cb85bcef5aaf160193fd80ac93924aa7ad", - "https://deno.land/x/dax@0.39.2/src/commands/unset.ts": "a85e9aca0606fd582114c5fc1f97fd6838a766110bad72dce7bd386172c1fbbb", - "https://deno.land/x/dax@0.39.2/src/common.ts": "7a96f3e4d576f92be12364d520107cff54b3d1a98124b5a88538494c5109c6e6", - "https://deno.land/x/dax@0.39.2/src/console/confirm.ts": "d9128d10b77fcc0a8df2784f71c79df68f5c8e00a34b04547b9ba9ddf1c97f96", - "https://deno.land/x/dax@0.39.2/src/console/logger.ts": "e0ab5025915cef70df03681c756e211f25bb2e4331f82ed4256b17ddd9e794ea", - "https://deno.land/x/dax@0.39.2/src/console/mod.ts": "de8af7d646f6cb222eee6560171993690247941b13ed9d757789d16f019d73ee", - "https://deno.land/x/dax@0.39.2/src/console/multiSelect.ts": "31003744e58f45f720271bd034d8cfba1055c954ba02d77a2f2eb21e4c1ed55a", - "https://deno.land/x/dax@0.39.2/src/console/progress/format.ts": "15ddbb8051580f88ed499281e12ca6f881f875ab73268d7451d7113ee130bd7d", - "https://deno.land/x/dax@0.39.2/src/console/progress/interval.ts": "54ffc8c7501f8ab0b6370e120c00e9e2d3e9b0640fc2dc2989bbf22855172ed0", - "https://deno.land/x/dax@0.39.2/src/console/progress/mod.ts": "dd9330c3edd1790d70808d043f417f0eaf80a4442a945545c38e47ce11e907b6", - "https://deno.land/x/dax@0.39.2/src/console/prompt.ts": "1ad65c8a5a27fb58ce6138f8ebefe2fca4cd12015fea550fbdc62f875d4b31f7", - "https://deno.land/x/dax@0.39.2/src/console/select.ts": "c9d7124d975bf34d52ea1ac88fd610ed39db8ee6505b9bb53f371cef2f56c6ab", - "https://deno.land/x/dax@0.39.2/src/console/utils.ts": "6f2c4d7c98c13d40b0a16af622d654495eace06778343eb1507ecd0f3875d3ab", - "https://deno.land/x/dax@0.39.2/src/deps.ts": "c6f4195419244d38879d4dd14de5190a507818ac62a5a992493c7567a1235f7d", - "https://deno.land/x/dax@0.39.2/src/lib/mod.ts": "7d9d0cf99ecd3ff5c3e5329ea9e456b737581afb4a5c94c3f90244c990b5630d", - "https://deno.land/x/dax@0.39.2/src/lib/rs_lib.generated.js": "0a1a482c4387379106ef0da69534ebc5b0c2a1ec9f6dab76833fe84a7e6bbdf6", - "https://deno.land/x/dax@0.39.2/src/path.ts": "a1ca507225a516336f083432b992d83ad4cddeea9a91eef69abbbebb729721ae", - "https://deno.land/x/dax@0.39.2/src/pipes.ts": "5ed17dc0aea34d219568d59c826c04e319a91497cac2be7c51a99603a3771c70", - "https://deno.land/x/dax@0.39.2/src/request.ts": "21de624bc21155cf6143ea5eddf4de706944e26af10219957da4b8b20c7104ce", - "https://deno.land/x/dax@0.39.2/src/result.ts": "719a9b4bc6bafeec785106744381cd5f37927c973334fcba6a33b6418fb9e7be", - "https://deno.land/x/dax@0.39.2/src/runtimes/process.common.ts": "692afd5fa15f40ce452904fa5ce380462cee56fbee7abe271e509e78da997200", - "https://deno.land/x/dax@0.39.2/src/runtimes/process.deno.ts": "50f85a086a9208b26c10dc2c1406fd9274226401f670d6862fdee05433c9ea4e", - "https://deno.land/x/dax@0.39.2/src/shell.ts": "b95677094cc553c987f0f113a95a45d72f2896ef82754f9831029efbbafea5d5", - "https://deno.land/x/dax@0.39.2/src/vendor/outdent.ts": "4d0283726579688c50b20c4b779e068acd3fa159a8784a4549e5e21bbef0ae64", - "https://deno.land/x/deep_eql@v5.0.1/index.js": "60e1547b99d4ae08df387067c2ac0a1b9ab42f212f0d8a11b8b0b61270d2b1c4", - "https://deno.land/x/deno_cache@0.5.2/auth_tokens.ts": "5d1d56474c54a9d152e44d43ea17c2e6a398dd1e9682c69811a313567c01ee1e", - "https://deno.land/x/deno_cache@0.5.2/cache.ts": "92ce8511e1e5c00fdf53a41619aa77d632ea8e0fc711324322e4d5ebf8133911", - "https://deno.land/x/deno_cache@0.5.2/deno_dir.ts": "1ea355b8ba11c630d076b222b197cfc937dd81e5a4a260938997da99e8ff93a0", - "https://deno.land/x/deno_cache@0.5.2/deps.ts": "26a75905652510b76e54b6d5ef3cf824d1062031e00782efcd768978419224e7", - "https://deno.land/x/deno_cache@0.5.2/dirs.ts": "009c6f54e0b610914d6ce9f72f6f6ccfffd2d47a79a19061e0a9eb4253836069", - "https://deno.land/x/deno_cache@0.5.2/disk_cache.ts": "66a1e604a8d564b6dd0500326cac33d08b561d331036bf7272def80f2f7952aa", - "https://deno.land/x/deno_cache@0.5.2/file_fetcher.ts": "89616c50b6df73fb04e73d0b7cd99e5f2ed7967386913d65b9e8baa4238501f7", - "https://deno.land/x/deno_cache@0.5.2/http_cache.ts": "407135eaf2802809ed373c230d57da7ef8dff923c4abf205410b9b99886491fd", - "https://deno.land/x/deno_cache@0.5.2/lib/deno_cache_dir.generated.js": "18b6526d0c50791a73dd0eb894e99de1ac05ee79dcbd53298ff5b5b6b0757fe6", - "https://deno.land/x/deno_cache@0.5.2/lib/snippets/deno_cache_dir-77bed54ace8005e0/fs.js": "cbe3a976ed63c72c7cb34ef845c27013033a3b11f9d8d3e2c4aa5dda2c0c7af6", - "https://deno.land/x/deno_cache@0.5.2/mod.ts": "0b4d071ad095128bdc2b1bc6e5d2095222dcbae08287261690ee9757e6300db6", - "https://deno.land/x/deno_cache@0.5.2/util.ts": "f3f5a0cfc60051f09162942fb0ee87a0e27b11a12aec4c22076e3006be4cc1e2", - "https://deno.land/x/deno_graph@0.26.0/lib/deno_graph.generated.js": "2f7ca85b2ceb80ec4b3d1b7f3a504956083258610c7b9a1246238c5b7c68f62d", - "https://deno.land/x/deno_graph@0.26.0/lib/loader.ts": "380e37e71d0649eb50176a9786795988fc3c47063a520a54b616d7727b0f8629", - "https://deno.land/x/deno_graph@0.26.0/lib/media_type.ts": "222626d524fa2f9ebcc0ec7c7a7d5dfc74cc401cc46790f7c5e0eab0b0787707", - "https://deno.land/x/deno_graph@0.26.0/lib/snippets/deno_graph-de651bc9c240ed8d/src/deno_apis.js": "41192baaa550a5c6a146280fae358cede917ae16ec4e4315be51bef6631ca892", - "https://deno.land/x/deno_graph@0.26.0/mod.ts": "11131ae166580a1c7fa8506ff553751465a81c263d94443f18f353d0c320bc14", - "https://deno.land/x/dir@1.5.1/data_local_dir/mod.ts": "91eb1c4bfadfbeda30171007bac6d85aadacd43224a5ed721bbe56bc64e9eb66", "https://deno.land/x/dispose@1.1.0/async-disposable-stack.ts": "15bb66608a6145be63eabf12fa63462fb7553af9440671261424b6e3d4042405", "https://deno.land/x/dispose@1.1.0/async-disposable.ts": "38399695820f15de40a36e732448f45bdd262ec0a6a281a8fd4f9449831655d3", "https://deno.land/x/dispose@1.1.0/disposable-stack.ts": "97bd374fcbfd19cb5311302b7b3b4fd03c06a7aebf59f1ade735906eb5e2888c", @@ -1440,60 +533,7 @@ "https://deno.land/x/djwt@v3.0.1/mod.ts": "eca176976595654b8a536e7b8029a029c435d079ef58feff2d3bde33ea107417", "https://deno.land/x/djwt@v3.0.1/signature.ts": "a5649368a4b433b2810e7d47f53661fe3b0f7fe1778cb49234ceae3d6e861185", "https://deno.land/x/djwt@v3.0.1/util.ts": "5cb264d2125c553678e11446bcfa0494025d120e3f59d0a3ab38f6800def697d", - "https://deno.land/x/dnt@0.38.1/lib/compiler.ts": "209ad2e1b294f93f87ec02ade9a0821f942d2e524104552d0aa8ff87021050a5", - "https://deno.land/x/dnt@0.38.1/lib/compiler_transforms.ts": "f21aba052f5dcf0b0595c734450842855c7f572e96165d3d34f8fed2fc1f7ba1", - "https://deno.land/x/dnt@0.38.1/lib/mod.deps.ts": "30367fc68bcd2acf3b7020cf5cdd26f817f7ac9ac35c4bfb6c4551475f91bc3e", - "https://deno.land/x/dnt@0.38.1/lib/npm_ignore.ts": "57fbb7e7b935417d225eec586c6aa240288905eb095847d3f6a88e290209df4e", - "https://deno.land/x/dnt@0.38.1/lib/package_json.ts": "61f35b06e374ed39ca776d29d67df4be7ee809d0bca29a8239687556c6d027c2", - "https://deno.land/x/dnt@0.38.1/lib/pkg/dnt_wasm.generated.js": "cfb352ae839865f5698c9b35099d4c783510195a1e3c9f9b04d94fac86394ed9", - "https://deno.land/x/dnt@0.38.1/lib/pkg/snippets/dnt-wasm-a15ef721fa5290c5/helpers.js": "45f74f00472b3a399bc16e5dc056966b55dcdd8fa2bd61505c6dfd2f5d33b9f4", - "https://deno.land/x/dnt@0.38.1/lib/shims.ts": "df1bd4d9a196dca4b2d512b1564fff64ac6c945189a273d706391f87f210d7e6", - "https://deno.land/x/dnt@0.38.1/lib/test_runner/get_test_runner_code.ts": "4dc7a73a13b027341c0688df2b29a4ef102f287c126f134c33f69f0339b46968", - "https://deno.land/x/dnt@0.38.1/lib/test_runner/test_runner.ts": "4d0da0500ec427d5f390d9a8d42fb882fbeccc92c92d66b6f2e758606dbd40e6", - "https://deno.land/x/dnt@0.38.1/lib/transform.deps.ts": "e42f2bdef46d098453bdba19261a67cf90b583f5d868f7fe83113c1380d9b85c", - "https://deno.land/x/dnt@0.38.1/lib/types.ts": "b8e228b2fac44c2ae902fbb73b1689f6ab889915bd66486c8a85c0c24255f5fb", - "https://deno.land/x/dnt@0.38.1/lib/utils.ts": "878b7ac7003a10c16e6061aa49dbef9b42bd43174853ebffc9b67ea47eeb11d8", - "https://deno.land/x/dnt@0.38.1/mod.ts": "b13349fe77847cf58e26b40bcd58797a8cec5d71b31a1ca567071329c8489de1", - "https://deno.land/x/dnt@0.38.1/transform.ts": "f68743a14cf9bf53bfc9c81073871d69d447a7f9e3453e0447ca2fb78926bb1d", - "https://deno.land/x/download@v1.0.1/download.ts": "b42f26df5f5816573ad57c8877cf8755947a0795fa51036e5c123c84ff08022b", - "https://deno.land/x/download@v1.0.1/mod.ts": "5449293b77155a9371b67e484d327ba3f9a6f56fc9ab733f19b045a4a2369fec", - "https://deno.land/x/download@v1.0.1/types.ts": "9bbae77a97fcc13a5abddceb2048ab76f3b2fccf71ed99a542dbc225c27d9329", - "https://deno.land/x/foras@v2.1.4/src/deno/mod.ts": "c350ea5f32938e6dcb694df3761615f316d730dafc57440e9afd5f36f8e309fd", - "https://deno.land/x/foras@v2.1.4/src/deno/mods/mod.ts": "cc099bbce378f3cdaa94303e8aff2611e207442e5ac2d5161aba636bb4a95b46", - "https://deno.land/x/foras@v2.1.4/wasm/pkg/foras.js": "06f8875b456918b9671d52133f64f3047f1c95540feda87fdd4a55ba3d30091d", - "https://deno.land/x/foras@v2.1.4/wasm/pkg/foras.wasm.js": "2df8522df7243b0f05b1d188e220629cd5d2c92080a5f1407e15396fc35bebb3", - "https://deno.land/x/fuse@v6.4.1/dist/fuse.esm.min.js": "02034c3e0a1d7f4d207ecd104c9cde1bab116d474dc60c2a019e9d4353455ff4", - "https://deno.land/x/json_hash@0.2.0/canon.ts": "ce7c07abd871cd7f0eb1280ad9f58f6382f02f84a217898ce977cf35ad315877", - "https://deno.land/x/jszip@0.11.0/mod.ts": "5661ddc18e9ac9c07e3c5d2483bc912a7022b6af0d784bb7b05035973e640ba1", - "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/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/mock_fetch@0.3.0/mod.ts": "7e7806c65ab17b2b684c334c4e565812bdaf504a3e9c938d2bb52bb67428bc89", "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", @@ -1510,8 +550,6 @@ "https://deno.land/x/oauth2_client@v1.0.2/src/refresh_token_grant.ts": "22cb1598e48fb037b4111a446573f7b48a3b361b58de58af17ba097221b12b54", "https://deno.land/x/oauth2_client@v1.0.2/src/resource_owner_password_credentials.ts": "bd3df99d32eeebffb411c4a2d3c3d057395515fb41690a8d91460dd74b9bf466", "https://deno.land/x/oauth2_client@v1.0.2/src/types.ts": "3327c2e81bc483e91843fb103595dd304393c3ac2a530d1c89200b6a5cf75e13", - "https://deno.land/x/outdent@v0.8.0/mod.ts": "72630e680dcc36d5ae556fbff6900b12706c81a6fd592345fc98bcc0878fb3ca", - "https://deno.land/x/outdent@v0.8.0/src/index.ts": "6dc3df4108d5d6fedcdb974844d321037ca81eaaa16be6073235ff3268841a22", "https://deno.land/x/redis@v0.32.1/backoff.ts": "33e4a6e245f8743fbae0ce583993a671a3ac2ecee433a3e7f0bd77b5dd541d84", "https://deno.land/x/redis@v0.32.1/command.ts": "aa2312d4093ec7c72d61d32a71d3d13a33cc6302ca78c8f026e1994e76541e6e", "https://deno.land/x/redis@v0.32.1/connection.ts": "45a3328ca49c021c9192c48510dba9808b29de4d8e65e424d7a6a1e2d782fd74", @@ -1535,15 +573,6 @@ "https://deno.land/x/redis@v0.32.1/vendor/https/deno.land/std/bytes/concat.ts": "de0d17d9c07f9f87c353ce9df27ef5d7409d0ededf0885f50646336788920dbd", "https://deno.land/x/redis@v0.32.1/vendor/https/deno.land/std/io/buf_reader.ts": "6529a1668e0054cb788e8a01d8c704c01e013698c6cd5bb141a35a2971cc9fe1", "https://deno.land/x/redis@v0.32.1/vendor/https/deno.land/std/io/buf_writer.ts": "0dbd95b759fe47e53f99a4945e66673af581ebccfebd2ab4c764c3b09d10ea51", - "https://deno.land/x/ts_morph@18.0.0/bootstrap/mod.ts": "b53aad517f106c4079971fcd4a81ab79fadc40b50061a3ab2b741a09119d51e9", - "https://deno.land/x/ts_morph@18.0.0/bootstrap/ts_morph_bootstrap.js": "6645ac03c5e6687dfa8c78109dc5df0250b811ecb3aea2d97c504c35e8401c06", - "https://deno.land/x/ts_morph@18.0.0/common/DenoRuntime.ts": "6a7180f0c6e90dcf23ccffc86aa8271c20b1c4f34c570588d08a45880b7e172d", - "https://deno.land/x/ts_morph@18.0.0/common/mod.ts": "01985d2ee7da8d1caee318a9d07664774fbee4e31602bc2bb6bb62c3489555ed", - "https://deno.land/x/ts_morph@18.0.0/common/ts_morph_common.js": "845671ca951073400ce142f8acefa2d39ea9a51e29ca80928642f3f8cf2b7700", - "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/which@0.3.0/mod.ts": "3e10d07953c14e4ddc809742a3447cef14202cdfe9be6678a1dfc8769c4487e6", "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", @@ -1560,8 +589,6 @@ "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/s3-request-presigner@3.335.0?pin=v131": "f32c826ef4de3839aca3e48ed856426019a2f16cc787e1c09d2214d24dd448cb", - "https://esm.sh/ajv@8.12.0?pin=v131": "f8dc3d8e4d6d69f48381749333cc388e54177f66601125b43246c3e43d3145d6", - "https://esm.sh/jszip@3.7.1": "f3872a819b015715edb05f81d973b5cd05d3d213d8eb28293ca5471fe7a71773", "https://esm.sh/v131/@aws-crypto/crc32@3.0.0/denonext/crc32.mjs": "a7b2905678c9acb4294fedf6f75c0d01c2a7c4a031acea1c816fd22b1372ad4a", "https://esm.sh/v131/@aws-crypto/crc32c@3.0.0/denonext/crc32c.mjs": "b5b36bedb1a00f79183720f5d4c54cb672e8f9877ca820550bb333f778ce912e", "https://esm.sh/v131/@aws-crypto/ie11-detection@3.0.0/denonext/ie11-detection.mjs": "7cbccafb093d6c2c1a5b9f3e8535533220cc612dfb2bf228ea793e69376f8a0f", @@ -1638,7 +665,6 @@ "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/ajv@8.12.0/denonext/ajv.mjs": "6ec3e0f3d7a95672c96274f6aece644b6b5541e8c2409aed36b59853529a01cf", "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", @@ -1650,13 +676,11 @@ "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-deep-equal@3.1.3/denonext/fast-deep-equal.mjs": "6313b3e05436550e1c0aeb2a282206b9b8d9213b4c6f247964dd7bb4835fb9e5", "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/json-schema-traverse@1.0.0/denonext/json-schema-traverse.mjs": "c5da8353bc014e49ebbb1a2c0162d29969a14c325da19644e511f96ba670cc45", "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", @@ -1674,7 +698,6 @@ "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/uri-js@4.4.1/denonext/uri-js.mjs": "901d462f9db207376b39ec603d841d87e6b9e9568ce97dfaab12aa77d0f99f74", "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", @@ -1682,87 +705,6 @@ "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/jszip@3.7.1/denonext/jszip.mjs": "d31d7f9e0de9c6db3c07ca93f7301b756273d4dccb41b600461978fc313504c9", - "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/deps.ts": "2b20d8c142749898e0ad5e4adfdc554dbe1411e8e5ef093687767650a1073ff8", - "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/mod.ts": "3ef8bb10b88541586bae7d92c32f469627d3a6a799fa8a897ac819b2f7dd95e8", - "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/progress.ts": "bb8eb122f5ac32efc073e05e2c13cceea61458b0e49ac05bddc3a49124dc39e3", - "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/registry.ts": "fd8e1b05f14cb988fee7a72a51e68131a920f7d4b72f949d9b86794b3c699671", - "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/search.ts": "52f9a539ca76893c47d01f8c6d401487ea286d54d1305b079b8727598e4c847a", - "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/semver.ts": "c051a906405dd72b55434eb0f390f678881379d57847abe4ec60d8a02af4f6f2", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/deps/cli.ts": "aac025f9372ad413b9c2663dc7f61affd597820d9448f010a510d541df3b56ea", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/deps/common.ts": "f775710b66a9099b98651cd3831906466e9b83ef98f2e5c080fd59ee801c28d4", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/deps/ports.ts": "3c60d1f7ab626ffdd81b37f4e83a780910936480da8fe24f4ccceaefa207d339", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/files/mod.ts": "a934ddb4803896e27b40644fe75623d584e01f30bbe1e16eb26bd772aa5b6064", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/host/types.ts": "f450d9b9c0eced2650262d02455aa6f794de0edd6b052aade256882148e5697f", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/install/mod.ts": "f78083efd15e82c8cc302dd801565f39c947497cfaa039fde1023f7e0d5ab368", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/install/utils.ts": "d4634d4fc0e963f540402b4ca7eb5dcba340eaa0d8fceb43af57d722ad267115", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/mod.ts": "0fd112d8c82d47da13d00e78d1e9f22241e992ff50c5610c09f53de4e2b23608", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/envs/inter.ts": "84805fa208754a08f185dca7a5236de3760bbc1d0df96af86ea5fd7778f827a2", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/envs/mod.ts": "fc05e0d0f8adc1148708bedadef70fa681165fc7c5c4c641bfabb5ab03754ed6", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/envs/posix.ts": "09e410e3fea9c303a5148ff2a22697474320442b9fea0bd3fc932d6828fe820f", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/envs/reducer.ts": "50517084caaf73ce6618141ee4d97795060a0d3169651da7abd7251a3204465a", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/envs/types.ts": "ab9715cf02e9d73f553ae757db347863be23e1e9daf94d18aab716fc27b3dbc1", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/mod.ts": "fc1cb9176c6557b44ae9c6536fa51c6c4f80ac01fc476d15b0a217e70cb0d176", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/ambient.ts": "823ec8d98702a60e6bfcdbeb64b69dc9f5039e73a1f10e87cd51210c1aaf52d5", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/base.ts": "8ef8a8de372420bddcd63a1b363937f43d898059e99478a58621e8432bcd5891", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/db.ts": "a309d1058f66079a481141c3f1733d928b9af8a37b7ce911b1228f70fd24df0f", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/ghrel.ts": "a1bf0e244080b8b2a62093f536bb7eff0b5a9c596f7eef9f516c11a80aad0be1", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/inter.ts": "b3999e73d73d7f928a8de86e5e2261fe6b1450ceedfb54f24537bf0803532ed0", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/mod.ts": "78db7040e724f84c95b1a0fdeaf0cfc53382482e8905cd352189756b953556cc", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/reducers.ts": "d04e813652101f67f946242df68429ed5540e499fbdb7776b8be5703f16754c8", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/std.ts": "985902519aafef6e8e6aecc8922e70abdea5b8e97d5439bf94338b93242fe11f", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/sync.ts": "a7a297f6b098360d56af168692f3cff96f8ceeb5189e5baa249e094f8d9c42ef", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/types.ts": "f4dbd1a3f4b7f539b3a85418617d25adbf710b54144161880d48f6c4ec032eee", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/types/platform.ts": "0ecffeda71919293f9ffdb6c564ddea4f23bc85c4e640b08ea78225d34387fdc", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/utils.ts": "6b14b331cce66bd46e7aec51f02424327d819150f16d3f72a6b0aaf7aee43c09", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/ports/worker.ts": "6b76ba1efb2e47a82582fc48bcc6264fe153a166beffccde1a9a3a185024c337", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/std.ts": "419d6b04680f73f7b252257ab287d68c1571cee4347301c53278e2b53df21c4a", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/tasks/deno.ts": "2b9f33253ac1257eb79a4981cd221509aa9ecf8a3c36d7bd8be1cd6c1150100b", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/tasks/exec.ts": "2ee48e0bd0ff3c7245793e0ee6f4e3afee0b82f6375e6683db45aea6de8f45b0", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/tasks/inter.ts": "63e8f2860f7e3b4d95b6f61ca56aeb8567e4f265aa9c22cace6c8075edd6210f", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/tasks/mod.ts": "334b18d7c110cc05483be96353e342425c0033b7410c271a8a47d2b18308c73e", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/tasks/types.ts": "072a34bd0749428bad4d612cc86abe463d4d4f74dc56cf0a48a1f41650e2399b", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/modules/types.ts": "c0f212b686a2721d076e9aeb127596c7cbc939758e2cc32fd1d165a8fb320a87", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/port.ts": "c039a010dee7dfd978478cf4c5e2256c643135e10f33c30a09f8db9915e9d89d", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/act.ts": "2ce6b8fddf61db12ba69b7cad6985237a2962ca79853edbddee5bfb49c47d1ab", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/asdf.ts": "11d41bcad5981e014478343270f05bac265990e801c525e3288113d89bd287be", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/asdf_plugin_git.ts": "a3742fcd994ded231febf33754b087ab56393a799297b26315c2cf8a388a7f82", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargo-binstall.ts": "72860580e6f6db9ec7ba74dbe391ad98ed49b4ff43247661b27701f4e683d41b", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cargobi.ts": "2bf25e20c19acf7badbaa01817263f9924dd3c31b0aaa934a8b6769e235f8a57", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/cpy_bs.ts": "4066e5eb094e72be4dec2428fb7f99231dcc5c4e2db7b5ea2373a9ad9ce28662", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/curl.ts": "58acd2a158187f448d940f45bfcd87c9b4884db127dcbaaaef27258bb4ebce92", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/deno_ghrel.ts": "eca02a93ceb62ad9fb7f395361d32da0d5657aba5f7856c8ae0109135da0e070", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/earthly.ts": "7a3c8cae1631f670105a63bc41c47a49da6fc777968c0e9546c55d43fa418619", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/git.ts": "2e68f1fa5ba534ee32db204bcc357f987437dffe5d87c1a0a9c47850fa654419", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/infisical.ts": "77789ea377250f0e762d01f1a8d378636bc520e7291aa9e82c5321c4059b6205", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/jq_ghrel.ts": "f685342c833c96637732fb28556f411f4537e85292046473f2b0d7f28c66ec8c", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/meta_cli_ghrel.ts": "0d5128cd3a15eece3fdf49c0697f5354e37ede6388e058dde572699634df1464", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/mod.ts": "eec07e249a69eca52620d9b770d0aa3266157dd87503e776da6da261683e6186", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/mold.ts": "b916227b48d7aa307ccc7d54c66724a41baa67be82bd558b5b9a35db4179c2f3", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/node.ts": "a98a095d3405a4907acfb620ff43babb0771d51ecaed87af8d1816c1cecd009b", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/npmi.ts": "056c7e733b1157601647630b9d460f19b5416dccc20415dd275d7ce972f09c39", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/opentofu_ghrel.ts": "46ef05d30772d36b91d88a2dc1aae31e096c59ba6ecf82af08359996c1476725", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pipi.ts": "91354d0cfcacb4a3e54cd8436694fad56cb2c32de7d6710a0f5d0671bac1d1be", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/pnpm.ts": "41e7f473a687123ae96ab14a3a04f67ef0c4b44eea6747448826dbdae00bfdde", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/protoc.ts": "ef93af8f37d8186c2220b6d2f760b5da10decaa3e9fe7768003ee319d32335bf", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/ruff.ts": "3eb6963d2beb643ab8adc152e84811ea28e993c9d48b442e3255a49582529c3b", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/rust.ts": "264e755c4fedb9d6a68b94a3dd2e23d3bff2e6ab538a57babf5d94afa4800deb", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/rustup.ts": "0a8033d24fb6be84585db545b2592b868d36182907565fe23454e9a0262618cc", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/tar.ts": "c3c43a99f8a9b1c160286cbc6240f59658d994856eeacaee479f645ece44d6c4", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/temporal_cli.ts": "a5db59114e294b58715349e72e3d7e868274d4a25d7de027afa0470c5585ed9c", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/terraform.ts": "035fbdd3a6b858bd302c440fc0a588fb40ae57959685af837f8a4e34302b55a7", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/unzip.ts": "c4559c627246f9c051571bbdff8c63ab15780ffd9e71656a9055488cc3bf32c3", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/wasmedge.ts": "b74a35190b79be686d2c8615c291b883da21e0caea36a8a32340fba93694b8e0", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/ports/zstd.ts": "fb8334b7b43ef34ba60ad391460e2fabb62889f77eade7798c823b14842cea45", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/setup_logger.ts": "f8a206bda0595497d6f4718032d4a959000b32ef3346d4b507777eec6a169458", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/std.ts": "74515b1d816e643860b2a94409a49c08d8478d756c1fcae0dce95dde2c5c7162", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/std/copyLock.ts": "a47725f058cc8120914629bd0d4488345f168e80f1b3b286a64d4d1e919d6599", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/std/sedLock.ts": "115bcf40bb13435e579df24919d1a0f9be3d3ec96c442812c9ae4ceb335932aa", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/logger.ts": "fcbafb35ae4b812412b9b301ce6d06b8b9798f94ebebe3f92677e25e4b19af3c", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/mod.ts": "25bfdd222d6afec5b3f0a7e647e3d9b12abed6d222b49a4b2e95c6bbe266f533", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/unarchive.ts": "f6d0e9e75f470eeef5aecd0089169f4350fc30ebfdc05466bb7b30042294d6d3", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/url.ts": "e1ada6fd30fc796b8918c88456ea1b5bbd87a07d0a0538b092b91fd2bb9b7623", - "https://raw.githubusercontent.com/metatypedev/ghjk/44d9a41/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62" + "https://esm.sh/v131/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82" } } diff --git a/typegate/engine/src/ext.rs b/typegate/engine/src/ext.rs index 89b4a729ab..21d9bc80a9 100644 --- a/typegate/engine/src/ext.rs +++ b/typegate/engine/src/ext.rs @@ -68,7 +68,7 @@ deno_core::extension!( pub mod tests { #[rustfmt::skip] use deno_core as deno_core; // necessary for re-exported macros to work - use deno_runtime::permissions::PermissionsContainer; + use deno_runtime::deno_permissions::PermissionsContainer; use std::sync::Arc; use super::*; diff --git a/typegate/engine/src/lib.rs b/typegate/engine/src/lib.rs index 62f838da94..6b3d856c0c 100644 --- a/typegate/engine/src/lib.rs +++ b/typegate/engine/src/lib.rs @@ -27,6 +27,7 @@ mod interlude { pub use deno_core::{resolve_url, resolve_url_or_path}; pub use ext::extensions; +pub use mt_deno::new_thread_builder; #[rustfmt::skip] use deno_core as deno_core; // necessary for re-exported macros to work use shadow_rs::shadow; @@ -136,12 +137,30 @@ pub async fn launch_typegate_deno( .ok_or_else(|| std::env::set_var("REDIS_URL", "none")) .ok(); + if std::env::var("TMP_DIR").is_err() { + std::env::set_var( + "TMP_DIR", + std::env::var("MT_DIR") + .map(|p| PathBuf::from_str(&p).expect("invalid $MT_DIR")) + .unwrap_or_else(|_| { + std::env::current_dir() + .expect("no cwd found") + .join(".metatype") + }), + ); + } + use std::str::FromStr; let tmp_dir = std::env::var("TMP_DIR") .map(|p| PathBuf::from_str(&p).expect("invalid $TMP_DIR")) - .unwrap_or_else(|_| std::env::current_dir().expect("no cwd found").join("tmp")); + .unwrap(); + tokio::fs::create_dir_all(&tmp_dir).await?; + let gitignore = tmp_dir.join(".gitignore"); + if matches!(tokio::fs::try_exists(&gitignore).await, Err(_) | Ok(false)) { + tokio::fs::write(gitignore, "*").await?; + } - let permissions = deno_runtime::permissions::PermissionsOptions { + let permissions = deno_runtime::deno_permissions::PermissionsOptions { allow_run: Some(["hostname"].into_iter().map(str::to_owned).collect()), allow_sys: Some(vec![]), allow_env: Some(vec![]), @@ -178,7 +197,7 @@ fn op_get_version() -> &'static str { mod tests { use crate::interlude::*; - use deno_runtime::permissions::PermissionsOptions; + use deno_runtime::deno_permissions::PermissionsOptions; #[test] #[ignore] diff --git a/typegate/engine/src/runtimes/prisma/engine_import.rs b/typegate/engine/src/runtimes/prisma/engine_import.rs index 1e014b2ef9..aea1ac76c1 100644 --- a/typegate/engine/src/runtimes/prisma/engine_import.rs +++ b/typegate/engine/src/runtimes/prisma/engine_import.rs @@ -104,8 +104,10 @@ impl ConnectedEngine { #[serde(crate = "serde", rename_all = "camelCase")] pub struct ConstructorOptions { pub datamodel: String, + #[allow(unused)] // FIXME: pub log_level: String, #[serde(default)] + #[allow(unused)] // FIXME: pub log_queries: bool, #[serde(default)] pub datasource_overrides: BTreeMap, diff --git a/typegate/engine/src/runtimes/wit_wire.rs b/typegate/engine/src/runtimes/wit_wire.rs index ae6237985b..965a8e4207 100644 --- a/typegate/engine/src/runtimes/wit_wire.rs +++ b/typegate/engine/src/runtimes/wit_wire.rs @@ -199,7 +199,9 @@ impl Host for TypegateHost { // and yet we're transmuting it to a Local here. // This is observed from the deno codebase // and I can't explain it - let func = unsafe { std::mem::transmute::<_, v8::Local>(js_fn) }; + let func = unsafe { + std::mem::transmute::, v8::Local>(js_fn) + }; let res = func .call(tc_scope, recv.into(), ¶ms) .expect("got null from hostcall"); diff --git a/typegate/import_map.json b/typegate/import_map.json index 7122684317..502cc83f00 100644 --- a/typegate/import_map.json +++ b/typegate/import_map.json @@ -19,7 +19,7 @@ "jwt": "https://deno.land/x/djwt@v3.0.1/mod.ts", "redis": "https://deno.land/x/redis@v0.32.1/mod.ts", "oauth2_client": "https://deno.land/x/oauth2_client@v1.0.2/mod.ts", - "test/mock_fetch": "https://deno.land/x/mock_fetch@0.3.0/mod.ts", + "test/mock_fetch": "./tests/utils/mock_fetch.ts", "levenshtein": "https://deno.land/x/levenshtein@v1.0.1/mod.ts", "aws-sdk/client-s3": "https://esm.sh/@aws-sdk/client-s3@3.335.0?pin=v131", "aws-sdk/s3-request-presigner": "https://esm.sh/@aws-sdk/s3-request-presigner@3.335.0?pin=v131", @@ -31,7 +31,7 @@ "@typegate/": "./src/", "test-utils/": "./tests/utils/", "@dev/": "../dev/", - "dax": "https://deno.land/x/dax@0.39.2/mod.ts", + "dax": "jsr:@david/dax@0.41.0", "dispose": "https://deno.land/x/dispose@1.1.0/mod.ts", "download": "https://deno.land/x/download@v1.0.1/mod.ts" } diff --git a/typegate/src/runtimes/wit_wire/mod.ts b/typegate/src/runtimes/wit_wire/mod.ts index 7ee65b791f..2253810f66 100644 --- a/typegate/src/runtimes/wit_wire/mod.ts +++ b/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.4.4"; +const METATYPE_VERSION = "0.4.6"; export class WitWireMessenger { static async init( diff --git a/typegate/standalone/src/main.rs b/typegate/standalone/src/main.rs index f84fec4f61..3663a51c76 100644 --- a/typegate/standalone/src/main.rs +++ b/typegate/standalone/src/main.rs @@ -26,9 +26,23 @@ pub fn init_sentry(config: &Config) -> sentry::ClientInitGuard { )) } -fn main() -> Result<(), Box> { +fn main() { logger::init(); + if cfg!(debug_assertions) { + typegate_engine::new_thread_builder() + .spawn(main_main) + .unwrap() + .join() + .unwrap() + .unwrap(); + } else { + main_main().unwrap(); + } +} + +fn main_main() -> Result<(), Box> { let config = Config::init_from_env()?; + let _sentry_guard = init_sentry(&config); let runtime = typegate_engine::runtime(); let workspace_dir = Path::new(location_macros::workspace_dir!()); @@ -48,5 +62,6 @@ fn main() -> Result<(), Box> { typegate_engine::resolve_url_or_path(&main_url, workspace_dir)?, Some(import_map_url), ))?; + Ok(()) } diff --git a/typegate/tests/e2e/cli/deploy_test.ts b/typegate/tests/e2e/cli/deploy_test.ts index 886ddec8fb..e70965b598 100644 --- a/typegate/tests/e2e/cli/deploy_test.ts +++ b/typegate/tests/e2e/cli/deploy_test.ts @@ -139,6 +139,8 @@ Meta.test( Meta.test( { + // FIXME: + ignore: true, name: "meta deploy: succeeds migration for new columns with default value", }, async (t) => { diff --git a/typegate/tests/e2e/cli/dev_test.ts b/typegate/tests/e2e/cli/dev_test.ts index 48538f81e1..6ca2ba337f 100644 --- a/typegate/tests/e2e/cli/dev_test.ts +++ b/typegate/tests/e2e/cli/dev_test.ts @@ -34,6 +34,8 @@ async function writeTypegraph(version: number | null, target = "migration.py") { Meta.test( { + // FIXME: + ignore: true, name: "meta dev: choose to reset the database", gitRepo: { content: { @@ -63,10 +65,15 @@ Meta.test( stderr: "piped", stdin: "piped", }).spawn(); - const stderr = new Lines(metadev.stderr); const stdin = new LineWriter(metadev.stdin); + t.addCleanup(async () => { + await stderr.close(); + await stdin.close(); + await killProcess(metadev); + }); + await stderr.readWhile((line) => { // console.log("meta dev>", line); return !$.stripAnsi(line).includes( @@ -129,10 +136,6 @@ Meta.test( }) .on(e); }); - - await stderr.close(); - await stdin.close(); - await killProcess(metadev); }, ); @@ -186,8 +189,14 @@ Meta.test( const stderr = new Lines(metadev.stderr); const stdin = new LineWriter(metadev.stdin); + t.addCleanup(async () => { + await stderr.close(); + await stdin.close(); + await killProcess(metadev); + }); + await stderr.readWhile((line) => { - // console.log("line:", line); + console.log("line:", line); return !$.stripAnsi(line).includes( "successfully deployed typegraph migration-failure-test", ); @@ -244,10 +253,6 @@ Meta.test( await t.should("have removed latest migration", async () => { assert((await listSubdirs(migrationsDir)).length === 1); }); - - await stderr.close(); - await stdin.close(); - await killProcess(metadev); }, ); @@ -256,15 +261,33 @@ const examplesDir = $.path(workspaceDir).join("examples"); Meta.test("meta dev with typegate", async (t) => { await $`bash build.sh`.cwd(examplesDir.join("typegraphs/metagen/rs")); + const port = String(t.port + 1); const metadev = new Deno.Command("meta-full", { cwd: examplesDir.toString(), - args: ["dev"], + args: [ + "dev", + `--main-url`, + import.meta.resolve("../../../src/main.ts"), + `--import-map-url`, + import.meta.resolve("../../../import_map.json"), + `--gate=http://localhost:${port}`, + ], stdout: "piped", stderr: "piped", + env: { + MCLI_LOADER_CMD: "deno run -A --config deno.json", + }, }).spawn(); const stderr = new Lines(metadev.stderr); const stdout = new Lines(metadev.stdout); - + t.addCleanup(async () => { + await stderr.close(); + await stdout.close(); + // FIXME: it still leaks the child typegate process even + // though we the cli has a ctrl_c handler + metadev.kill("SIGTERM"); + await metadev.status; + }); const deployed: [string, string][] = []; console.log(new Date()); @@ -276,6 +299,9 @@ Meta.test("meta dev with typegate", async (t) => { await stderr.readWhile((rawLine) => { const line = $.stripAnsi(rawLine); console.log("meta-full dev[E]>", line); + if (line.match(/failed to deploy/i)) { + throw new Error("error detected on line: " + rawLine); + } const match = line.match( /successfully deployed typegraph ([\w_-]+) from (.+)$/, ); @@ -287,7 +313,7 @@ Meta.test("meta dev with typegate", async (t) => { deployed.push([match[2].slice(prefix.length), match[1]]); } return deployed.length < 41; - }); + }, 3 * 60 * 1000); await t.should("have deployed all the typegraphs", () => { // TODO use `meta list` @@ -335,7 +361,4 @@ Meta.test("meta dev with typegate", async (t) => { ["triggers.ts", "triggers"], ]); }); - - await stderr.close(); - await killProcess(metadev); }); diff --git a/typegate/tests/e2e/upgrade/upgrade_test.ts b/typegate/tests/e2e/published/published_test.ts similarity index 51% rename from typegate/tests/e2e/upgrade/upgrade_test.ts rename to typegate/tests/e2e/published/published_test.ts index b24f0fc91e..67b97e6189 100644 --- a/typegate/tests/e2e/upgrade/upgrade_test.ts +++ b/typegate/tests/e2e/published/published_test.ts @@ -4,6 +4,7 @@ import { Meta } from "test-utils/mod.ts"; import { projectDir } from "@dev/utils.ts"; import { $ } from "@dev/deps.ts"; +import { PUBLISHED_VERSION, PYTHON_VERSION } from "@dev/consts.ts"; import { download } from "download"; import { Untar } from "std/archive/untar.ts"; import { readerFromIterable } from "std/streams/mod.ts"; @@ -13,9 +14,7 @@ import { Lines } from "test-utils/process.ts"; import { newTempDir } from "test-utils/dir.ts"; import { transformSyncConfig } from "@typegate/config.ts"; import { clearSyncData, setupSync } from "test-utils/hooks.ts"; -import { assertEquals } from "std/assert/assert_equals.ts"; - -const PUBLISHED_VERSION = "0.4.4"; +import { assertEquals } from "std/assert/mod.ts"; const previousVersion = PUBLISHED_VERSION; @@ -62,7 +61,7 @@ async function checkMetaBin(path: typeof tempDir, version: string) { if (!(await path.exists())) { return false; } - const res = await $`bash -c 'meta --version'` + const res = await $`bash -c 'meta-old --version'` .env("PATH", `${path.parent()!.toString()}:${Deno.env.get("PATH")}`) .stdout("piped"); if (res.stdout.includes(version)) { @@ -76,10 +75,10 @@ async function checkMetaBin(path: typeof tempDir, version: string) { } // download the fat version of the cli on the latest stable release -async function downloadAndExtractAsset(version: string) { +export async function downloadAndExtractCli(version: string) { const name = getAssetName(version); const extractTargetDir = tempDir.join(name); - const metaBin = extractTargetDir.join("meta"); + const metaBin = extractTargetDir.join("meta-old"); if (await checkMetaBin(metaBin, version)) { return metaBin.toString(); } @@ -104,7 +103,6 @@ async function downloadAndExtractAsset(version: string) { if (entry.fileName !== "meta") { throw new Error("unexpected"); } - Deno.mkdir(extractTargetDir.toString(), { recursive: true }); using target = await Deno.open(metaBin.toString(), { create: true, write: true, @@ -122,6 +120,7 @@ async function downloadAndExtractAsset(version: string) { return metaBin.toString(); } +// This also tests the published NPM version of the SDK Meta.test( { name: "typegate upgrade", @@ -136,7 +135,7 @@ Meta.test( async (t) => { let publishedBin: string = ""; await t.should("download published cli (fat version)", async () => { - publishedBin = await downloadAndExtractAsset(previousVersion); + publishedBin = await downloadAndExtractCli(previousVersion); }); const metaBinDir = $.path(publishedBin).parent()!.toString(); @@ -146,8 +145,18 @@ Meta.test( const typegateTempDir = await newTempDir(); const repoDir = await newTempDir(); + const examplesDir = $.path(await newTempDir()); + t.addCleanup(async () => { + await $.co([ + $.removeIfExists(typegateTempDir), + $.removeIfExists(repoDir), + $.removeIfExists(examplesDir), + ]); + }); + + const port = String(t.port + 1); - const proc = new Deno.Command("meta", { + const proc = new Deno.Command("meta-old", { args: ["typegate"], env: { ...Deno.env.toObject(), @@ -155,28 +164,29 @@ Meta.test( TG_SECRET: tgSecret, TG_ADMIN_PASSWORD: "password", TMP_DIR: typegateTempDir, - TG_PORT: "7899", + TG_PORT: port, // TODO should not be necessary VERSION: previousVersion, ...syncEnvs, }, stdout: "piped", - // stderr: "piped", }).spawn(); - const examplesDir = $.path(repoDir).join("metatype/examples"); - await t.should( "download example typegraphs for the published version", async () => { const tag = `v${previousVersion}`; - await $`git clone https://github.com/metatypedev/metatype.git --depth 1 --branch ${tag} --quiet` + // FIXME: cache across test runs + await $`git clone https://github.com/metatypedev/metatype.git --depth 1 --branch ${tag}` .cwd(repoDir) .stdout("piped") .stderr("piped") .printCommand(); + await $.path(repoDir).join("metatype/examples").copy(examplesDir, { + overwrite: true, + }); const typegraphsDir = examplesDir.join("typegraphs"); for await (const entry of typegraphsDir.readDir()) { const path = typegraphsDir.relative(entry.path); @@ -185,14 +195,13 @@ Meta.test( } } - await $`pnpm install` - .cwd(examplesDir.join("typegraphs")) - .stdout("inherit") - .printCommand(); - - await $.raw`pnpm add @typegraph/sdk@${previousVersion}` - .cwd(examplesDir.join("typegraphs")) - .env("NPM_CONFIG_REGISTRY", "https://registry.npmjs.org") + // NOTE: we clean out the deno.json used by the examples + // before adding the published version + // by default @typegraph/sdk/ needs that trailing slash + // due to https://github.com/WICG/import-maps?tab=readme-ov-file#packages-via-trailing-slashes + await examplesDir.join("deno.json").writeJson({}); + await $.raw`bash -c 'deno add @typegraph/sdk@${previousVersion}'` + .cwd(examplesDir) .stdout("inherit") .printCommand(); }, @@ -202,25 +211,24 @@ Meta.test( const stdout = new Lines(proc.stdout); await stdout.readWhile((line) => { - // console.log("typegate>", line); - return !line.includes("typegate ready on 7899"); + console.log(`typegate>`, line); + return !line.includes(`typegate ready on ${port}`); }); stdout.readWhile((line) => { const match = line.match(/Initializing engine '(.+)'/); if (match) { typegraphs.push(match[1]); } - console.log("typegate>", line); + console.log("typegate counting matches>", line); return true; - }); + }, null); await t.should("successfully deploy on the published version", async () => { const command = - `meta deploy --target dev --max-parallel-loads=4 --allow-dirty --gate http://localhost:7899 -vvv`; + `meta-old deploy --target dev --threads=4 --allow-dirty --gate http://localhost:${port} -vvv`; const res = await $`bash -c ${command}` .cwd(examplesDir.join("typegraphs")) - .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) - .env("MCLI_LOADER_CMD", "npm x tsx"); + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`); console.log(res); }); @@ -232,29 +240,29 @@ Meta.test( const typegraphs2: string[] = []; await t.should("upgrade the typegate to the current version", async () => { + const port = String(t.port + 2); const proc = new Deno.Command("meta-full", { - args: ["typegate"], + args: [ + "typegate", + `--main-url`, + import.meta.resolve("../../../src/main.ts"), + `--import-map-url`, + import.meta.resolve("../../../import_map.json"), + ], env: { ...Deno.env.toObject(), TG_SECRET: tgSecret, TG_ADMIN_PASSWORD: "password", TMP_DIR: typegateTempDir, - TG_PORT: "7899", + TG_PORT: `${port}`, // TODO should not be necessary VERSION: previousVersion, ...syncEnvs, }, stdout: "piped", - stderr: "piped", }).spawn(); const stdout = new Lines(proc.stdout); - const stderr = new Lines(proc.stderr); - - stderr.readWhile((line) => { - console.log("typegate[E]>", line); - return true; - }); await stdout.readWhile((line) => { console.log("typegate>", line); @@ -262,11 +270,10 @@ Meta.test( if (match) { typegraphs2.push(match[1]); } - return !line.includes("typegate ready on 7899"); + return !line.includes(`typegate ready on ${port}`); }); await stdout.close(); - await stderr.close(); proc.kill("SIGKILL"); const status = await proc.status; console.log({ status }); @@ -279,3 +286,152 @@ Meta.test( await Deno.remove(typegateTempDir, { recursive: true }); }, ); + +Meta.test( + { + name: "published SDK tests", + async setup() { + await clearSyncData(syncConfig); + await setupSync(syncConfig); + }, + async teardown() { + await clearSyncData(syncConfig); + }, + }, + async (t) => { + let publishedBin: string = ""; + await t.should("download published cli (fat version)", async () => { + publishedBin = await downloadAndExtractCli(previousVersion); + }); + + const metaBinDir = $.path(publishedBin).parent()!.toString(); + + const tmpDir = $.path(t.tempDir); + const tgSecret = encodeBase64( + globalThis.crypto.getRandomValues(new Uint8Array(64)), + ); + + const typegateTempDir = await tmpDir.join(".metatype").ensureDir(); + + const port = String(t.port - 10); + + const proc = $`bash -c 'meta-old typegate -vvvv'` + .env({ + PATH: `${metaBinDir}:${Deno.env.get("PATH")}`, + TG_SECRET: tgSecret, + TG_ADMIN_PASSWORD: "password", + TMP_DIR: typegateTempDir.toString(), + TG_PORT: `${port}`, + // TODO should not be necessary + VERSION: previousVersion, + DEBUG: "true", + ...syncEnvs, + }) + .stdout("piped") + .noThrow() + .spawn(); + + const stdout = new Lines(proc.stdout()); + console.log("waiting on typegate to be ready"); + + await stdout.readWhile((line) => { + console.error("typegate>", line); + return !line.includes(`typegate ready on ${port}`); + }); + + const tgsDir = $.path(await newTempDir()); + t.addCleanup(() => $.removeIfExists(tgsDir)); + + await tgsDir.join("metatype.yml").writeText(` +typegates: + dev: + url: "http://localhost:${port}" + username: admin + password: password + secrets: + roadmap-func: + POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=roadmap_func2" + BASIC_andim: hunter2 + +typegraphs: + materializers: + prisma: + migrations_path: "migrations" +`); + await t.should("work with JSR npm", async () => { + const npmJsrDir = await tgsDir.join("npm_jsr").ensureDir(); + await $`pnpm init`.cwd(npmJsrDir); + await $`pnpm dlx jsr add @typegraph/sdk@${PUBLISHED_VERSION}`.cwd( + npmJsrDir, + ); + await $.co([ + $.path("examples/typegraphs/func.ts").copy(npmJsrDir.join("tg.ts")), + $.path("examples/typegraphs/scripts").copyToDir(npmJsrDir), + $.path("examples/templates/node/tsconfig.json").copyToDir(npmJsrDir), + npmJsrDir + .join("package.json") + .readJson() + .then((pkg) => + npmJsrDir + .join("package.json") + .writeJson({ ...(pkg as object), type: "module" }) + ), + ]); + + const command = + `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + await $`bash -c ${command}` + .cwd(npmJsrDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + .env("MCLI_LOADER_CMD", "pnpm dlx tsx") + .env("RUST_LOG", "trace"); + }); + + await t.should("work with JSR deno", async () => { + const denoJsrDir = await tgsDir.join("deno_jsr").ensureDir(); + await denoJsrDir.join("deno.json").writeJson({}); + await $`bash -c 'deno add @typegraph/sdk@${PUBLISHED_VERSION}'`.cwd( + denoJsrDir, + ); + await $.co([ + $.path("examples/typegraphs/func.ts").copy(denoJsrDir.join("tg.ts")), + $.path("examples/typegraphs/scripts").copyToDir(denoJsrDir), + ]); + + const command = + `meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.ts`; + await $`bash -c ${command}` + .cwd(denoJsrDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) + .env("RUST_LOG", "trace"); + }); + + await t.should("work with pypa", async () => { + const pypaDir = await tgsDir.join("pypa").ensureDir(); + await $ + .raw`poetry init -n --python=${PYTHON_VERSION} --dependency=typegraph:${PUBLISHED_VERSION}` + .cwd( + pypaDir, + ); + await $.co([ + $`bash -c 'poetry env use python && poetry install'`.cwd(pypaDir), + $.path("examples/typegraphs/func.py").copy(pypaDir.join("tg.py")), + $.path("examples/typegraphs/scripts").copyToDir(pypaDir), + ]); + + const command = + `poetry env use python && meta-old deploy --target dev --allow-dirty --gate http://localhost:${port} -vvv -f tg.py`; + await $`bash -c ${command}` + .cwd(pypaDir) + .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) + .env("MCLI_LOADER_PY", `poetry run python`) + .env("RUST_LOG", "trace"); + }); + + proc.kill("SIGKILL"); + const status = await proc; + console.log({ status }); + await stdout.close(); + }, +); diff --git a/typegate/tests/e2e/templates/templates_test.ts b/typegate/tests/e2e/templates/templates_test.ts index 0adc4beebf..6902b44064 100644 --- a/typegate/tests/e2e/templates/templates_test.ts +++ b/typegate/tests/e2e/templates/templates_test.ts @@ -15,14 +15,25 @@ type LangRuntimeConfig = { }; const envs = { - python: {}, + python: { + RUST_LOG: "trace", + }, deno: { MCLI_LOADER_CMD: "deno run -A --import-map=../../typegate/import_map.json {filepath}", + RUST_LOG: "trace", + }, + node: { + RUST_LOG: "trace", }, - node: {}, } as LangRuntimeConfig>; +const files = { + python: "api/example.py", + deno: "api/example.ts", + node: "api/example.ts", +} as LangRuntimeConfig; + const install = { python: async (_dir: string) => {}, deno: async (dir: string) => { @@ -96,6 +107,8 @@ for (const template of ["python", "deno", "node"] as const) { "--gate", `http://localhost:${t.port}`, "--allow-dirty", + "-f", + files[template], ); console.log(out); }, diff --git a/typegate/tests/metagen/__snapshots__/metagen_test.ts.snap b/typegate/tests/metagen/__snapshots__/metagen_test.ts.snap index bb53ea0e32..ed6358ae7c 100644 --- a/typegate/tests/metagen/__snapshots__/metagen_test.ts.snap +++ b/typegate/tests/metagen/__snapshots__/metagen_test.ts.snap @@ -4,6 +4,107 @@ snapshot[`Metagen within sdk 1`] = ` [ [ "0", + { + content: '# - NOTE: only modules that are imported relatively +# are supported. I.e. prefixed by \`.\` or \`..\` +# - Make sure to include any module imports in the \`deps\` +# array when using external modules with PythonRuntime +from .other_types import Object7, Student, typed_three + + +@typed_three +def three(inp: Object7) -> Student: + # TODO: write your logic here + raise Exception("three not implemented") + +', + overwrite: false, + path: "./workspace/some/base/path/python/other.py", + }, + ], + [ + "1", + { + content: '# - NOTE: only modules that are imported relatively +# are supported. I.e. prefixed by \`.\` or \`..\` +# - Make sure to include any module imports in the \`deps\` +# array when using external modules with PythonRuntime +from .same_hit_types import Object7, TwoInput, Type8Student, TypeString6, typed_fnOne, typed_fnTwo + + +@typed_fnOne +def fnOne(inp: Object7) -> Type8Student: + # TODO: write your logic here + raise Exception("fnOne not implemented") + +@typed_fnTwo +def fnTwo(inp: TwoInput) -> TypeString6: + # TODO: write your logic here + raise Exception("fnTwo not implemented") + +', + overwrite: false, + path: "./workspace/some/base/path/python/same_hit.py", + }, + ], + [ + "2", + { + content: 'package.name = "example_metagen_mdk" +package.edition = "2021" +package.version = "0.0.1" + +[lib] +path = "lib.rs" +crate-type = ["cdylib", "rlib"] + +[dependencies] +anyhow = "1.0.86" +serde = { version = "1.0.203", features = ["derive"] } +serde_json = "1.0.117" +wit-bindgen = "0.26.0" + + +[profile.release] +strip = "symbols" +opt-level = "z"', + overwrite: false, + path: "./workspace/some/base/path/rust/Cargo.toml", + }, + ], + [ + "3", + { + content: " +mod mdk; +pub use mdk::*; + +/* +init_mat! { + hook: || { + // initialize global stuff here if you need it + MatBuilder::new() + // register function handlers here + .register_handler(stubs::MyFunc::erased(MyMat)) + } +} + +struct MyMat; + +// FIXME: use actual types from your mdk here +impl stubs::MyFunc for MyMat { + fn handle(&self, input: types::MyFuncIn, _cx: Ctx) -> anyhow::Result { + unimplemented!() + } +} +*/ +", + overwrite: false, + path: "./workspace/some/base/path/rust/lib.rs", + }, + ], + [ + "4", { content: '// This file was @generated by metagen and is intended // to be generated again on subsequent metagen runs. @@ -65,52 +166,7 @@ export type Func20Handler = Handler; }, ], [ - "1", - { - content: '# - NOTE: only modules that are imported relatively -# are supported. I.e. prefixed by \`.\` or \`..\` -# - Make sure to include any module imports in the \`deps\` -# array when using external modules with PythonRuntime -from .same_hit_types import Object7, TwoInput, TypeString6, typed_fnOne, typed_fnTwo, Type8Student - - -@typed_fnTwo -def fnTwo(inp: TwoInput) -> TypeString6: - # TODO: write your logic here - raise Exception("fnTwo not implemented") - -@typed_fnOne -def fnOne(inp: Object7) -> Type8Student: - # TODO: write your logic here - raise Exception("fnOne not implemented") - -', - overwrite: false, - path: "./workspace/some/base/path/python/same_hit.py", - }, - ], - [ - "2", - { - content: '# - NOTE: only modules that are imported relatively -# are supported. I.e. prefixed by \`.\` or \`..\` -# - Make sure to include any module imports in the \`deps\` -# array when using external modules with PythonRuntime -from .other_types import typed_three, Student, Object7 - - -@typed_three -def three(inp: Object7) -> Student: - # TODO: write your logic here - raise Exception("three not implemented") - -', - overwrite: false, - path: "./workspace/some/base/path/python/other.py", - }, - ], - [ - "3", + "5", { content: 'from types import NoneType from typing import Callable, List, Union, get_origin, ForwardRef, Any @@ -118,7 +174,7 @@ from dataclasses import dataclass, asdict, fields FORWARD_REFS = {} -class Struct(): +class Struct: def repr(self): return asdict(self) @@ -190,13 +246,15 @@ class Struct(): except Exception: return val + @dataclass class Object7(Struct): name: str - FORWARD_REFS["Object7"] = Object7 + + @dataclass class Student(Struct): id: int @@ -204,17 +262,8 @@ class Student(Struct): peers: Union[List["Student"], None] - FORWARD_REFS["Student"] = Student -@dataclass -class TwoInput(Struct): - name: str - - -FORWARD_REFS["TwoInput"] = TwoInput -Type8Student = List["Student"] -TypeString6 = str def __repr(value: Any): @@ -223,33 +272,25 @@ def __repr(value: Any): return value -def typed_fnTwo(user_fn: Callable[[TwoInput], TypeString6]): - def exported_wrapper(raw_inp): - inp: TwoInput = Struct.new(TwoInput, raw_inp) - out: TypeString6 = user_fn(inp) - if isinstance(out, list): - return [__repr(v) for v in out] - return __repr(out) - return exported_wrapper - -def typed_fnOne(user_fn: Callable[[Object7], Type8Student]): +def typed_three(user_fn: Callable[[Object7], Student]): def exported_wrapper(raw_inp): inp: Object7 = Struct.new(Object7, raw_inp) - out: Type8Student = user_fn(inp) + out: Student = user_fn(inp) if isinstance(out, list): return [__repr(v) for v in out] return __repr(out) + return exported_wrapper ', overwrite: true, - path: "./workspace/some/base/path/python/same_hit_types.py", + path: "./workspace/some/base/path/python/other_types.py", }, ], [ - "4", + "6", { content: \`// This file was @generated by metagen and is intended // to be generated again on subsequent metagen runs. @@ -362,7 +403,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.4.4"; + static MT_VERSION: &str = "0.4.6"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } @@ -566,7 +607,7 @@ pub mod stubs { }, ], [ - "5", + "7", { content: 'from types import NoneType from typing import Callable, List, Union, get_origin, ForwardRef, Any @@ -574,7 +615,7 @@ from dataclasses import dataclass, asdict, fields FORWARD_REFS = {} -class Struct(): +class Struct: def repr(self): return asdict(self) @@ -646,13 +687,15 @@ class Struct(): except Exception: return val + @dataclass class Object7(Struct): name: str - FORWARD_REFS["Object7"] = Object7 + + @dataclass class Student(Struct): id: int @@ -660,64 +703,106 @@ class Student(Struct): peers: Union[List["Student"], None] - FORWARD_REFS["Student"] = Student +@dataclass +class TwoInput(Struct): + name: str + + +FORWARD_REFS["TwoInput"] = TwoInput + + +Type8Student = List["Student"] +TypeString6 = str + def __repr(value: Any): if isinstance(value, Struct): return value.repr() return value -def typed_three(user_fn: Callable[[Object7], Student]): + +def typed_fnOne(user_fn: Callable[[Object7], Type8Student]): def exported_wrapper(raw_inp): inp: Object7 = Struct.new(Object7, raw_inp) - out: Student = user_fn(inp) + out: Type8Student = user_fn(inp) if isinstance(out, list): return [__repr(v) for v in out] return __repr(out) + + return exported_wrapper + + +def typed_fnTwo(user_fn: Callable[[TwoInput], TypeString6]): + def exported_wrapper(raw_inp): + inp: TwoInput = Struct.new(TwoInput, raw_inp) + out: TypeString6 = user_fn(inp) + if isinstance(out, list): + return [__repr(v) for v in out] + return __repr(out) + return exported_wrapper ', overwrite: true, - path: "./workspace/some/base/path/python/other_types.py", + path: "./workspace/some/base/path/python/same_hit_types.py", }, ], +] +`; + +snapshot[`Metagen within sdk 2`] = ` +[ [ - "6", + "0", { - content: " -mod mdk; -pub use mdk::*; + content: '# - NOTE: only modules that are imported relatively +# are supported. I.e. prefixed by \`.\` or \`..\` +# - Make sure to include any module imports in the \`deps\` +# array when using external modules with PythonRuntime +from .other_types import Object7, Student, typed_three -/* -init_mat! { - hook: || { - // initialize global stuff here if you need it - MatBuilder::new() - // register function handlers here - .register_handler(stubs::MyFunc::erased(MyMat)) - } -} -struct MyMat; +@typed_three +def three(inp: Object7) -> Student: + # TODO: write your logic here + raise Exception("three not implemented") -// FIXME: use actual types from your mdk here -impl stubs::MyFunc for MyMat { - fn handle(&self, input: types::MyFuncIn, _cx: Ctx) -> anyhow::Result { - unimplemented!() - } -} -*/ -", +', overwrite: false, - path: "./workspace/some/base/path/rust/lib.rs", + path: "./workspace/some/base/path/python/other.py", }, ], [ - "7", + "1", + { + content: '# - NOTE: only modules that are imported relatively +# are supported. I.e. prefixed by \`.\` or \`..\` +# - Make sure to include any module imports in the \`deps\` +# array when using external modules with PythonRuntime +from .same_hit_types import Object7, TwoInput, Type8Student, TypeString6, typed_fnOne, typed_fnTwo + + +@typed_fnOne +def fnOne(inp: Object7) -> Type8Student: + # TODO: write your logic here + raise Exception("fnOne not implemented") + +@typed_fnTwo +def fnTwo(inp: TwoInput) -> TypeString6: + # TODO: write your logic here + raise Exception("fnTwo not implemented") + +', + overwrite: false, + path: "./workspace/some/base/path/python/same_hit.py", + }, + ], + [ + "2", { content: 'package.name = "example_metagen_mdk" package.edition = "2021" @@ -741,13 +826,39 @@ opt-level = "z"', path: "./workspace/some/base/path/rust/Cargo.toml", }, ], -] -`; + [ + "3", + { + content: " +mod mdk; +pub use mdk::*; -snapshot[`Metagen within sdk 2`] = ` -[ +/* +init_mat! { + hook: || { + // initialize global stuff here if you need it + MatBuilder::new() + // register function handlers here + .register_handler(stubs::MyFunc::erased(MyMat)) + } +} + +struct MyMat; + +// FIXME: use actual types from your mdk here +impl stubs::MyFunc for MyMat { + fn handle(&self, input: types::MyFuncIn, _cx: Ctx) -> anyhow::Result { + unimplemented!() + } +} +*/ +", + overwrite: false, + path: "./workspace/some/base/path/rust/lib.rs", + }, + ], [ - "0", + "4", { content: '// This file was @generated by metagen and is intended // to be generated again on subsequent metagen runs. @@ -809,52 +920,7 @@ export type Func20Handler = Handler; }, ], [ - "1", - { - content: '# - NOTE: only modules that are imported relatively -# are supported. I.e. prefixed by \`.\` or \`..\` -# - Make sure to include any module imports in the \`deps\` -# array when using external modules with PythonRuntime -from .same_hit_types import Object7, TwoInput, TypeString6, typed_fnOne, typed_fnTwo, Type8Student - - -@typed_fnTwo -def fnTwo(inp: TwoInput) -> TypeString6: - # TODO: write your logic here - raise Exception("fnTwo not implemented") - -@typed_fnOne -def fnOne(inp: Object7) -> Type8Student: - # TODO: write your logic here - raise Exception("fnOne not implemented") - -', - overwrite: false, - path: "./workspace/some/base/path/python/same_hit.py", - }, - ], - [ - "2", - { - content: '# - NOTE: only modules that are imported relatively -# are supported. I.e. prefixed by \`.\` or \`..\` -# - Make sure to include any module imports in the \`deps\` -# array when using external modules with PythonRuntime -from .other_types import typed_three, Student, Object7 - - -@typed_three -def three(inp: Object7) -> Student: - # TODO: write your logic here - raise Exception("three not implemented") - -', - overwrite: false, - path: "./workspace/some/base/path/python/other.py", - }, - ], - [ - "3", + "5", { content: 'from types import NoneType from typing import Callable, List, Union, get_origin, ForwardRef, Any @@ -862,7 +928,7 @@ from dataclasses import dataclass, asdict, fields FORWARD_REFS = {} -class Struct(): +class Struct: def repr(self): return asdict(self) @@ -934,13 +1000,15 @@ class Struct(): except Exception: return val + @dataclass class Object7(Struct): name: str - FORWARD_REFS["Object7"] = Object7 + + @dataclass class Student(Struct): id: int @@ -948,52 +1016,35 @@ class Student(Struct): peers: Union[List["Student"], None] - FORWARD_REFS["Student"] = Student -@dataclass -class TwoInput(Struct): - name: str -FORWARD_REFS["TwoInput"] = TwoInput -Type8Student = List["Student"] -TypeString6 = str - - def __repr(value: Any): if isinstance(value, Struct): return value.repr() return value -def typed_fnTwo(user_fn: Callable[[TwoInput], TypeString6]): - def exported_wrapper(raw_inp): - inp: TwoInput = Struct.new(TwoInput, raw_inp) - out: TypeString6 = user_fn(inp) - if isinstance(out, list): - return [__repr(v) for v in out] - return __repr(out) - return exported_wrapper - -def typed_fnOne(user_fn: Callable[[Object7], Type8Student]): +def typed_three(user_fn: Callable[[Object7], Student]): def exported_wrapper(raw_inp): inp: Object7 = Struct.new(Object7, raw_inp) - out: Type8Student = user_fn(inp) + out: Student = user_fn(inp) if isinstance(out, list): return [__repr(v) for v in out] return __repr(out) + return exported_wrapper ', overwrite: true, - path: "./workspace/some/base/path/python/same_hit_types.py", + path: "./workspace/some/base/path/python/other_types.py", }, ], [ - "4", + "6", { content: \`// This file was @generated by metagen and is intended // to be generated again on subsequent metagen runs. @@ -1106,7 +1157,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.4.4"; + static MT_VERSION: &str = "0.4.6"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } @@ -1310,7 +1361,7 @@ pub mod stubs { }, ], [ - "5", + "7", { content: 'from types import NoneType from typing import Callable, List, Union, get_origin, ForwardRef, Any @@ -1318,7 +1369,7 @@ from dataclasses import dataclass, asdict, fields FORWARD_REFS = {} -class Struct(): +class Struct: def repr(self): return asdict(self) @@ -1390,13 +1441,15 @@ class Struct(): except Exception: return val + @dataclass class Object7(Struct): name: str - FORWARD_REFS["Object7"] = Object7 + + @dataclass class Student(Struct): id: int @@ -1404,85 +1457,52 @@ class Student(Struct): peers: Union[List["Student"], None] - FORWARD_REFS["Student"] = Student +@dataclass +class TwoInput(Struct): + name: str + + +FORWARD_REFS["TwoInput"] = TwoInput + + +Type8Student = List["Student"] +TypeString6 = str + def __repr(value: Any): if isinstance(value, Struct): return value.repr() return value -def typed_three(user_fn: Callable[[Object7], Student]): + +def typed_fnOne(user_fn: Callable[[Object7], Type8Student]): def exported_wrapper(raw_inp): inp: Object7 = Struct.new(Object7, raw_inp) - out: Student = user_fn(inp) + out: Type8Student = user_fn(inp) if isinstance(out, list): return [__repr(v) for v in out] return __repr(out) - return exported_wrapper - - -', - overwrite: true, - path: "./workspace/some/base/path/python/other_types.py", - }, - ], - [ - "6", - { - content: " -mod mdk; -pub use mdk::*; - -/* -init_mat! { - hook: || { - // initialize global stuff here if you need it - MatBuilder::new() - // register function handlers here - .register_handler(stubs::MyFunc::erased(MyMat)) - } -} -struct MyMat; + return exported_wrapper -// FIXME: use actual types from your mdk here -impl stubs::MyFunc for MyMat { - fn handle(&self, input: types::MyFuncIn, _cx: Ctx) -> anyhow::Result { - unimplemented!() - } -} -*/ -", - overwrite: false, - path: "./workspace/some/base/path/rust/lib.rs", - }, - ], - [ - "7", - { - content: 'package.name = "example_metagen_mdk" -package.edition = "2021" -package.version = "0.0.1" -[lib] -path = "lib.rs" -crate-type = ["cdylib", "rlib"] +def typed_fnTwo(user_fn: Callable[[TwoInput], TypeString6]): + def exported_wrapper(raw_inp): + inp: TwoInput = Struct.new(TwoInput, raw_inp) + out: TypeString6 = user_fn(inp) + if isinstance(out, list): + return [__repr(v) for v in out] + return __repr(out) -[dependencies] -anyhow = "1.0.86" -serde = { version = "1.0.203", features = ["derive"] } -serde_json = "1.0.117" -wit-bindgen = "0.26.0" + return exported_wrapper -[profile.release] -strip = "symbols" -opt-level = "z"', - overwrite: false, - path: "./workspace/some/base/path/rust/Cargo.toml", +', + overwrite: true, + path: "./workspace/some/base/path/python/same_hit_types.py", }, ], ] diff --git a/typegate/tests/metagen/metagen_test.ts b/typegate/tests/metagen/metagen_test.ts index 945c730c68..678ab53795 100644 --- a/typegate/tests/metagen/metagen_test.ts +++ b/typegate/tests/metagen/metagen_test.ts @@ -8,7 +8,8 @@ import { assertEquals } from "std/assert/mod.ts"; import { GraphQLQuery } from "../utils/query/graphql_query.ts"; import { JSONValue } from "../../src/utils.ts"; import { testDir } from "../utils/dir.ts"; -import $ from "jsr:@david/dax@0.41.0"; +import $ from "dax"; +import { z as zod } from "zod"; const denoJson = resolve(testDir, "../deno.jsonc"); @@ -444,7 +445,9 @@ Meta.test("mdk table suite", async (metaTest) => { } }); -Meta.test("client table suite", async (metaTest) => { +Meta.test({ + name: "client table suite", +}, async (metaTest) => { const scriptsPath = join(import.meta.dirname!, "typegraphs/sample"); assertEquals( @@ -460,49 +463,86 @@ Meta.test("client table suite", async (metaTest) => { ).code, 0, ); - // FIXME: dax replaces commands to deno with - // commands to xtask - Deno.execPath = () => "deno"; + const expectedSchemaQ = zod.object({ + user: zod.object({ + id: zod.string(), + email: zod.string(), + post1: zod.object({ + id: zod.string(), + slug: zod.string(), + title: zod.string(), + }).array(), + post2: zod.object({ + // NOTE: no id + slug: zod.string(), + title: zod.string(), + }).array(), + }), + posts: zod.object({ + id: zod.string(), + slug: zod.string(), + title: zod.string(), + }), + scalarNoArgs: zod.string(), + }); + const expectedSchemaM = zod.object({ + scalarArgs: zod.string(), + compositeNoArgs: zod.object({ + id: zod.string(), + slug: zod.string(), + title: zod.string(), + }), + compositeArgs: zod.object({ + id: zod.string(), + slug: zod.string(), + title: zod.string(), + }), + }); + const expectedSchema = zod.tuple([ + expectedSchemaQ, + expectedSchemaQ, + expectedSchemaM, + expectedSchemaQ, + expectedSchemaM, + ]); const cases = [ { skip: false, name: "client_ts", - command: $`deno run -A main.ts`.cwd( + // NOTE: dax replaces commands to deno with + // commands to xtask so we go through bah + command: $`bash -c "deno run -A main.ts"`.cwd( join(scriptsPath, "ts"), ), - expected: { - posts: [ - { slug: "hair", title: "I dyed my hair!" }, - { slug: "hello", title: "Hello World!" }, - ], - user: { - id: "69099108-e48b-43c9-ad02-c6514eaad6e3", - email: "yuse@mail.box", - posts: [ - { slug: "hair", title: "I dyed my hair!" }, - { slug: "hello", title: "Hello World!" }, - ], - }, - }, + expected: expectedSchema, + }, + { + name: "client_py", + command: $`python3 main.py`.cwd( + join(scriptsPath, "py"), + ), + expected: expectedSchema, }, ]; await using _engine = await metaTest.engine( "metagen/typegraphs/sample.ts", + { + secrets: { + POSTGRES: + "postgresql://postgres:password@localhost:5432/db?schema=sample", + }, + }, ); - for (const prefix of ["rs", "ts", "py"]) { - await metaTest.should(`mdk data go round ${prefix}`, async (t) => { - for (const { name, command, expected, skip } of cases) { - if (skip) { - continue; - } - await t.step(name, async () => { - const res = await command - .env({ "TG_PORT": metaTest.port.toString() }) - .json(); - assertEquals(res, expected); - }); - } + for (const { name, command, expected, skip } of cases) { + if (skip) { + continue; + } + await metaTest.should(name, async () => { + const res = await command + .env({ "TG_PORT": metaTest.port.toString() }) + .json(); + expected.parse(res); }); } }); diff --git a/typegate/tests/metagen/typegraphs/identities/py/handlers_types.py b/typegate/tests/metagen/typegraphs/identities/py/handlers_types.py index 60a042d742..963935686b 100644 --- a/typegate/tests/metagen/typegraphs/identities/py/handlers_types.py +++ b/typegate/tests/metagen/typegraphs/identities/py/handlers_types.py @@ -144,7 +144,7 @@ class Cycles1Args(Struct): class Cycles1(Struct): phantom1: Union[str, None] to2: Union[Union["Cycles1", Union["Branch33A", "Branch33B"]], None] - list3: Union[List[Union["Branch33B", "Branch33A"]], None] + list3: Union[List[Union["Branch33A", "Branch33B"]], None] FORWARD_REFS["Cycles1"] = Cycles1 @@ -162,7 +162,7 @@ class Branch33A(Struct): @dataclass class Branch33B(Struct): phantom3b: Union[str, None] - to2: Union[Union["Cycles1", Union["Branch33B", "Branch33A"]], None] + to2: Union[Union["Cycles1", Union["Branch33A", "Branch33B"]], None] FORWARD_REFS["Branch33B"] = Branch33B @@ -209,10 +209,10 @@ def __repr(value: Any): return value -def typed_composites(user_fn: Callable[[CompositesArgs], Composites]): +def typed_primitives(user_fn: Callable[[PrimitivesArgs], Primitives]): def exported_wrapper(raw_inp): - inp: CompositesArgs = Struct.new(CompositesArgs, raw_inp) - out: Composites = user_fn(inp) + inp: PrimitivesArgs = Struct.new(PrimitivesArgs, raw_inp) + out: Primitives = user_fn(inp) if isinstance(out, list): return [__repr(v) for v in out] return __repr(out) @@ -220,10 +220,10 @@ def exported_wrapper(raw_inp): return exported_wrapper -def typed_primitives(user_fn: Callable[[PrimitivesArgs], Primitives]): +def typed_composites(user_fn: Callable[[CompositesArgs], Composites]): def exported_wrapper(raw_inp): - inp: PrimitivesArgs = Struct.new(PrimitivesArgs, raw_inp) - out: Primitives = user_fn(inp) + inp: CompositesArgs = Struct.new(CompositesArgs, raw_inp) + out: Composites = user_fn(inp) if isinstance(out, list): return [__repr(v) for v in out] return __repr(out) diff --git a/typegate/tests/metagen/typegraphs/identities/rs/mdk.rs b/typegate/tests/metagen/typegraphs/identities/rs/mdk.rs index 3ed7c2ad40..dd527d045e 100644 --- a/typegate/tests/metagen/typegraphs/identities/rs/mdk.rs +++ b/typegate/tests/metagen/typegraphs/identities/rs/mdk.rs @@ -109,7 +109,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.4.4"; + static MT_VERSION: &str = "0.4.6"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } diff --git a/typegate/tests/metagen/typegraphs/identities/ts/mdk.ts b/typegate/tests/metagen/typegraphs/identities/ts/mdk.ts index 4d5c593d1f..66f78c6a3f 100644 --- a/typegate/tests/metagen/typegraphs/identities/ts/mdk.ts +++ b/typegate/tests/metagen/typegraphs/identities/ts/mdk.ts @@ -73,7 +73,7 @@ export type Union27 = | (string) | (Branch4again); export type Composites = { - opt: (string) | null | undefined; + opt?: (string) | null | undefined; either: Either19; union: Union27; list: Array; @@ -83,13 +83,13 @@ export type CompositesArgs = { }; export type Cycles148 = Cycles1 | null | undefined; export type Branch33A = { - phantom3a: (string) | null | undefined; - to1: Cycles148; + phantom3a?: (string) | null | undefined; + to1?: Cycles148; }; export type Cycles254 = Cycles2 | null | undefined; export type Branch33B = { - phantom3b: (string) | null | undefined; - to2: Cycles254; + phantom3b?: (string) | null | undefined; + to2?: Cycles254; }; export type Cycles3 = | (Branch33A) @@ -101,27 +101,27 @@ export type Cycles235 = Cycles2 | null | undefined; export type Cycles337 = Array; export type Cycles33837 = Cycles337 | null | undefined; export type Cycles1 = { - phantom1: (string) | null | undefined; - to2: Cycles235; - list3: Cycles33837; + phantom1?: (string) | null | undefined; + to2?: Cycles235; + list3?: Cycles33837; }; export type Cycles1Args = { data: Cycles1; }; export type SimpleCycles174 = SimpleCycles1 | null | undefined; export type SimpleCycles3 = { - phantom3: (string) | null | undefined; - to1: SimpleCycles174; + phantom3?: (string) | null | undefined; + to1?: SimpleCycles174; }; export type SimpleCycles368 = SimpleCycles3 | null | undefined; export type SimpleCycles2 = { - phantom2: (string) | null | undefined; - to3: SimpleCycles368; + phantom2?: (string) | null | undefined; + to3?: SimpleCycles368; }; export type SimpleCycles262 = SimpleCycles2 | null | undefined; export type SimpleCycles1 = { - phantom1: (string) | null | undefined; - to2: SimpleCycles262; + phantom1?: (string) | null | undefined; + to2?: SimpleCycles262; }; export type SimpleCycles1Args = { data: SimpleCycles1; diff --git a/typegate/tests/metagen/typegraphs/sample.ts b/typegate/tests/metagen/typegraphs/sample.ts index 59c41ff3ff..88d1f62a98 100644 --- a/typegate/tests/metagen/typegraphs/sample.ts +++ b/typegate/tests/metagen/typegraphs/sample.ts @@ -3,13 +3,14 @@ import { fx, Policy, t, typegraph } from "@typegraph/sdk/index.ts"; import { DenoRuntime } from "@typegraph/sdk/runtimes/deno.ts"; +import { RandomRuntime } from "@typegraph/sdk/runtimes/random.ts"; const genUser = () => ({ id: "69099108-e48b-43c9-ad02-c6514eaad6e3", email: "yuse@mail.box", }); -const genPosts = () => [ +const _genPosts = () => [ { slug: "hair", title: "I dyed my hair!" }, { slug: "hello", title: "Hello World!" }, ]; @@ -17,40 +18,47 @@ const genPosts = () => [ export const tg = await typegraph({ name: "sample", builder(g) { + const random = new RandomRuntime({ seed: 0 }); const deno = new DenoRuntime(); + const post = t.struct({ + id: t.uuid({ asId: true, config: { auto: true } }), slug: t.string(), title: t.string(), - }, { name: "Post" }); - - const getPosts = deno.func( - t.struct({ filter: t.string().optional() }).rename("GetPostsInput"), - t.list(post), - { - code: genPosts, - effect: fx.read(), - }, - ).withPolicy(Policy.public()); + }, { name: "post" }); const user = t.struct({ - id: t.uuid(), + id: t.uuid({ asId: true, config: { auto: true } }), email: t.email(), - posts: getPosts, - }, { name: "User" }); + posts: t.list(g.ref("post")), + }, { name: "user" }); g.expose( { - getUser: deno.func( - t.struct({ id: t.string() }).rename("GetUserInput"), - user, + getUser: random.gen(user), + getPosts: random.gen(post), + + scalarNoArgs: random.gen(t.string()), + scalarArgs: deno.func( + post, + t.string(), + { + code: () => "hello", + effect: fx.update(), + }, + ), + compositeNoArgs: deno.func(t.struct({}), post, { + code: genUser, + effect: fx.update(), + }), + compositeArgs: deno.func( + t.struct({ id: t.string() }), + post, { code: genUser, - effect: fx.read(), + effect: fx.update(), }, ), - getPosts, - - noArgs: deno.func(t.struct({}), user, { code: genUser }), }, Policy.public(), ); diff --git a/typegate/tests/metagen/typegraphs/sample/metatype.yml b/typegate/tests/metagen/typegraphs/sample/metatype.yml index 97b5b5d176..0c7e86ae27 100644 --- a/typegate/tests/metagen/typegraphs/sample/metatype.yml +++ b/typegate/tests/metagen/typegraphs/sample/metatype.yml @@ -10,3 +10,6 @@ metagen: - generator: client_ts path: ./ts/ typegraph_path: ../sample.ts + - generator: client_py + path: ./py/ + typegraph_path: ../sample.ts diff --git a/typegate/tests/metagen/typegraphs/sample/py/client.py b/typegate/tests/metagen/typegraphs/sample/py/client.py new file mode 100644 index 0000000000..9f88eb10bd --- /dev/null +++ b/typegate/tests/metagen/typegraphs/sample/py/client.py @@ -0,0 +1,686 @@ +# This file was @generated by metagen and is intended +# to be generated again on subsequent metagen runs. + +import typing +import dataclasses as dc +import json +import urllib.request as request +import urllib.error +import http.client as http_c + + +def selection_to_nodes( + selection: "SelectionGeneric", + metas: typing.Dict[str, typing.Callable[[], "NodeMeta"]], + parent_path: str, +) -> typing.List["SelectNode[typing.Any]"]: + out = [] + flags = selection.get("_") + if flags is not None and not isinstance(flags, SelectionFlags): + raise Exception( + f"selection field '_' should be of type SelectionFlags but found {type(flags)}" + ) + select_all = True if flags is not None and flags.select_all else False + found_nodes = set(selection.keys()) + for node_name, meta_fn in metas.items(): + found_nodes.discard(node_name) + + node_selection = selection.get(node_name) + if node_selection is False or (node_selection is None and not select_all): + # this node was not selected + continue + + meta = meta_fn() + + # we splat out any aliasing of nodes here + node_instances = ( + [(key, val) for key, val in node_selection.items.items()] + if isinstance(node_selection, Alias) + else [(node_name, node_selection)] + ) + + for instance_name, instance_selection in node_instances: + # print(parent_path, instance_selection, meta.sub_nodes, instance_selection, flags) + if instance_selection is False or ( + instance_selection is None and not select_all + ): + # this instance was not selected + continue + if isinstance(instance_selection, Alias): + raise Exception( + f"nested Alias node discovored at {parent_path}.{instance_name}" + ) + + instance_args: typing.Optional[NodeArgs] = None + if meta.arg_types is not None: + arg = instance_selection + + if isinstance(arg, tuple): + arg = arg[0] + + # arg types are always TypedDicts + if not isinstance(arg, dict): + raise Exception( + f"node at {parent_path}.{instance_name} is a node that " + + "requires arguments " + + f"but detected argument is typeof {type(arg)}" + ) + + # convert arg dict to NodeArgs + expected_args = {key: val for key, val in meta.arg_types.items()} + instance_args = {} + for key, val in arg.items(): + ty_name = expected_args.pop(key) + if ty_name is None: + raise Exception( + f"unexpected argument ${key} at {parent_path}.{instance_name}" + ) + instance_args[key] = NodeArgValue(ty_name, val) + + sub_nodes: typing.Optional[typing.List[SelectNode]] = None + if meta.sub_nodes is not None: + sub_selections = instance_selection + + # if node requires both selection and arg, it must be + # a CompositeSelectArgs which is a tuple selection + if meta.arg_types is not None: + if not isinstance(sub_selections, tuple): + raise Exception( + f"node at {parent_path}.{instance_name} is a composite " + + "that requires an argument object " + + f"but selection is typeof {type(sub_selections)}" + ) + sub_selections = sub_selections[1] + + elif isinstance(sub_selections, tuple): + raise Exception( + f"node at {parent_path}.{instance_name} " + + "is a composite that takes no arguments " + + f"but selection is typeof {type(instance_selection)}", + ) + + # selection types are always TypedDicts as well + if not isinstance(sub_selections, dict): + raise Exception( + f"node at {parent_path}.{instance_name} " + + "is a no argument composite but first element of " + + f"selection is typeof {type(instance_selection)}", + ) + sub_nodes = selection_to_nodes( + typing.cast("SelectionGeneric", sub_selections), + meta.sub_nodes, + f"{parent_path}.{instance_name}", + ) + + node = SelectNode(node_name, instance_name, instance_args, sub_nodes) + out.append(node) + + found_nodes.discard("_") + if len(found_nodes) > 0: + raise Exception( + f"unexpected nodes found in selection set at {parent_path}: {found_nodes}", + ) + return out + + +# Util types section # + +Out = typing.TypeVar("Out", covariant=True) + +T = typing.TypeVar("T") + +ArgT = typing.TypeVar("ArgT", bound=typing.Mapping[str, typing.Any]) +SelectionT = typing.TypeVar("SelectionT") + +# Query node types section # + + +@dc.dataclass +class SelectNode(typing.Generic[Out]): + node_name: str + instance_name: str + args: typing.Optional["NodeArgs"] + sub_nodes: typing.Optional[typing.List["SelectNode"]] + + +@dc.dataclass +class QueryNode(SelectNode[Out]): + pass + + +@dc.dataclass +class MutationNode(SelectNode[Out]): + pass + + +@dc.dataclass +class NodeMeta: + sub_nodes: typing.Optional[typing.Dict[str, typing.Callable[[], "NodeMeta"]]] = None + arg_types: typing.Optional[typing.Dict[str, str]] = None + + +# Argument types section # + + +@dc.dataclass +class NodeArgValue: + type_name: str + value: typing.Any + + +NodeArgs = typing.Dict[str, NodeArgValue] + + +class PlaceholderValue(typing.Generic[T]): + def __init__(self, key: str): + self.key = key + + +PlaceholderArgs = typing.Dict[str, PlaceholderValue] + + +class PreparedArgs: + def get(self, key: str) -> PlaceholderValue: + return PlaceholderValue(key) + + +# Selection types section # + + +class Alias(typing.Generic[SelectionT]): + """ + Request multiple instances of a single node under different + aliases. + """ + + def __init__(self, **aliases: SelectionT): + self.items = aliases + + +ScalarSelectNoArgs = typing.Union[bool, Alias[typing.Literal[True]], None] +ScalarSelectArgs = typing.Union[ + ArgT, + PlaceholderArgs, + Alias[typing.Union[ArgT, PlaceholderArgs]], + typing.Literal[False], + None, +] +CompositeSelectNoArgs = typing.Union[ + SelectionT, Alias[SelectionT], typing.Literal[False], None +] +CompositeSelectArgs = typing.Union[ + typing.Tuple[typing.Union[ArgT, PlaceholderArgs], SelectionT], + Alias[typing.Tuple[typing.Union[ArgT, PlaceholderArgs], SelectionT]], + typing.Literal[False], + None, +] + + +# FIXME: ideally this would be a TypedDict +# to allow full dict based queries but +# we need to reliably identify SelectionFlags at runtime +# but TypedDicts don't allow instanceof +@dc.dataclass +class SelectionFlags: + select_all: typing.Union[bool, None] = None + + +class Selection(typing.TypedDict, total=False): + _: SelectionFlags + + +SelectionGeneric = typing.Mapping[ + str, + typing.Union[ + SelectionFlags, + ScalarSelectNoArgs, + ScalarSelectArgs[typing.Mapping[str, typing.Any]], + CompositeSelectNoArgs["SelectionGeneric"], + # FIXME: should be possible to make SelectionT here `SelectionGeneric` recursively + # but something breaks + CompositeSelectArgs[typing.Mapping[str, typing.Any], typing.Any], + ], +] + +# GraphQL section + + +@dc.dataclass +class GraphQLTransportOptions: + headers: typing.Dict[str, str] + + +@dc.dataclass +class GraphQLRequest: + addr: str + method: str + headers: typing.Dict[str, str] + body: bytes + + +@dc.dataclass +class GraphQLResponse: + req: GraphQLRequest + status: int + headers: typing.Dict[str, str] + body: bytes + + +def convert_query_node_gql( + node: SelectNode, + variables: typing.Dict[str, NodeArgValue], +): + out = ( + f"{node.instance_name}: {node.node_name}" + if node.instance_name != node.node_name + else node.node_name + ) + if node.args is not None: + arg_row = "" + for key, val in node.args.items(): + name = f"in{len(variables)}" + variables[name] = val + arg_row += f"{key}: ${name}, " + if len(arg_row): + out += f"({arg_row[:-2]})" + + if node.sub_nodes is not None: + sub_node_list = "" + for node in node.sub_nodes: + sub_node_list += f"{convert_query_node_gql(node, variables)} " + out += f" {{ {sub_node_list}}}" + return out + + +class GraphQLTransportBase: + def __init__( + self, + addr: str, + opts: GraphQLTransportOptions, + ty_to_gql_ty_map: typing.Dict[str, str], + ): + self.addr = addr + self.opts = opts + self.ty_to_gql_ty_map = ty_to_gql_ty_map + + def build_gql( + self, + query: typing.Mapping[str, SelectNode], + ty: typing.Union[typing.Literal["query"], typing.Literal["mutation"]], + name: str = "", + ): + variables: typing.Dict[str, NodeArgValue] = {} + root_nodes = "" + for key, node in query.items(): + fixed_node = SelectNode(node.node_name, key, node.args, node.sub_nodes) + root_nodes += f" {convert_query_node_gql(fixed_node, variables)}\n" + args_row = "" + for key, val in variables.items(): + args_row += f"${key}: {self.ty_to_gql_ty_map[val.type_name]}, " + + if len(args_row): + args_row = f"({args_row[:-2]})" + + doc = f"{ty} {name}{args_row} {{\n{root_nodes}}}" + return (doc, {key: val.value for key, val in variables.items()}) + + def build_req( + self, + doc: str, + variables: typing.Dict[str, typing.Any], + opts: typing.Optional[GraphQLTransportOptions] = None, + ): + headers = {} + headers.update(self.opts.headers) + if opts: + headers.update(opts.headers) + headers.update( + { + "accept": "application/json", + "content-type": "application/json", + } + ) + data = json.dumps({"query": doc, "variables": variables}).encode("utf-8") + return GraphQLRequest( + addr=self.addr, + method="POST", + headers=headers, + body=data, + ) + + def handle_response(self, res: GraphQLResponse): + if res.status != 200: + raise Exception(f"graphql request failed with status {res.status}", res) + if res.headers.get("content-type") != "application/json": + raise Exception("unexpected content-type in graphql response", res) + parsed = json.loads(res.body) + if parsed.get("errors"): + raise Exception("graphql errors in response", parsed) + return parsed["data"] + + +class GraphQLTransportUrlib(GraphQLTransportBase): + def fetch( + self, + doc: str, + variables: typing.Dict[str, typing.Any], + opts: typing.Optional[GraphQLTransportOptions], + ): + req = self.build_req(doc, variables, opts) + try: + with request.urlopen( + request.Request( + url=req.addr, method=req.method, headers=req.headers, data=req.body + ) + ) as res: + http_res: http_c.HTTPResponse = res + return self.handle_response( + GraphQLResponse( + req, + status=http_res.status, + body=http_res.read(), + headers={key: val for key, val in http_res.headers.items()}, + ) + ) + except request.HTTPError as res: + return self.handle_response( + GraphQLResponse( + req, + status=res.status or 599, + body=res.read(), + headers={key: val for key, val in res.headers.items()}, + ) + ) + except urllib.error.URLError as err: + raise Exception(f"URL error: {err.reason}") + + def query( + self, + inp: typing.Dict[str, QueryNode[Out]], + opts: typing.Optional[GraphQLTransportOptions] = None, + name: str = "", + ) -> typing.Dict[str, Out]: + doc, variables = self.build_gql( + {key: val for key, val in inp.items()}, "query", name + ) + # print(doc,variables) + # return {} + return self.fetch(doc, variables, opts) + + def mutation( + self, + inp: typing.Dict[str, MutationNode[Out]], + opts: typing.Optional[GraphQLTransportOptions] = None, + name: str = "", + ) -> typing.Dict[str, Out]: + doc, variables = self.build_gql( + {key: val for key, val in inp.items()}, "mutation", name + ) + return self.fetch(doc, variables, opts) + + def prepare_query( + self, + fun: typing.Callable[[PreparedArgs], typing.Dict[str, QueryNode[Out]]], + name: str = "", + ) -> "PreparedRequestUrlib[Out]": + return PreparedRequestUrlib(self, fun, "query", name) + + def prepare_mutation( + self, + fun: typing.Callable[[PreparedArgs], typing.Dict[str, MutationNode[Out]]], + name: str = "", + ) -> "PreparedRequestUrlib[Out]": + return PreparedRequestUrlib(self, fun, "mutation", name) + + +class PreparedRequestBase(typing.Generic[Out]): + def __init__( + self, + transport: GraphQLTransportBase, + fun: typing.Callable[[PreparedArgs], typing.Mapping[str, SelectNode[Out]]], + ty: typing.Union[typing.Literal["query"], typing.Literal["mutation"]], + name: str = "", + ): + dry_run_node = fun(PreparedArgs()) + doc, variables = transport.build_gql(dry_run_node, ty, name) + self.doc = doc + self._mapping = variables + self.transport = transport + + def resolve_vars( + self, + args: typing.Mapping[str, typing.Any], + mappings: typing.Dict[str, typing.Any], + ): + resolved: typing.Dict[str, typing.Any] = {} + for key, val in mappings.items(): + if isinstance(val, PlaceholderValue): + resolved[key] = args[val.key] + elif isinstance(val, dict): + self.resolve_vars(args, val) + else: + resolved[key] = val + return resolved + + +class PreparedRequestUrlib(PreparedRequestBase[Out]): + def __init__( + self, + transport: GraphQLTransportUrlib, + fun: typing.Callable[[PreparedArgs], typing.Mapping[str, SelectNode[Out]]], + ty: typing.Union[typing.Literal["query"], typing.Literal["mutation"]], + name: str = "", + ): + super().__init__(transport, fun, ty, name) + self.transport = transport + + def perform( + self, + args: typing.Mapping[str, typing.Any], + opts: typing.Optional[GraphQLTransportOptions] = None, + ) -> typing.Dict[str, Out]: + resolved_vars = self.resolve_vars(args, self._mapping) + return self.transport.fetch(self.doc, resolved_vars, opts) + + +# Query graph section # + + +class QueryGraphBase: + def __init__(self, ty_to_gql_ty_map: typing.Dict[str, str]): + self.ty_to_gql_ty_map = ty_to_gql_ty_map + + def graphql_sync( + self, addr: str, opts: typing.Optional[GraphQLTransportOptions] = None + ): + return GraphQLTransportUrlib( + addr, opts or GraphQLTransportOptions({}), self.ty_to_gql_ty_map + ) + + +# - - - - - - - - - -- - - - - - - -- - - # + + +class NodeDescs: + @staticmethod + def scalar(): + return NodeMeta() + + @staticmethod + def Post(): + return NodeMeta( + sub_nodes={ + "id": NodeDescs.scalar, + "slug": NodeDescs.scalar, + "title": NodeDescs.scalar, + }, + ) + + @staticmethod + def User(): + return NodeMeta( + sub_nodes={ + "id": NodeDescs.scalar, + "email": NodeDescs.scalar, + "posts": NodeDescs.Post, + }, + ) + + @staticmethod + def Func23(): + return NodeMeta( + sub_nodes=NodeDescs.User().sub_nodes, + ) + + @staticmethod + def Func25(): + return NodeMeta( + sub_nodes=NodeDescs.scalar().sub_nodes, + ) + + @staticmethod + def Func26(): + return NodeMeta( + sub_nodes=NodeDescs.scalar().sub_nodes, + arg_types={ + "id": "String4", + "slug": "String1", + "title": "String1", + }, + ) + + @staticmethod + def Func27(): + return NodeMeta( + sub_nodes=NodeDescs.Post().sub_nodes, + ) + + @staticmethod + def Func28(): + return NodeMeta( + sub_nodes=NodeDescs.Post().sub_nodes, + arg_types={ + "id": "String13", + }, + ) + + @staticmethod + def Func24(): + return NodeMeta( + sub_nodes=NodeDescs.Post().sub_nodes, + ) + + +Object21 = typing.TypedDict( + "Object21", + { + "id": str, + }, + total=False, +) + +StringUuid = str + +Post = typing.TypedDict( + "Post", + { + "id": StringUuid, + "slug": str, + "title": str, + }, + total=False, +) + +StringEmail = str + +Post7 = typing.List[Post] + +User = typing.TypedDict( + "User", + { + "id": StringUuid, + "email": StringEmail, + "posts": Post7, + }, + total=False, +) + + +PostSelections = typing.TypedDict( + "PostSelections", + { + "_": SelectionFlags, + "id": ScalarSelectNoArgs, + "slug": ScalarSelectNoArgs, + "title": ScalarSelectNoArgs, + }, + total=False, +) + +UserSelections = typing.TypedDict( + "UserSelections", + { + "_": SelectionFlags, + "id": ScalarSelectNoArgs, + "email": ScalarSelectNoArgs, + "posts": CompositeSelectNoArgs["PostSelections"], + }, + total=False, +) + + +class QueryGraph(QueryGraphBase): + def __init__(self): + super().__init__( + { + "String4": "Any", + "String1": "Any", + "String13": "Any", + } + ) + + def get_user(self, select: UserSelections) -> QueryNode[User]: + node = selection_to_nodes( + {"getUser": select}, {"getUser": NodeDescs.Func23}, "$q" + )[0] + return QueryNode(node.node_name, node.instance_name, node.args, node.sub_nodes) + + def get_posts(self, select: PostSelections) -> QueryNode[Post]: + node = selection_to_nodes( + {"getPosts": select}, {"getPosts": NodeDescs.Func24}, "$q" + )[0] + return QueryNode(node.node_name, node.instance_name, node.args, node.sub_nodes) + + def scalar_no_args(self) -> QueryNode[str]: + node = selection_to_nodes( + {"scalarNoArgs": True}, {"scalarNoArgs": NodeDescs.Func25}, "$q" + )[0] + return QueryNode(node.node_name, node.instance_name, node.args, node.sub_nodes) + + def scalar_args( + self, args: typing.Union[Post, PlaceholderArgs] + ) -> MutationNode[str]: + node = selection_to_nodes( + {"scalarArgs": args}, {"scalarArgs": NodeDescs.Func26}, "$q" + )[0] + return MutationNode( + node.node_name, node.instance_name, node.args, node.sub_nodes + ) + + def composite_no_args(self, select: PostSelections) -> MutationNode[Post]: + node = selection_to_nodes( + {"compositeNoArgs": select}, {"compositeNoArgs": NodeDescs.Func27}, "$q" + )[0] + return MutationNode( + node.node_name, node.instance_name, node.args, node.sub_nodes + ) + + def composite_args( + self, args: typing.Union[Object21, PlaceholderArgs], select: PostSelections + ) -> MutationNode[Post]: + node = selection_to_nodes( + {"compositeArgs": (args, select)}, {"compositeArgs": NodeDescs.Func28}, "$q" + )[0] + return MutationNode( + node.node_name, node.instance_name, node.args, node.sub_nodes + ) diff --git a/typegate/tests/metagen/typegraphs/sample/py/main.py b/typegate/tests/metagen/typegraphs/sample/py/main.py new file mode 100644 index 0000000000..084f56a775 --- /dev/null +++ b/typegate/tests/metagen/typegraphs/sample/py/main.py @@ -0,0 +1,110 @@ +from client import ( + QueryGraph, + PostSelections, + SelectionFlags, + UserSelections, + Alias, +) +import json +import os + +qg = QueryGraph() +port = os.getenv("TG_PORT") +gql_client = qg.graphql_sync(f"http://localhost:{port}/sample") + +prepared_q = gql_client.prepare_query( + lambda args: { + "user": qg.get_user( + UserSelections( + _=SelectionFlags(select_all=True), + posts=Alias( + post1=PostSelections( + id=True, + slug=True, + title=True, + ), + post2=PostSelections( + _=SelectionFlags(select_all=True), + id=False, + ), + ), + ), + ), + "posts": qg.get_posts({"_": SelectionFlags(select_all=True)}), + "scalarNoArgs": qg.scalar_no_args(), + }, +) + +prepared_m = gql_client.prepare_mutation( + lambda args: { + "scalarArgs": qg.scalar_args( + { + "id": args.get("id"), + "slug": args.get("slug"), + "title": args.get("title"), + } + ), + "compositeNoArgs": qg.composite_no_args({"_": SelectionFlags(select_all=True)}), + "compositeArgs": qg.composite_args( + { + "id": args.get("id"), + }, + {"_": SelectionFlags(select_all=True)}, + ), + }, +) + +res1 = prepared_q.perform({}) +res1a = prepared_q.perform({}) + +res2 = prepared_m.perform( + { + "id": "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + "slug": "s", + "title": "t", + } +) + +res3 = gql_client.query( + { + "user": qg.get_user( + UserSelections( + _=SelectionFlags(select_all=True), + posts=Alias( + post1=PostSelections( + id=True, + slug=True, + title=True, + ), + post2=PostSelections( + _=SelectionFlags(select_all=True), + id=False, + ), + ), + ), + ), + "posts": qg.get_posts({"_": SelectionFlags(select_all=True)}), + "scalarNoArgs": qg.scalar_no_args(), + } +) + +res4 = gql_client.mutation( + { + "scalarArgs": qg.scalar_args( + { + "id": "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + "slug": "", + "title": "", + } + ), + "compositeNoArgs": qg.composite_no_args({"_": SelectionFlags(select_all=True)}), + "compositeArgs": qg.composite_args( + { + "id": "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + }, + {"_": SelectionFlags(select_all=True)}, + ), + } +) + +print(json.dumps([res1, res1a, res2, res3, res4])) diff --git a/typegate/tests/metagen/typegraphs/sample/ts/client.ts b/typegate/tests/metagen/typegraphs/sample/ts/client.ts new file mode 100644 index 0000000000..b0fa724f1a --- /dev/null +++ b/typegate/tests/metagen/typegraphs/sample/ts/client.ts @@ -0,0 +1,802 @@ +// This file was @generated by metagen and is intended +// to be generated again on subsequent metagen runs. + +function _selectionToNodeSet( + selection: Selection, + metas: [string, () => NodeMeta][], + parentPath: string, +): SelectNode[] { + const out = [] as SelectNode[]; + const selectAll = selection._ == "selectAll"; + // set of the user specified nodes to do sanity + // check at the end + const foundNodes = new Set(Object.keys(selection)); + + for ( + const [nodeName, metaFn] of metas ?? [] + ) { + foundNodes.delete(nodeName); + + const nodeSelection = selection[nodeName]; + if (!nodeSelection && !selectAll) { + // this node was not selected + continue; + } + + const { argumentTypes, subNodes } = metaFn(); + + const nodeInstances = nodeSelection instanceof Alias + ? nodeSelection.aliases() + : { [nodeName]: nodeSelection }; + + for ( + const [instanceName, instanceSelection] of Object.entries(nodeInstances) + ) { + if (!instanceSelection && !selectAll) { + continue; + } + if (instanceSelection instanceof Alias) { + throw new Error( + `nested Alias discovored at ${parentPath}.${instanceName}`, + ); + } + const node: SelectNode = { instanceName, nodeName }; + + if (argumentTypes) { + // make sure the arg is of the expected form + let arg = instanceSelection; + if (Array.isArray(arg)) { + arg = arg[0]; + } + // TODO: consider bringing in Zod (after hoisting impl into common lib) + if (typeof arg != "object" || arg === null) { + throw new Error( + `node at ${parentPath}.${instanceName} is a node ` + + `that requires arguments object but detected argument ` + + `is typeof ${typeof arg}`, + ); + } + + const expectedArguments = new Map(Object.entries(argumentTypes)); + node.args = {}; + for (const [key, value] of Object.entries(arg)) { + const typeName = expectedArguments.get(key); + // TODO: consider logging a warning if `_` is detected incase user passes + // Selection as arg + if (!typeName) { + throw new Error( + `unexpected argument ${key} at ${parentPath}.${instanceName}`, + ); + } + expectedArguments.delete(key); + node.args[key] = { typeName, value }; + } + } + + if (subNodes) { + // sanity check selection object + let subSelections = instanceSelection; + if (argumentTypes) { + if (!Array.isArray(subSelections)) { + throw new Error( + `node at ${parentPath}.${instanceName} ` + + `is a composite that takes an argument ` + + `but selection is typeof ${typeof subSelections}`, + ); + } + subSelections = subSelections[1]; + } else if (Array.isArray(subSelections)) { + throw new Error( + `node at ${parentPath}.${instanceName} ` + + `is a composite that takes no arguments ` + + `but selection is typeof ${typeof subSelections}`, + ); + } + if (typeof subSelections != "object") { + throw new Error( + `node at ${parentPath}.${nodeName} ` + + `is a no argument composite but first element of ` + + `selection is typeof ${typeof nodeSelection}`, + ); + } + + node.subNodes = _selectionToNodeSet( + // assume it's a Selection. If it's an argument + // object, mismatch between the node desc should hopefully + // catch it + subSelections as Selection, + subNodes, + `${parentPath}.${instanceName}`, + ); + } + + out.push(node); + } + } + foundNodes.delete("_"); + if (foundNodes.size > 0) { + throw new Error( + `unexpected nodes found in selection set at ${parentPath}: ${[ + ...foundNodes, + ]}`, + ); + } + return out; +} + +/* Query node types section */ + +type SelectNode<_Out = unknown> = { + nodeName: string; + instanceName: string; + args?: NodeArgs; + subNodes?: SelectNode[]; +}; + +export class QueryNode { + #inner: SelectNode; + constructor( + inner: SelectNode, + ) { + this.#inner = inner; + } + + inner() { + return this.#inner; + } +} + +export class MutationNode { + #inner: SelectNode; + constructor( + inner: SelectNode, + ) { + this.#inner = inner; + } + + inner() { + return this.#inner; + } +} + +type SelectNodeOut = T extends (QueryNode | MutationNode) + ? O + : never; +type QueryDocOut = T extends + Record | MutationNode> ? { + [K in keyof T]: SelectNodeOut; + } + : never; + +type NodeMeta = { + subNodes?: [string, () => NodeMeta][]; + argumentTypes?: { [name: string]: string }; +}; + +/* Selection types section */ + +type SelectionFlags = "selectAll"; + +type Selection = { + _?: SelectionFlags; + [key: string]: + | SelectionFlags + | ScalarSelectNoArgs + | ScalarSelectArgs> + | CompositeSelectNoArgs + | CompositeSelectArgs, Selection> + | Selection; +}; + +type ScalarSelectNoArgs = + | boolean + | Alias + | null + | undefined; + +type ScalarSelectArgs> = + | ArgT + | PlaceholderArgs + | Alias> + | false + | null + | undefined; + +type CompositeSelectNoArgs = + | SelectionT + | Alias + | false + | null + | undefined; + +type CompositeSelectArgs, SelectionT> = + | [ArgT | PlaceholderArgs, SelectionT] + | Alias<[ArgT | PlaceholderArgs, SelectionT]> + | false + | undefined + | null; + +/** + * Request multiple instances of a single node under different + * aliases. Look at {@link alias} for a functional way of instantiating + * this class. + */ +export class Alias { + #aliases: Record; + constructor( + aliases: Record, + ) { + this.#aliases = aliases; + } + aliases() { + return this.#aliases; + } +} + +/** + * Request multiple instances of a single node under different + * aliases. + */ +export function alias(aliases: Record): Alias { + return new Alias(aliases); +} + +/* Argument types section */ + +type NodeArgValue = { + typeName: string; + value: unknown; +}; + +type NodeArgs = { + [name: string]: NodeArgValue; +}; + +/** + * This object is passed to closures used for preparing requests + * ahead of time for {@link PreparedRequest}s. It allows one to + * get {@link PlaceholderValue}s that can be used in place of node + * arguments. At request time, the {@link PreparedRequest} then + * takes an object that adheres to `T` that can then be used + * to replace the placeholders. + */ +export class PreparedArgs> { + get(key: OnlyStringKeys): PlaceholderValue { + return new PlaceholderValue(key); + } +} + +/** + * Placeholder values for use by {@link PreparedRequest} + */ +export class PlaceholderValue<_T> { + #key: string; + constructor(key: string) { + this.#key = key; + } + + key() { + return this.#key; + } +} + +export type PlaceholderArgs> = { + [K in keyof T]: PlaceholderValue; +}; + +/* GraphQL section */ + +/** + * Options to be used for requests performed by {@link GraphQLTransport}. + */ +export type GraphQlTransportOptions = Omit & { + /** + * {@link fetch} implementaiton to use. Defaults to the one found in the environment + */ + fetch?: typeof fetch; +}; + +function convertQueryNodeGql( + node: SelectNode, + variables: Map, +) { + let out = node.nodeName == node.instanceName + ? node.nodeName + : `${node.instanceName}: ${node.nodeName}`; + + const args = node.args; + if (args) { + out = `${out} (${ + Object.entries(args) + .map(([key, val]) => { + const name = `in${variables.size}`; + variables.set(name, val); + return `${key}: $${name}`; + }) + .join(", ") + })`; + } + + const subNodes = node.subNodes; + if (subNodes) { + out = `${out} { ${ + subNodes.map((node) => convertQueryNodeGql(node, variables)).join(" ") + } }`; + } + return out; +} + +function buildGql( + typeToGqlTypeMap: Record, + query: Record, + ty: "query" | "mutation", + name: string = "", +) { + const variables = new Map(); + + const rootNodes = Object + .entries(query) + .map(([key, node]) => { + const fixedNode = { ...node, instanceName: key }; + return convertQueryNodeGql(fixedNode, variables); + }) + .join("\n "); + + let argsRow = [...variables.entries()] + .map(([key, val]) => `$${key}: ${typeToGqlTypeMap[val.typeName]}`) + .join(", "); + if (argsRow.length > 0) { + // graphql doesn't like empty parentheses so we only + // add them if there are args + argsRow = `(${argsRow})`; + } + + const doc = `${ty} ${name}${argsRow} { + ${rootNodes} +}`; + return { + doc, + variables: Object.fromEntries( + [...variables.entries()] + .map(([key, val]) => [key, val.value]), + ), + }; +} + +async function fetchGql( + addr: URL, + doc: string, + variables: Record, + options: GraphQlTransportOptions, +) { + // console.log(doc, variables); + const fetchImpl = options.fetch ?? fetch; + const res = await fetchImpl(addr, { + ...options, + method: "POST", + headers: { + accept: "application/json", + "content-type": "application/json", + ...options.headers ?? {}, + }, + body: JSON.stringify({ + query: doc, + variables, + }), + }); + if (!res.ok) { + const body = await res.text().catch((err) => `error reading body: ${err}`); + throw new (Error as ErrorPolyfill)( + `graphql request to ${addr} failed with status ${res.status}: ${body}`, + { + cause: { + response: res, + body, + }, + }, + ); + } + if (res.headers.get("content-type") != "application/json") { + throw new (Error as ErrorPolyfill)( + "unexpected content type in response", + { + cause: { + response: res, + body: await res.text().catch((err) => `error reading body: ${err}`), + }, + }, + ); + } + return await res.json() as { data: unknown; errors?: object[] }; +} + +/** + * Access the typegraph over it's exposed GraphQL API. + */ +export class GraphQLTransport { + constructor( + public address: URL, + public options: GraphQlTransportOptions, + private typeToGqlTypeMap: Record, + ) { + } + + async #request( + doc: string, + variables: Record, + options?: GraphQlTransportOptions, + ) { + const res = await fetchGql(this.address, doc, variables, { + ...this.options, + ...options, + }); + if ("errors" in res) { + throw new (Error as ErrorPolyfill)("graphql errors on response", { + cause: res.errors, + }); + } + return res.data; + } + + /** + * Make a query request to the typegraph. + */ + async query>>( + query: Doc, + { options, name = "" }: { + options?: GraphQlTransportOptions; + name?: string; + } = {}, + ): Promise> { + const { variables, doc } = buildGql( + this.typeToGqlTypeMap, + Object.fromEntries( + Object.entries(query).map(( + [key, val], + ) => [key, (val as QueryNode).inner()]), + ), + "query", + name, + ); + return await this.#request(doc, variables, options) as QueryDocOut; + } + + /** + * Make a mutation request to the typegraph. + */ + async mutation>>( + query: Doc, + { options, name = "" }: { + options?: GraphQlTransportOptions; + name?: string; + } = {}, + ): Promise> { + const { variables, doc } = buildGql( + this.typeToGqlTypeMap, + Object.fromEntries( + Object.entries(query).map(( + [key, val], + ) => [key, (val as MutationNode).inner()]), + ), + "mutation", + name, + ); + return await this.#request(doc, variables, options) as QueryDocOut; + } + + /** + * Prepare an ahead of time query {@link PreparedRequest}. + */ + prepareQuery< + T extends JsonObject, + Doc extends Record>, + >( + fun: (args: PreparedArgs) => Doc, + { name = "" }: { name?: string } = {}, + ): PreparedRequest { + return new PreparedRequest( + this.address, + this.options, + this.typeToGqlTypeMap, + fun, + "query", + name, + ); + } + + /** + * Prepare an ahead of time mutation {@link PreparedRequest}. + */ + prepareMutation< + T extends JsonObject, + Q extends Record>, + >( + fun: (args: PreparedArgs) => Q, + { name = "" }: { name?: string } = {}, + ): PreparedRequest { + return new PreparedRequest( + this.address, + this.options, + this.typeToGqlTypeMap, + fun, + "mutation", + name, + ); + } +} + +/** + * Prepares the GraphQL string ahead of time and allows re-use + * avoid the compute and garbage overhead of re-building it for + * repeat queries. + */ +export class PreparedRequest< + T extends JsonObject, + Doc extends Record | MutationNode>, +> { + public doc: string; + #mappings: Record; + + constructor( + private address: URL, + private options: GraphQlTransportOptions, + typeToGqlTypeMap: Record, + fun: (args: PreparedArgs) => Doc, + ty: "query" | "mutation", + name: string = "", + ) { + const args = new PreparedArgs(); + const dryRunNode = fun(args); + const { doc, variables } = buildGql( + typeToGqlTypeMap, + Object.fromEntries( + Object.entries(dryRunNode).map(( + [key, val], + ) => [key, (val as MutationNode).inner()]), + ), + ty, + name, + ); + this.doc = doc; + this.#mappings = variables; + } + + resolveVariables( + args: T, + mappings: Record, + ) { + const resolvedVariables = {} as Record; + for (const [key, val] of Object.entries(mappings)) { + if (val instanceof PlaceholderValue) { + resolvedVariables[key] = args[val.key()]; + } else if (typeof val == "object" && val != null) { + this.resolveVariables(args, val as JsonObject); + } else { + resolvedVariables[key] = val; + } + } + return resolvedVariables; + } + + /** + * Execute the prepared request. + */ + async perform(args: T, opts?: GraphQlTransportOptions): Promise< + { + [K in keyof Doc]: SelectNodeOut; + } + > { + const resolvedVariables = this.resolveVariables(args, this.#mappings); + // console.log(this.doc, { + // resolvedVariables, + // mapping: this.#mappings, + // }); + const res = await fetchGql( + this.address, + this.doc, + resolvedVariables, + { + ...this.options, + ...opts, + }, + ); + if ("errors" in res) { + throw new (Error as ErrorPolyfill)("graphql errors on response", { + cause: res.errors, + }); + } + return res.data as QueryDocOut; + } +} + +/* Util types section */ + +type OnlyStringKeys> = { + [K in keyof T]: K extends string ? K : never; +}[keyof T]; + +type JsonLiteral = string | number | boolean | null; +type JsonObject = { [key: string]: Json }; +type JsonArray = Json[]; +type Json = JsonLiteral | JsonObject | JsonArray; + +type ErrorPolyfill = new (msg: string, payload: unknown) => Error; + +/* QueryGraph section */ + +class _QueryGraphBase { + constructor(private typeNameMapGql: Record) {} + + /** + * Get the {@link GraphQLTransport} for the typegraph. + */ + graphql(addr: URL | string, options?: GraphQlTransportOptions) { + return new GraphQLTransport( + new URL(addr), + options ?? {}, + this.typeNameMapGql, + ); + } +} + +// -------------------------------------------------- // + +const nodeMetas = { + scalar() { + return {}; + }, + + Post(): NodeMeta { + return { + subNodes: [ + ["id", nodeMetas.scalar], + ["slug", nodeMetas.scalar], + ["title", nodeMetas.scalar], + ], + }; + }, + + Func27(): NodeMeta { + return { + ...nodeMetas.Post(), + }; + }, + + Func25(): NodeMeta { + return { + ...nodeMetas.scalar(), + }; + }, + + Func24(): NodeMeta { + return { + ...nodeMetas.Post(), + }; + }, + User(): NodeMeta { + return { + subNodes: [ + ["id", nodeMetas.scalar], + ["email", nodeMetas.scalar], + ["posts", nodeMetas.Post], + ], + }; + }, + + Func23(): NodeMeta { + return { + ...nodeMetas.User(), + }; + }, + + Func28(): NodeMeta { + return { + ...nodeMetas.Post(), + argumentTypes: { + id: "String13", + }, + }; + }, + + Func26(): NodeMeta { + return { + ...nodeMetas.scalar(), + argumentTypes: { + id: "String4", + slug: "String1", + title: "String1", + }, + }; + }, +}; +export type StringUuid = string; +export type Post = { + id: StringUuid; + slug: string; + title: string; +}; +export type StringEmail = string; +export type Post7 = Array; +export type User = { + id: StringUuid; + email: StringEmail; + posts: Post7; +}; +export type Object21 = { + id: string; +}; + +export type PostSelections = { + _?: SelectionFlags; + id?: ScalarSelectNoArgs; + slug?: ScalarSelectNoArgs; + title?: ScalarSelectNoArgs; +}; +export type UserSelections = { + _?: SelectionFlags; + id?: ScalarSelectNoArgs; + email?: ScalarSelectNoArgs; + posts?: CompositeSelectNoArgs; +}; + +export class QueryGraph extends _QueryGraphBase { + constructor() { + super({ + "String4": "Any", + "String1": "Any", + "String13": "Any", + }); + } + + getUser(select: UserSelections) { + const inner = _selectionToNodeSet( + { "getUser": select }, + [["getUser", nodeMetas.Func23]], + "$q", + )[0]; + return new QueryNode(inner) as QueryNode; + } + getPosts(select: PostSelections) { + const inner = _selectionToNodeSet( + { "getPosts": select }, + [["getPosts", nodeMetas.Func24]], + "$q", + )[0]; + return new QueryNode(inner) as QueryNode; + } + scalarNoArgs() { + const inner = _selectionToNodeSet( + { "scalarNoArgs": true }, + [["scalarNoArgs", nodeMetas.Func25]], + "$q", + )[0]; + return new QueryNode(inner) as QueryNode; + } + scalarArgs(args: Post | PlaceholderArgs) { + const inner = _selectionToNodeSet( + { "scalarArgs": args }, + [["scalarArgs", nodeMetas.Func26]], + "$q", + )[0]; + return new MutationNode(inner) as MutationNode; + } + compositeNoArgs(select: PostSelections) { + const inner = _selectionToNodeSet( + { "compositeNoArgs": select }, + [["compositeNoArgs", nodeMetas.Func27]], + "$q", + )[0]; + return new MutationNode(inner) as MutationNode; + } + compositeArgs( + args: Object21 | PlaceholderArgs, + select: PostSelections, + ) { + const inner = _selectionToNodeSet( + { "compositeArgs": [args, select] }, + [["compositeArgs", nodeMetas.Func28]], + "$q", + )[0]; + return new MutationNode(inner) as MutationNode; + } +} diff --git a/typegate/tests/metagen/typegraphs/sample/ts/main.ts b/typegate/tests/metagen/typegraphs/sample/ts/main.ts index 1d01fbf686..e8abfc47e1 100644 --- a/typegate/tests/metagen/typegraphs/sample/ts/main.ts +++ b/typegate/tests/metagen/typegraphs/sample/ts/main.ts @@ -1,7 +1,7 @@ // Copyright Metatype OÃœ, licensed under the Elastic License 2.0. // SPDX-License-Identifier: Elastic-2.0 -import { QueryGraph } from "./mdk.ts"; +import { alias, PreparedArgs, QueryGraph } from "./client.ts"; const api1 = new QueryGraph(); @@ -9,18 +9,77 @@ const gqlClient = api1.graphql( `http://localhost:${Deno.env.get("TG_PORT")}/sample`, ); -const res = await gqlClient.query({ - // syntax very similar to typegraph definition - user: api1.getUser({ id: "1234" }, { +const preparedQ = gqlClient.prepareQuery(() => ({ + user: api1.getUser({ _: "selectAll", - posts: [{ filter: "top" }, { _: "selectAll", title: true, slug: true }], + posts: alias({ + post1: { id: true, slug: true, title: true }, + post2: { _: "selectAll", id: false }, + }), }), - posts: api1.getPosts({ filter: "today" }, { _: "selectAll" }), -}); -console.log(JSON.stringify(res)); + posts: api1.getPosts({ _: "selectAll" }), + + scalarNoArgs: api1.scalarNoArgs(), +})); -/* const prepared = gqlClient.prepareQuery((args: { filter: string }) => ({ - posts2: api1.getPosts({ filter: args.filter }, { _: "selectAll" }), +const preparedM = gqlClient.prepareMutation(( + args: PreparedArgs<{ + id: string; + slug: string; + title: string; + }>, +) => ({ + scalarArgs: api1.scalarArgs({ + id: args.get("id"), + slug: args.get("slug"), + title: args.get("title"), + }), + compositeNoArgs: api1.compositeNoArgs({ + _: "selectAll", + }), + compositeArgs: api1.compositeArgs({ + id: args.get("id"), + }, { + _: "selectAll", + }), })); -const { posts2 } = await prepared.do({ filter: "hey" }); */ +const res1 = await preparedQ.perform({}); +const res1a = await preparedQ.perform({}); + +const res2 = await preparedM.perform({ + id: "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + slug: "s", + title: "t", +}); + +const res3 = await gqlClient.query({ + user: api1.getUser({ + _: "selectAll", + posts: alias({ + post1: { id: true, slug: true, title: true }, + post2: { _: "selectAll", id: false }, + }), + }), + posts: api1.getPosts({ _: "selectAll" }), + + scalarNoArgs: api1.scalarNoArgs(), +}); + +const res4 = await gqlClient.mutation({ + scalarArgs: api1.scalarArgs({ + id: "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + slug: "", + title: "", + }), + compositeNoArgs: api1.compositeNoArgs({ + _: "selectAll", + }), + compositeArgs: api1.compositeArgs({ + id: "94be5420-8c4a-4e67-b4f4-e1b2b54832a2", + }, { + _: "selectAll", + }), +}); + +console.log(JSON.stringify([res1, res1a, res2, res3, res4])); diff --git a/typegate/tests/metagen/typegraphs/sample/ts/mdk.ts b/typegate/tests/metagen/typegraphs/sample/ts/mdk.ts deleted file mode 100644 index 4b45995ecc..0000000000 --- a/typegate/tests/metagen/typegraphs/sample/ts/mdk.ts +++ /dev/null @@ -1,579 +0,0 @@ -// This file was @generated by metagen and is intended -// to be generated again on subsequent metagen runs. - -export type GraphQlTransportOptions = Omit & { - fetch?: typeof fetch; -}; - -const variablePath = Symbol("variablePath"); -const pathSeparator = "%.%"; - -class GraphQLTransportCore { - constructor( - public address: URL, - public options: GraphQlTransportOptions, - private typeToGqlTypeMap: Record, - ) {} - - buildGql( - query: Record, - ty: "query" | "mutation", - name: string = "", - ) { - const variables = new Map(); - const rootNodes = Object - .entries(query) - .map(([key, node]) => `${key}: ${convertQueryNodeGql(node, variables)}`) - .join("\n "); - const argsRow = [...variables.entries()] - .map(([key, val]) => `$${key}: ${this.typeToGqlTypeMap[val.typeName]}`) - .join(", "); - const doc = `${ty} ${name}(${argsRow}) { - ${rootNodes} -}`; - return { - doc, - variables: Object.fromEntries( - [...variables.entries()] - .map(([key, val]) => [key, val.value]), - ), - }; - } - - async fetch( - doc: string, - variables: Record, - options?: GraphQlTransportOptions, - ) { - // console.log({ doc, variables }); - const fetchImpl = options?.fetch ?? this.options.fetch ?? fetch; - const res = await fetchImpl(this.address, { - ...this.options, - ...options, - method: "POST", - headers: { - accept: "application/json", - "content-type": "application/json", - ...this.options.headers ?? {}, - ...options?.headers ?? {}, - }, - body: JSON.stringify({ - query: doc, - variables, - }), - }); - if (!res.ok) { - const body = await res.text().catch((err) => - `error reading body: ${err}` - ); - throw new Error( - `graphql request to ${this.address} failed: ${body}`, - { - cause: { - response: res, - body, - }, - }, - ); - } - if (res.headers.get("content-type") != "application/json") { - throw new Error( - "unexpected content type in response", - { - cause: { - response: res, - body: await res.text().catch((err) => `error reading body: ${err}`), - }, - }, - ); - } - return await res.json() as { data: unknown; errors?: object[] }; - } -} - -export class GraphQLTransport { - #core: GraphQLTransportCore; - constructor( - address: URL, - options: GraphQlTransportOptions, - typeToGqlTypeMap: Record, - ) { - this.#core = new GraphQLTransportCore(address, options, typeToGqlTypeMap); - } - async query>>( - query: Doc, - options?: GraphQlTransportOptions, - ): Promise> { - const { variables, doc } = this.#core.buildGql( - Object.fromEntries( - Object.entries(query).map(( - [key, val], - ) => [key, (val as QueryNode).inner]), - ), - "query", - ); - const res = await this.#core.fetch(doc, variables, options); - if ("errors" in res) { - throw new Error("graphql errors on response", { - cause: res.errors, - }); - } - return res.data as QueryDocOut; - } - - async mutation>>( - query: Doc, - options?: GraphQlTransportOptions, - ): Promise> { - const { variables, doc } = this.#core.buildGql( - Object.fromEntries( - Object.entries(query).map(( - [key, val], - ) => [key, (val as MutationNode).inner]), - ), - "query", - ); - const res = await this.#core.fetch(doc, variables, options); - if ("errors" in res) { - throw new Error("graphql errors on response", { - cause: res.errors, - }); - } - return res.data as QueryDocOut; - } - - prepareQuery< - T extends JsonObject, - Doc extends Record>, - >( - fun: (args: T) => Doc, - ): PreparedRequest { - return new PreparedRequest(this.#core, fun, "query"); - } - - prepareMutation< - T extends JsonObject, - Q extends Record>, - >( - fun: (args: T) => Q, - ): PreparedRequest { - return new PreparedRequest(this.#core, fun, "mutation"); - } -} - -class PreparedRequest< - T extends JsonObject, - Doc extends Record | MutationNode>, -> { - #doc: string; - #mappings: Record; - - constructor( - private core: GraphQLTransportCore, - fun: (args: T) => Doc, - ty: "query" | "mutation", - name: string = "", - ) { - const rootId = "$root"; - const dryRunNode = fun(this.#getProxy(rootId) as unknown as T); - const { doc, variables } = core.buildGql( - Object.fromEntries( - Object.entries(dryRunNode).map(( - [key, val], - ) => [key, (val as MutationNode).inner]), - ), - ty, - name, - ); - this.#doc = doc; - this.#mappings = variables; - } - - resolveVariable( - args: T, - cur: Json, - path: string[], - idx = 0, - ): unknown { - if (idx == path.length - 1) { - return cur; - } - if (typeof cur != "object" || cur == null) { - const curPath = path.slice(0, idx); - throw new Error( - `unexpected prepard request arguments shape: item at ${curPath} is not object when trying to access ${path}`, - { - cause: { - args, - curPath, - curObj: cur, - mappings: this.#mappings, - }, - }, - ); - } - const childIdx = idx + 1; - return this.resolveVariable( - args, - (cur as JsonObject)[path[childIdx]], - path, - childIdx, - ); - } - - #getProxy(path: string): { [variablePath]: string } { - return new Proxy( - { [variablePath]: path }, - { - get: (target, prop, _reciever) => { - if (prop === variablePath) { - return path; - } - return this.#getProxy( - `${target[variablePath]}${pathSeparator}${String(prop)}`, - ); - }, - }, - ); - } - - async do(args: T, opts?: GraphQlTransportOptions): Promise< - { - [K in keyof Doc]: SelectNodeOut; - } - > { - const resolvedVariables = {} as Record; - for (const [key, val] of Object.entries(this.#mappings)) { - if (typeof val !== "object" || val == null || !(variablePath in val)) { - throw new Error("impossible"); - } - const path = (val[variablePath] as string).split(pathSeparator); - resolvedVariables[key] = this.resolveVariable(args, args, path); - } - // console.log({ - // resolvedVariables, - // doc: this.#doc, - // mapping: this.#mappings, - // }); - const res = await this.core.fetch(this.#doc, resolvedVariables, opts); - if ("errors" in res) { - throw new Error("graphql errors on response", { - cause: res.errors, - }); - } - return res.data as QueryDocOut; - } -} - -type NodeArgValue = { - typeName: string; - value: unknown; -}; - -type NodeArgs = { - [name: string]: NodeArgValue; -}; - -type SelectionFlags = "selectAll"; - -type Selection = { - _?: SelectionFlags; - [key: string]: - | undefined - | boolean - | Selection - | SelectionFlags - | [Record, Selection | undefined]; -}; - -type NodeMeta = { - subNodes?: [string, NodeMeta][]; - argumentTypes?: { [name: string]: string }; -}; - -export type JsonLiteral = string | number | boolean | null; -export type JsonObject = { [key: string]: Json }; -export type JsonArray = Json[]; -export type Json = JsonLiteral | JsonObject | JsonArray; - -export type DeArrayify = T extends Array ? Inner : T; - -type SelectNode = { - _phantom?: Out; - name: string; - args?: NodeArgs; - subNodes?: SelectNode[]; -}; - -export class QueryNode { - constructor( - public inner: SelectNode, - ) {} -} - -export class MutationNode { - constructor( - public inner: SelectNode, - ) {} -} - -type SelectNodeOut = T extends (QueryNode | MutationNode) - ? O - : never; -type QueryDocOut = T extends - Record | MutationNode> ? { - [K in keyof T]: SelectNodeOut; - } - : never; - -function selectionToNodeSet( - selection: Selection, - metas: [string, NodeMeta][], - parentPath: string, -): SelectNode[] { - const out = [] as SelectNode[]; - const selectAll = selection._ == "selectAll"; - // set of the user specified nodes to do sanity - // check at the end - const foundNodes = new Set(Object.keys(selection)); - - for ( - const [nodeName, { subNodes, argumentTypes }] of metas ?? [] - ) { - foundNodes.delete(nodeName); - - const nodeSelection = selection[nodeName]; - if (!nodeSelection && !selectAll) { - // this node was not selected - continue; - } - - const node: SelectNode = { name: nodeName }; - - if (argumentTypes) { - if (!Array.isArray(nodeSelection)) { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `requires arguments but selection ` + - `is typeof ${typeof nodeSelection}`, - ); - } - const [arg] = nodeSelection; - // TODO: consider bringing in Zod (after hoisting impl into common lib) - if (typeof arg != "object") { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `requires argument object but first element of ` + - `selection is typeof ${typeof arg}`, - ); - } - const expectedArguments = new Map(Object.entries(argumentTypes)); - // TODO: consider logging a warning if `_` is detected incase user passes - // Selection as arg - node.args = Object.fromEntries( - Object.entries(arg).map(([key, value]) => { - const typeName = expectedArguments.get(key); - if (!typeName) { - throw new Error( - `unexpected argument ${key} at ${parentPath}.${nodeName}`, - ); - } - expectedArguments.delete(key); - return [key, { typeName, value }]; - }), - ); - // TODO: consider detecting required arguments here - } - - if (subNodes) { - let subSelections = nodeSelection; - if (argumentTypes) { - if (!Array.isArray(subSelections)) { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `is a composite that takes an argument but selection is typeof ${typeof nodeSelection}`, - ); - } - subSelections = subSelections[1]; - } else if (Array.isArray(subSelections)) { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `is a composite that takes no arguments but selection is typeof ${typeof nodeSelection}`, - ); - } - if (typeof subSelections != "object") { - throw new Error( - `node at ${parentPath}.${nodeName} ` + - `is a no argument composite but first element of ` + - `selection is typeof ${typeof nodeSelection}`, - ); - } - node.subNodes = selectionToNodeSet( - subSelections, - subNodes, - `${parentPath}.${nodeName}`, - ); - } - - out.push(node); - } - foundNodes.delete("_"); - if (foundNodes.size > 0) { - throw new Error( - `unexpected nodes found in selection set at ${parentPath}: ${[ - ...foundNodes, - ]}`, - ); - } - return out; -} - -function convertQueryNodeGql( - node: SelectNode, - variables: Map, -) { - let out = node.name; - - const args = node.args; - if (args) { - out = `${out} (${ - Object.entries(args) - .map(([key, val]) => { - const name = `in${variables.size}`; - variables.set(name, val); - return `${key}: $${name}`; - }) - })`; - } - - const subNodes = node.subNodes; - if (subNodes) { - out = `${out} { ${ - subNodes.map((node) => convertQueryNodeGql(node, variables)).join(" ") - } }`; - } - return out; -} - -class QueryGraphBase { - constructor(private typeNameMapGql: Record) {} - - graphql(addr: URL | string, options?: GraphQlTransportOptions) { - return new GraphQLTransport( - new URL(addr), - options ?? {}, - this.typeNameMapGql, - ); - } -} - -// -------------------------------------------------- // - -const nodeMetas = { - scalar() { - return {}; - }, - - Post(): NodeMeta { - return { - subNodes: [ - ["slug", this.scalar()], - ["title", this.scalar()], - ], - }; - }, - Func9(): NodeMeta { - return { - ...this.Post(), - argumentTypes: { - filter: "Optional4", - }, - }; - }, - User(): NodeMeta { - return { - subNodes: [ - ["id", this.scalar()], - ["email", this.scalar()], - ["posts", this.Func9()], - ], - }; - }, - Func19(): NodeMeta { - return { - ...this.User(), - argumentTypes: { - id: "String13", - }, - }; - }, - Func20(): NodeMeta { - return { - ...this.User(), - }; - }, -}; -export type Post = { - slug: string; - title: string; -}; -export type Post7 = Array; -export type StringUuid = string; -export type StringEmail = string; -export type User = { - id: StringUuid; - email: StringEmail; - posts: void; -}; -export type GetPostsInput = { - filter: (string) | null | undefined; -}; -export type GetUserInput = { - id: string; -}; - -export type PostSelections = { - _?: SelectionFlags; - slug?: boolean; - title?: boolean; -}; -export type UserSelections = { - _?: SelectionFlags; - id?: boolean; - email?: boolean; - posts?: [GetPostsInput, PostSelections] | false; -}; - -export class QueryGraph extends QueryGraphBase { - constructor() { - super({ - "String13": "Any", - "Optional4": "Any", - }); - } - - getUser(args: GetUserInput, select: UserSelections) { - const inner = selectionToNodeSet( - { "getUser": [args, select] }, - [["getUser", nodeMetas.Func19()]], - "$q", - )[0]; - return new MutationNode(inner) as MutationNode; - } - getPosts(args: GetPostsInput, select: PostSelections) { - const inner = selectionToNodeSet( - { "getPosts": [args, select] }, - [["getPosts", nodeMetas.Func9()]], - "$q", - )[0]; - return new MutationNode(inner) as MutationNode; - } - noArgs(select: UserSelections) { - const inner = selectionToNodeSet( - { "noArgs": select }, - [["noArgs", nodeMetas.Func20()]], - "$q", - )[0]; - return new MutationNode(inner) as MutationNode; - } -} diff --git a/typegate/tests/metatype.yml b/typegate/tests/metatype.yml index e26c5a24ac..eed689a250 100644 --- a/typegate/tests/metatype.yml +++ b/typegate/tests/metatype.yml @@ -18,6 +18,8 @@ typegates: secrets: prisma: POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=e2e" + sample: + POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=sample" migration-failure-test: POSTGRES: "postgresql://postgres:password@localhost:5432/db?schema=e2e2" diff --git a/typegate/tests/runtimes/python/python_test.ts b/typegate/tests/runtimes/python/python_test.ts index e8611b549d..e98feab5b2 100644 --- a/typegate/tests/runtimes/python/python_test.ts +++ b/typegate/tests/runtimes/python/python_test.ts @@ -171,7 +171,7 @@ Meta.test( const duration = end - start; console.log(`duration: ${duration}ms`); - assert(duration < 800, `Python runtime was too slow: ${duration}ms`); + assert(duration < 1000, `Python runtime was too slow: ${duration}ms`); }); }, ); diff --git a/typegate/tests/runtimes/wasm_reflected/rust/Cargo.lock b/typegate/tests/runtimes/wasm_reflected/rust/Cargo.lock index e70a4ecc60..7c79ca459e 100644 --- a/typegate/tests/runtimes/wasm_reflected/rust/Cargo.lock +++ b/typegate/tests/runtimes/wasm_reflected/rust/Cargo.lock @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "rust" -version = "0.4.4" +version = "0.4.6" dependencies = [ "wit-bindgen", ] diff --git a/typegate/tests/runtimes/wasm_reflected/rust/Cargo.toml b/typegate/tests/runtimes/wasm_reflected/rust/Cargo.toml index 3e20c20708..e7842fe3ef 100644 --- a/typegate/tests/runtimes/wasm_reflected/rust/Cargo.toml +++ b/typegate/tests/runtimes/wasm_reflected/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust" -version = "0.4.4" +version = "0.4.6" edition = "2021" [lib] diff --git a/typegate/tests/runtimes/wasm_wire/rust/mdk.rs b/typegate/tests/runtimes/wasm_wire/rust/mdk.rs index 2c2541bcf1..ebad7fe184 100644 --- a/typegate/tests/runtimes/wasm_wire/rust/mdk.rs +++ b/typegate/tests/runtimes/wasm_wire/rust/mdk.rs @@ -109,7 +109,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.4.4"; + static MT_VERSION: &str = "0.4.6"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } diff --git a/typegate/tests/utils/mock_fetch.ts b/typegate/tests/utils/mock_fetch.ts new file mode 100644 index 0000000000..080218b2a8 --- /dev/null +++ b/typegate/tests/utils/mock_fetch.ts @@ -0,0 +1,158 @@ +// Copyright Metatype OÃœ, licensed under the Elastic License 2.0. +// SPDX-License-Identifier: Elastic-2.0 + +/* +Lifted from https://github.com/clo4/deno_mock_fetch/blob/1ef9476b43b1b2b4cab0aaa576f713e8339f46b6/mod.ts +MIT License + +Copyright (c) 2021 SeparateRecords +*/ + +import { MatchHandler, router, Routes } from "./router@0.0.5.ts"; + +export type { MatchHandler }; + +class UnhandledRouteError extends Error { + routes: Routes; + request: Request; + constructor(init: { request: Request; routes: Routes }) { + const { request, routes } = init; + + const method = request.method; + const reqPath = new URL(request.url).pathname; + const routesNumber = Object.entries(routes).length; + const routePlural = routesNumber === 1 + ? "route has a handler" + : "routes have handlers"; + + // deno-fmt-ignore + super(`${method} ${reqPath} (${routesNumber} ${routePlural})`); + + this.name = this.constructor.name; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.routes = routes; + this.request = request; + } +} + +export interface MockFetch { + fetch: typeof globalThis.fetch; + mock: (route: string, handler: MatchHandler) => void; + remove: (route: string) => void; + reset: () => void; +} + +/** + * Get a set of functions that do not share any state with the globals. + * + * The returned object can be destructured. + * + * ``` + * const { fetch, mock, remove, reset } = sandbox() + * ``` + */ +export function sandbox(): MockFetch { + const routeStore = new Map(); + + async function fetch( + input: string | Request | URL, + init?: RequestInit, + ): Promise { + // Request constructor won't take a URL, so we need to normalize it first. + if (input instanceof URL) input = input.toString(); + const req = new Request(input, init); + + const routes = Object.fromEntries(routeStore.entries()); + + // The router needs to be constructed every time because the routes map is + // very likely to change between fetches. + return await router( + routes, + // If an unhandled route is fetched, throw an error. + (request) => { + throw new UnhandledRouteError({ request, routes }); + }, + // Errors thrown by a handler, including the unknown route handler, will + // return a 500 Internal Server Error. That's the right behaviour in most + // cases, but we actually *want* that to throw. + (_, error) => { + throw error; + }, + )(req); + } + + function mock(route: string, handler: MatchHandler) { + routeStore.set(route, handler); + } + + function remove(route: string) { + routeStore.delete(route); + } + + function reset() { + routeStore.clear(); + } + + return { + reset, + mock, + remove, + fetch, + }; +} + +const globalMockFetch = sandbox(); + +/** This is the function that replaces `fetch` when you call `install()`. */ +export const mockedFetch = globalMockFetch.fetch; + +/** + * Mock a new route, or override an existing handler. + * + * The route uses URLPattern syntax, with the additional extension of + * (optional) method routing by prefixing with the method, + * eg. `"POST@/user/:id"`. + * + * The handler function may be asynchronous. + * + * ``` + * mock("GET@/users/:id", async (_req, params) => { + * const id = parseInt(params["id"]); + * const data = await magicallyGetMyUserData(id); + * return new Response(JSON.stringify(data)); + * }) + * ``` + */ +export const mock = globalMockFetch.mock; + +/** Remove an existing route handler. */ +export const remove = globalMockFetch.remove; + +/** Remove all existing route handlers. */ +export const reset = globalMockFetch.reset; + +// Store the original fetch so it can be restored later +const originalFetch = globalThis.fetch; + +// The functions below are `const` for consistency. + +/** + * Replace `globalThis.fetch` with `mockedFetch` (or another function that + * matches the `fetch` signature) + * + * To restore the original `globalThis.fetch`, call `uninstall()`. + */ +export const install = (replacement?: typeof fetch) => { + globalThis.fetch = replacement ?? mockedFetch; +}; + +/** + * Restore `globalThis.fetch` to what it was before this library was imported. + */ +export const uninstall = () => { + globalThis.fetch = originalFetch; + reset(); +}; diff --git a/typegate/tests/utils/router@0.0.5.ts b/typegate/tests/utils/router@0.0.5.ts new file mode 100644 index 0000000000..3576698489 --- /dev/null +++ b/typegate/tests/utils/router@0.0.5.ts @@ -0,0 +1,172 @@ +// Copyright Metatype OÃœ, licensed under the Elastic License 2.0. +// SPDX-License-Identifier: Elastic-2.0 + +// Copyright 2021 denosaurs. All rights reserved. MIT license. + +/** + * A deno deploy compatible request handler which can be either sync or async + * and gets passed the `Request`, it then eventually returns a `Response` + */ +export type RequestHandler = (req: Request) => Response | Promise; + +/** + * A handler type for anytime the `MatchHandler` or `other` parameter handler + * fails + */ +export type ErrorHandler = ( + req: Request, + err: unknown, +) => Response | Promise; + +/** + * A handler type for anytime a method is received that is not defined + */ +export type UnknownMethodHandler = ( + req: Request, + knownMethods: string[], +) => Response | Promise; + +/** + * A handler type for a router path match which gets passed the matched values + */ +export type MatchHandler = ( + req: Request, + match: Record, +) => Response | Promise; + +/** + * A record of route paths and `MatchHandler`s which are called when a match is + * found along with it's values. + * + * The route paths follow the path-to-regexp format with the addition of being able + * to prefix a route with a method name and the `@` sign. For example a route only + * accepting `GET` requests would look like: `GET@/`. + */ +export type Routes = Record; + +/** + * The default other handler for the router + */ +export function defaultOtherHandler(_req: Request): Response { + return new Response(null, { + status: 404, + }); +} + +/** + * The default error handler for the router + */ +export function defaultErrorHandler(_req: Request, err: unknown): Response { + console.error(err); + + return new Response(null, { + status: 500, + }); +} + +/** + * The default unknown method handler for the router + */ +export function defaultUnknownMethodHandler( + _req: Request, + knownMethods: string[], +): Response { + return new Response(null, { + status: 405, + headers: { + Accept: knownMethods.join(", "), + }, + }); +} + +export const METHODS = [ + "GET", + "HEAD", + "POST", + "PUT", + "DELETE", + "OPTIONS", + "PATCH", +] as const; + +const methodRegex = new RegExp(`(?<=^(?:${METHODS.join("|")}))@`); + +/** + * A simple and tiny router for deno deploy + * + * ``` + * import { listenAndServe } from "https://deno.land/std/http/server.ts"; + * import { router } from "https://crux.land/router@0.0.5"; + * + * await listenAndServe( + * ":8080", + * router({ + * "/": (_req) => new Response("Hello world!", { status: 200 }), + * }), + * ); + * ``` + * + * @param routes A record of all routes and their corresponding handler functions + * @param other An optional parameter which contains a handler for anything that + * doesn't match the `routes` parameter + * @param error An optional parameter which contains a handler for any time it + * fails to run the default request handling code + * @param unknownMethod An optional parameter which contains a handler for any time a method + * that is not defined is used + * @returns A deno deploy compatible request handler + */ +export function router( + routes: Routes, + other: RequestHandler = defaultOtherHandler, + error: ErrorHandler = defaultErrorHandler, + unknownMethod: UnknownMethodHandler = defaultUnknownMethodHandler, +): RequestHandler { + return async (req) => { + try { + // route > method > handler + const internalRoutes: Record> = {}; + + for (const [route, handler] of Object.entries(routes)) { + const [methodOrPath, path] = route.split(methodRegex); + + if (path) { + internalRoutes[path] ??= {}; + internalRoutes[path][methodOrPath] = handler; + } else { + internalRoutes[methodOrPath] ??= {}; + internalRoutes[methodOrPath]["any"] = handler; + } + } + + for (const [path, methods] of Object.entries(internalRoutes)) { + const pattern = new URLPattern({ + pathname: path, + }); + const res = pattern.exec(req.url); + + if (res !== null) { + for (const [method, handler] of Object.entries(methods)) { + if (req.method === method) { + return await handler( + req, + res.pathname.groups as Record, + ); + } + } + if (methods["any"]) { + return await methods["any"]( + req, + res.pathname.groups as Record, + ); + } else { + return await unknownMethod(req, Object.keys(methods)); + } + } + } + + return await other(req); + } catch (err) { + return error(req, err); + } + }; +} diff --git a/typegate/tests/utils/test.ts b/typegate/tests/utils/test.ts index 7b640f35a3..6cecc30142 100644 --- a/typegate/tests/utils/test.ts +++ b/typegate/tests/utils/test.ts @@ -89,7 +89,7 @@ function serve(typegates: TypegateManager): Promise { }); } -type MetaTestCleanupFn = () => void | Promise; +type MetaTestCleanupFn = () => unknown | Promise; const defaultCli = await createMetaCli(shell); @@ -138,7 +138,9 @@ export class MetaTest { } addCleanup(fn: MetaTestCleanupFn) { - this.disposables.defer(fn); + this.disposables.defer(async () => { + await fn(); + }); } get typegate() { diff --git a/typegraph/core/Cargo.toml b/typegraph/core/Cargo.toml index 5ee4a42318..513869af1d 100644 --- a/typegraph/core/Cargo.toml +++ b/typegraph/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "typegraph_core" -version = "0.4.4" +version = "0.4.6" edition = "2021" [lib] diff --git a/typegraph/core/src/global_store.rs b/typegraph/core/src/global_store.rs index bf7ebbab94..a44b5ba081 100644 --- a/typegraph/core/src/global_store.rs +++ b/typegraph/core/src/global_store.rs @@ -102,7 +102,7 @@ const PREDEFINED_DENO_FUNCTIONS: &[&str] = &["identity", "true"]; thread_local! { pub static STORE: RefCell = RefCell::new(Store::new()); - pub static SDK_VERSION: String = "0.4.4".to_owned(); + pub static SDK_VERSION: String = "0.4.6".to_owned(); } fn with_store T>(f: F) -> T { diff --git a/typegraph/core/src/t.rs b/typegraph/core/src/t.rs index bc527d894c..f79d16bfe4 100644 --- a/typegraph/core/src/t.rs +++ b/typegraph/core/src/t.rs @@ -237,7 +237,7 @@ pub struct OptionalBuilder { impl Default for TypeOptional { fn default() -> Self { Self { - of: u32::max_value(), + of: u32::MAX, default_item: None, } } @@ -268,7 +268,7 @@ pub struct ListBuilder { impl Default for TypeList { fn default() -> Self { Self { - of: u32::max_value(), + of: u32::MAX, min: None, max: None, unique_items: None, @@ -454,10 +454,10 @@ pub struct FuncBuilder { impl Default for TypeFunc { fn default() -> Self { Self { - inp: u32::max_value(), - out: u32::max_value(), + inp: u32::MAX, + out: u32::MAX, parameter_transform: None, - mat: u32::max_value(), + mat: u32::MAX, rate_calls: false, rate_weight: None, } diff --git a/typegraph/core/src/typegraph.rs b/typegraph/core/src/typegraph.rs index 98bc87f77c..32e63cc69f 100644 --- a/typegraph/core/src/typegraph.rs +++ b/typegraph/core/src/typegraph.rs @@ -224,7 +224,7 @@ pub fn serialize(params: SerializeParams) -> Result<(String, Vec)> deps: Default::default(), }; - tg.meta.prefix = params.prefix.clone(); + tg.meta.prefix.clone_from(¶ms.prefix); let pretty = params.pretty; TypegraphPostProcessor::new(params).postprocess(&mut tg)?; diff --git a/typegraph/core/src/utils/archive.rs b/typegraph/core/src/utils/archive.rs index 6243fd56f4..2fee14b3c4 100644 --- a/typegraph/core/src/utils/archive.rs +++ b/typegraph/core/src/utils/archive.rs @@ -2,14 +2,12 @@ // SPDX-License-Identifier: MPL-2.0 use super::fs::FsContext; -use common::archive::{ - archive_entries_from_bytes, encode_bytes_to_base_64, tarb64_unpack_entries_as_map, -}; +use common::archive::{archive_entries_from_bytes, encode_bytes_to_base_64}; use std::{collections::BTreeMap, path::Path}; pub trait ArchiveExt { fn compress_and_encode(&self, path: impl AsRef) -> Result; - fn unpack_base64(&self, tarb64: &str, dest: &Path) -> Result<(), String>; + // fn unpack_base64(&self, tarb64: &str, dest: &Path) -> Result<(), String>; } impl FsContext { @@ -59,7 +57,7 @@ impl ArchiveExt for FsContext { encode_bytes_to_base_64(bytes).map_err(|e| e.to_string()) } - fn unpack_base64(&self, tarb64: &str, dest: &Path) -> Result<(), String> { + /* fn unpack_base64(&self, tarb64: &str, dest: &Path) -> Result<(), String> { // TODO iterator instead of loading everything in memory let contents = tarb64_unpack_entries_as_map(Some(tarb64)).map_err(|e| e.to_string())?; @@ -68,5 +66,5 @@ impl ArchiveExt for FsContext { } Ok(()) - } + } */ } diff --git a/typegraph/deno/sdk/jsr.json b/typegraph/deno/sdk/jsr.json index 7972b214ed..86c33cd151 100644 --- a/typegraph/deno/sdk/jsr.json +++ b/typegraph/deno/sdk/jsr.json @@ -1,6 +1,6 @@ { "name": "@typegraph/sdk", - "version": "0.4.4", + "version": "0.4.6", "publish": { "exclude": [ "!src/gen", diff --git a/typegraph/python/pyproject.toml b/typegraph/python/pyproject.toml index 0f1e139437..8331c710af 100644 --- a/typegraph/python/pyproject.toml +++ b/typegraph/python/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "typegraph" -version = "0.4.4" +version = "0.4.6" 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/typegraph/python/typegraph/__init__.py b/typegraph/python/typegraph/__init__.py index 8b5ce012bf..5e7b022166 100644 --- a/typegraph/python/typegraph/__init__.py +++ b/typegraph/python/typegraph/__init__.py @@ -5,4 +5,4 @@ from typegraph.policy import Policy # noqa from typegraph import effects as fx # noqa -version = "0.4.4" +version = "0.4.6" diff --git a/website/blog/2023-03-15-emulating-servers/index.mdx b/website/blog/2023-03-15-emulating-servers/index.mdx index 5f61a0c32e..aaa88ade7a 100644 --- a/website/blog/2023-03-15-emulating-servers/index.mdx +++ b/website/blog/2023-03-15-emulating-servers/index.mdx @@ -7,13 +7,13 @@ import UpgradeMetatype from "../../shared/upgrade/index.mdx"; ## Introducing the Embedded Typegate -The embedded typegate is a feature that comes with the [Meta CLI](/docs/reference/meta-cli) which provides the option of spinning a typegate instance from the CLI with minimum configurations and installations needed from the developer. All that is required to access the _Embedded Typegate_ is to install _Meta_CLI_. The spawned typegate instance behaves similarly to cloud-deployed typegates. +The embedded typegate is a feature that comes with the [Meta CLI](/docs/reference/meta-cli) which provides the option of spinning a typegate instance from the CLI with minimum configurations and installations needed from the developer. All that is required to access the _Embedded Typegate_ is to install _Meta CLI_. The spawned typegate instance behaves similarly to cloud-deployed typegates. ## The motive -There are more than a couple of reasons why a developer would be tempted to use an emedded typegate. While developers can start a typegate instance using docker compose, the developer needs to install docker as a dependency to run the typegate container. Even though docker is familiar among many developers, it can sometimes be tricky and unbeknownst to some developers. We at metatype highly value the developer experience and one reason for adding the _embedded typegate_ feature to the _Meta_CLI_ is for users to have a smooth experience with our system by providing a docker compose free experience. +There are more than a couple of reasons why a developer would be tempted to use an emedded typegate. While developers can start a typegate instance using docker compose, the developer needs to install docker as a dependency to run the typegate container. Even though docker is familiar among many developers, it can sometimes be tricky and unbeknownst to some developers. We at metatype highly value the developer experience and one reason for adding the _embedded typegate_ feature to the _Meta CLI_ is for users to have a smooth experience with our system by providing a docker compose free experience. This feature provides a great utility for developers to author and test typegraphs in their local machine before deploying them to production level typegate instances on the cloud. -Additionally, developers need not concern themselves with deployment configurations which are needed only during deployment. The only need to focus their energy and time in developing the right application and easily test them on _embedded typegate_ running from the terminal. To add more to what is said, as the typegate engine keeps evolving, users will be abstracted away from the different configurations which might be added on the future. The _Meta_CLI_ will abstract much of what's not needed in a dev environment. Thus, leaving less headaches to developers on new changes. +Additionally, developers need not concern themselves with deployment configurations which are needed only during deployment. The only need to focus their energy and time in developing the right application and easily test them on _embedded typegate_ running from the terminal. To add more to what is said, as the typegate engine keeps evolving, users will be abstracted away from the different configurations which might be added on the future. The _Meta CLI_ will abstract much of what's not needed in a dev environment. Thus, leaving less headaches to developers on new changes. Ultimately, The _embedded typegate_ is designed to be a good dev environment friendly tool which faciliates development time. ## Quick First hand example @@ -22,7 +22,7 @@ Ultimately, The _embedded typegate_ is designed to be a good dev environment fri Either of the two [Typegraph](/docs/reference/typegraph) SDKs are needed to author typegraphs. For this example, the node SDK will be used. -First, make sure the _Meta_CLI_ is installed. +First, make sure the _Meta CLI_ is installed. ```shell curl -fsSL https://raw.githubusercontent.com/metatypedev/metatype/main/installer.sh | bash diff --git a/website/docs/guides/wasm-functions/index.mdx b/website/docs/guides/wasm-functions/index.mdx index bbd14992d7..3bd6f49764 100644 --- a/website/docs/guides/wasm-functions/index.mdx +++ b/website/docs/guides/wasm-functions/index.mdx @@ -78,7 +78,7 @@ By default, the `mdk_rust` generator outputs all the necessary files required to } -`mdk_rust` will not overwrite a `Cargo.toml` file discovored at generation path so you can add other dependencies if need be. +`mdk_rust` will not overwrite a `Cargo.toml` file discovered at generation path so you can add other dependencies if need be. The `mdk.rs` file contains all the glue code including the typegraph types. diff --git a/website/docs/tutorials/quick-start/index.mdx b/website/docs/tutorials/quick-start/index.mdx index 70994d2e4d..e227db3f41 100644 --- a/website/docs/tutorials/quick-start/index.mdx +++ b/website/docs/tutorials/quick-start/index.mdx @@ -13,12 +13,8 @@ import FirstProject from "../../../shared/projects/first-project.mdx"; :::note You will learn -- how to install the meta CLI -- how to install the typegraph SDK -- how to run a typegate node -- how to bootstrap a Metatype application -- how to author typegraphs -- how to deploy and run typegraphs on a typegate node. +- how to install the Metatype SDKs and tools. +- how to create and run a Metatype app. ::: @@ -79,30 +75,6 @@ node version v18.16.0 └————————————————————————————————————————————————————————————┘ ``` -## 5. Install the development tools (Optional) - -:::warning - -🚧 This is a work in progress and still experimental. - -::: - -The development tools provide some additional real-time diagnostics on the typegraph definition and autocompletion (WIP). - -Currently, it only works for TypeScript/JavaScript typegraph definitions and the VS Code editor. - -### VS Code - -VS Code users can use the [VSCode extension for Metatype](https://marketplace.visualstudio.com/items?itemName=metatypedev.vscode-metatype). - -To install it, launch VS Code Quick Open (`Ctrl+P`), paste the following command, and press enter. - -``` -ext install metatypedev.vscode-metatype -``` - -Alternatively, you can download the `.vsix` file from the [releases page](https://github.com/metatypedev/metatype/releases) and manually install the extension. - ## Writing your First App diff --git a/website/package.json b/website/package.json index 56e86bcd65..d5f481d1b9 100644 --- a/website/package.json +++ b/website/package.json @@ -31,6 +31,7 @@ "autoprefixer": "^10.4.19", "clsx": "^2.1.1", "docusaurus-theme-frontmatter": "^1.3.0", + "gleap": "^13.7.9", "graphiql": "3.3.2", "graphql": "^16.9.0", "graphql-tag": "^2.12.6", diff --git a/website/packages/code-loader-transform.js b/website/packages/code-loader-transform.js index a8fc252d03..e05b6e3620 100644 --- a/website/packages/code-loader-transform.js +++ b/website/packages/code-loader-transform.js @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-var-requires */ const deindent = require("de-indent"); const path = require("path"); -const { spawn } = require("child_process"); +//const { spawn } = require("child_process"); const projectDir = path.resolve(__dirname, "../.."); @@ -24,6 +24,7 @@ module.exports = async function (source) { const ext = relPath.split(".").pop(); const prefix = commentsPrefix[ext]; + /* if (ext === "py") { source = await new Promise((resolve, reject) => { const child = spawn("ruff", ["format", "--line-length", "70", "-"]); @@ -45,8 +46,8 @@ module.exports = async function (source) { } }); }); - console.log(this.resourcePath, source); } + */ const ret = []; let skipping = false; diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 7336664386..6cb9581817 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -51,6 +51,9 @@ importers: docusaurus-theme-frontmatter: specifier: ^1.3.0 version: 1.3.0(@docusaurus/plugin-content-docs@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3)) + gleap: + specifier: ^13.7.9 + version: 13.7.9 graphiql: specifier: 3.3.2 version: 3.3.2(@codemirror/language@6.10.2)(@types/node@20.14.10)(@types/react@18.3.3)(graphql-ws@5.16.0(graphql@16.9.0))(graphql@16.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5405,6 +5408,12 @@ packages: integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==, } + gleap@13.7.9: + resolution: + { + integrity: sha512-+iaFXyA29fVoVFZzOOvEuyiLYZ9SR0LTLSrI/gZq4U5dRyW2kjZRhoJBwppuA3vtOS9HY8TBtIWksRw3jDGtPw==, + } + glob-parent@5.1.2: resolution: { @@ -7788,6 +7797,12 @@ packages: integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==, } + pick-dom-element@0.2.3: + resolution: + { + integrity: sha512-XBwCZMMnmZAU68lvizuAluOBpImiE3sgXEbrMjBBJ/SjUiHTeep38oiBL8wWMy9ZXxNk6JvmYRUmGiZnCOvUFw==, + } + picocolors@1.0.1: resolution: { @@ -9879,6 +9894,12 @@ packages: integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==, } + unique-selector@0.5.0: + resolution: + { + integrity: sha512-2KCiRgM19ol67lO493tF7mnQPDuYzwRM7JXrVx336+BPXqT2ccCbUOQQpErFbSc8VIdifLf5x34x4lIeebk+YA==, + } + unique-string@3.0.0: resolution: { @@ -14640,6 +14661,12 @@ snapshots: github-slugger@1.5.0: {} + gleap@13.7.9: + dependencies: + "@floating-ui/dom": 1.6.7 + pick-dom-element: 0.2.3 + unique-selector: 0.5.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -16261,6 +16288,8 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 + pick-dom-element@0.2.3: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -17605,6 +17634,8 @@ snapshots: trough: 1.0.5 vfile: 4.2.1 + unique-selector@0.5.0: {} + unique-string@3.0.0: dependencies: crypto-random-string: 4.0.0 diff --git a/website/shared/install/meta-cli.mdx b/website/shared/install/meta-cli.mdx index a5824b07ae..e04d6bf2d9 100644 --- a/website/shared/install/meta-cli.mdx +++ b/website/shared/install/meta-cli.mdx @@ -14,9 +14,13 @@ executable and add it to your `PATH` or use the automated method below. curl -fsSL https://raw.githubusercontent.com/metatypedev/metatype/main/installer.sh | bash ``` +:::info + - For later use, you can run the following command to upgrade `Meta CLI` to a newer version. If your Meta CLI is up to date, you will get an `Already up to date!` response. ```bash meta upgrade ``` +::: + That's it! You are done installing `Meta CLI`. diff --git a/website/shared/install/typegate.mdx b/website/shared/install/typegate.mdx index 9da4e285c8..6a8c9d4b1e 100644 --- a/website/shared/install/typegate.mdx +++ b/website/shared/install/typegate.mdx @@ -2,10 +2,15 @@ import EmbeddedTypegate from "../meta-cli/embedded-typegate.mdx"; ### Using Embedded Typegate (Recommended) - +```shell +meta typegate +``` -### Using Docker +The typegate instance runs on port `7890` by default. You can check if the typegate node is running by accessing [http://localhost:7890](http://localhost:7890) in your browser. +
+ Using docker (Not Recommended) + Install [Docker](https://docs.docker.com/get-docker/) and use the following `compose.yml` to launch a typegate node. For multi-instance production workloads, Redis and an S3 object store provider are required but the typegate will run using in-memory stores if no `SYNC_*` environment variable is detected. More details can be found [here](/docs/reference/typegate/synchronization). In practice you might also want to add a database or other systems that the typegate can connect to. ```yml @@ -30,3 +35,5 @@ docker compose up --detach # watch the typegate logs docker compose logs typegate --follow ``` + +
diff --git a/website/shared/install/typegraph.mdx b/website/shared/install/typegraph.mdx index 18b237361e..b461804fd4 100644 --- a/website/shared/install/typegraph.mdx +++ b/website/shared/install/typegraph.mdx @@ -1,4 +1,6 @@ import SDKTabs from "@site/src/components/SDKTabs"; +import PyPmTabs from "@site/src/components/PythonPackageManagerTabs"; +import TsPmTabs from "@site/src/components/TsPackageManagerTabs"; import TabItem from "@theme/TabItem"; @@ -8,23 +10,48 @@ import TabItem from "@theme/TabItem"; Install the `@typegraph/sdk` package from npm using your preferred package manager and runtime. The SDK requires Node 16+ with Typescript 4.7+, Deno 1.28+ or Bun 1+. -```bash -# using pnpm -pnpm add @typegraph/sdk - -# using npm -npm install @typegraph/sdk - -# using yarn -yarn add @typegraph/sdk - -# using Deno -import { ... } from "npm:@typegraph/sdk/mod.ts"; - -# using Bun -bun add @typegraph/sdk -``` - + + + ```bash + pnpm add @typegraph/sdk + ``` + + + ```bash + npm install @typegraph/sdk + ``` + + + ```bash + yarn add @typegraph/sdk + ``` + + + ```bash + import { ... } from "npm:@typegraph/sdk/mod.ts"; + ``` + + + ```bash + bun add @typegraph/sdk + ``` + + + ```bash + # deno + deno add @typegraph/sdk + + # npm (one of the below, depending on your package manager) + npx jsr add @typegraph/sdk + yarn dlx jsr add @typegraph/sdk + pnpm dlx jsr add @typegraph/sdk + bunx jsr add @typegraph/sdk + ``` + + + + +
When using Node, make sure to add this to your Typescript configuration: ```json @@ -42,13 +69,14 @@ Create (and activate) your virtual environment with Python 3.8+ for your project # virtual env python3 -m venv .venv source .venv/bin/activate +``` -# using pip -pip3 install typegraph +{" "} -# using poetry -poetry add typegraph -``` + + ```bash pip3 install typegraph ``` + ```bash poetry add typegraph ``` +
diff --git a/website/shared/meta-cli/embedded-typegate.mdx b/website/shared/meta-cli/embedded-typegate.mdx index 63ca632f0d..038f9e017d 100644 --- a/website/shared/meta-cli/embedded-typegate.mdx +++ b/website/shared/meta-cli/embedded-typegate.mdx @@ -1,4 +1,4 @@ -The _Meta_CLI_ comes with an embedded typegate packaged inside it. A [typegate](/docs/reference/typegate) instance is where you deploy your [typegraphs](/docs/reference/typegraph) where any logic written in them is exposed via an HTTP or GraphQL endpoints. You can run an embedded typegate node from the terminal, but you first need to set a couple of environment variables which are needed to instantiate the typegate node. +The _Meta CLI_ comes with an embedded typegate packaged inside it. A [typegate](/docs/reference/typegate) instance is where you deploy your [typegraphs](/docs/reference/typegraph) where any logic written in them is exposed via an HTTP or GraphQL endpoints. You can run an embedded typegate node from the terminal, but you first need to set a couple of environment variables which are needed to instantiate the typegate node. Set the `tg_admin_password` and `tg_secret` environment variables. You can use the following command to configure a sample value for the variables and test the embedded typegate. @@ -6,7 +6,7 @@ Set the `tg_admin_password` and `tg_secret` environment variables. You can use t export tg_secret=a4lNi0PbEItlFZbus1oeH/+wyIxi9uH6TpL8AIqIaMBNvp7SESmuUBbfUwC0prxhGhZqHw8vMDYZAGMhSZ4fLw== tg_admin_password=password ``` -If you have not installed _Meta_CLI_ or you have downloaded the _thin_ version, you can check [this](/docs/reference/meta-cli#Installation) installation guide of the _CLI_. +If you have not installed _Meta CLI_ or you have downloaded the _thin_ version, you can check [this](/docs/reference/meta-cli#Installation) installation guide of the _CLI_. Everything is setup to run the embedded typegate. Just run the following command below. diff --git a/website/shared/projects/tab-first-project-python.mdx b/website/shared/projects/tab-first-project-python.mdx index a24499161d..6848fb057d 100644 --- a/website/shared/projects/tab-first-project-python.mdx +++ b/website/shared/projects/tab-first-project-python.mdx @@ -103,7 +103,7 @@ With these simple steps, you were able to build a basic backend with database ca } -You are almost there to test your first `Metatype` application. You now need to spin a [Tyepgate](/docs/reference/typegate) and deploy your typegraph to the instance. You can leverage the embedded typegate that comes with the _Meta_CLI_. To run the [embedded typegate](/docs/reference/meta-cli/embedded-typegate), execute the following command from your terminal. +You are almost there to test your first `Metatype` application. You now need to spin a [Tyepgate](/docs/reference/typegate) and deploy your typegraph to the instance. You can leverage the embedded typegate that comes with the _Meta CLI_. To run the [embedded typegate](/docs/reference/meta-cli/embedded-typegate), execute the following command from your terminal. ```shell meta typegate diff --git a/website/shared/projects/tab-first-project-ts.mdx b/website/shared/projects/tab-first-project-ts.mdx index 341a258d20..754823a697 100644 --- a/website/shared/projects/tab-first-project-ts.mdx +++ b/website/shared/projects/tab-first-project-ts.mdx @@ -105,7 +105,7 @@ With these three simple steps, you were able to build a basic backend with datab } -You are almost there to test your first `Metatype` application. You now need to spin a [Tyepgate](/docs/reference/typegate) and deploy your typegraph to the instance. You can leverage the embedded typegate that comes with the _Meta_CLI_. To run the [embedded typegate](/docs/reference/meta-cli/embedded-typegate), execute the following command from your terminal. +You are almost there to test your first `Metatype` application. You now need to spin a [Tyepgate](/docs/reference/typegate) and deploy your typegraph to the instance. You can leverage the embedded typegate that comes with the _Meta CLI_. To run the [embedded typegate](/docs/reference/meta-cli/embedded-typegate), execute the following command from your terminal. ```bash meta typegate diff --git a/website/src/components/PythonPackageManagerTabs/index.tsx b/website/src/components/PythonPackageManagerTabs/index.tsx new file mode 100644 index 0000000000..9123232baa --- /dev/null +++ b/website/src/components/PythonPackageManagerTabs/index.tsx @@ -0,0 +1,24 @@ +// Copyright Metatype OÜ, licensed under the Elastic License 2.0. +// SPDX-License-Identifier: Elastic-2.0 + +import React, { PropsWithChildren } from "react"; +import { usePythonPackageManager } from "../../states/package_manager"; +import { ChoicePicker } from "../ChoicePicker"; + +export default function NakedPythonPmPicker({ + children, +}: PropsWithChildren>) { + const [pm, setPm] = usePythonPackageManager(); + return ( + + {children} + + ); +} diff --git a/website/src/components/TsPackageManagerTabs/index.tsx b/website/src/components/TsPackageManagerTabs/index.tsx new file mode 100644 index 0000000000..926f2296ac --- /dev/null +++ b/website/src/components/TsPackageManagerTabs/index.tsx @@ -0,0 +1,28 @@ +// Copyright Metatype OÜ, licensed under the Elastic License 2.0. +// SPDX-License-Identifier: Elastic-2.0 + +import React, { PropsWithChildren } from "react"; +import { useTsPackageManager } from "../../states/package_manager"; +import { ChoicePicker } from "../ChoicePicker"; + +export default function NakedTsPmPicker({ + children, +}: PropsWithChildren>) { + const [pm, setPm] = useTsPackageManager(); + return ( + + {children} + + ); +} diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx index 19934cbe93..81aa685ff9 100644 --- a/website/src/pages/index.tsx +++ b/website/src/pages/index.tsx @@ -19,6 +19,14 @@ import Heading from "@theme/Heading"; function Header() { return (
+
+ + Devhunt result + +
Metatype logo diff --git a/website/src/states/package_manager.ts b/website/src/states/package_manager.ts new file mode 100644 index 0000000000..e38901087b --- /dev/null +++ b/website/src/states/package_manager.ts @@ -0,0 +1,101 @@ +// Copyright Metatype OÜ, licensed under the Elastic License 2.0. +// SPDX-License-Identifier: Elastic-2.0 + +import { atom, useAtom } from "jotai"; +import { atomWithLocation } from "jotai-location"; +import { atomWithStorage, createJSONStorage } from "jotai/utils"; +import { useCallback, useEffect } from "react"; + +export type TsPackageManager = "pnpm" | "deno" | "npm" | "jsr" | "yarn" | "bun"; +const defaultTsValue = "npm" as TsPackageManager; +const tsKey = "tsPackageManager"; + +export type PythonPackageManager = "pip" | "poetry"; +const defaultPythonValue = "poetry" as PythonPackageManager; +const pythonKey = "pythonPackageManager"; + +const locationAtom = atomWithLocation(); + +const tsPmQueryAtom = atom( + (get) => + get(locationAtom).searchParams?.get(tsKey) as TsPackageManager | null, + (get, set, value: TsPackageManager) => { + const searchParams = + get(locationAtom).searchParams ?? new URLSearchParams(); + searchParams.set(tsKey, value); + set(locationAtom, (prev) => ({ + ...prev, + searchParams, + })); + }, +); + +const pythonPmQueryAtom = atom( + (get) => + get(locationAtom).searchParams?.get( + pythonKey, + ) as PythonPackageManager | null, + (get, set, value: TsPackageManager) => { + const searchParams = + get(locationAtom).searchParams ?? new URLSearchParams(); + searchParams.set(pythonKey, value); + set(locationAtom, (prev) => ({ + ...prev, + searchParams, + })); + }, +); + +const tsPmSessionAtom = atomWithStorage( + tsKey, + defaultTsValue, + createJSONStorage(() => sessionStorage), +); + +const pythonPmSessionAtom = atomWithStorage( + pythonKey, + defaultPythonValue, + createJSONStorage(() => sessionStorage), +); + +export function useTsPackageManager() { + const [query, setQuery] = useAtom(tsPmQueryAtom); + const [session, setSession] = useAtom(tsPmSessionAtom); + + useEffect(() => { + if (query && query !== session) { + setSession(query); + } + }, [query, setSession]); + + const set = useCallback( + (value: TsPackageManager) => { + setQuery(value); + setSession(value); + }, + [setQuery, setSession], + ); + + return [query ?? session, set] as const; +} + +export function usePythonPackageManager() { + const [query, setQuery] = useAtom(pythonPmQueryAtom); + const [session, setSession] = useAtom(pythonPmSessionAtom); + + useEffect(() => { + if (query && query !== session) { + setSession(query); + } + }, [query, setSession]); + + const set = useCallback( + (value: PythonPackageManager) => { + setQuery(value); + setSession(value); + }, + [setQuery, setSession], + ); + + return [query ?? session, set] as const; +} diff --git a/website/src/theme/Root.js b/website/src/theme/Root.js new file mode 100644 index 0000000000..432e8884cf --- /dev/null +++ b/website/src/theme/Root.js @@ -0,0 +1,10 @@ +import React, { useEffect } from "react"; +import Gleap from "gleap"; + +export default function Root({ children }) { + useEffect(() => { + Gleap.initialize("dyWs3yourDQZkNztYzV7yZgcyMcWGpaF"); + }, []); + + return <>{children}; +} diff --git a/website/static/images/homepage/devhunt_tab_dark.svg b/website/static/images/homepage/devhunt_tab_dark.svg new file mode 100644 index 0000000000..0370e2f7fc --- /dev/null +++ b/website/static/images/homepage/devhunt_tab_dark.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/images/homepage/devhunt_tab_dark_orange.svg b/website/static/images/homepage/devhunt_tab_dark_orange.svg new file mode 100644 index 0000000000..f33c1f09d2 --- /dev/null +++ b/website/static/images/homepage/devhunt_tab_dark_orange.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/images/homepage/devhunt_tab_orange.svg b/website/static/images/homepage/devhunt_tab_orange.svg new file mode 100644 index 0000000000..3518505b47 --- /dev/null +++ b/website/static/images/homepage/devhunt_tab_orange.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/images/homepage/devhunt_tab_solid.svg b/website/static/images/homepage/devhunt_tab_solid.svg new file mode 100644 index 0000000000..ff3212be82 --- /dev/null +++ b/website/static/images/homepage/devhunt_tab_solid.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/images/homepage/tab_grey.svg b/website/static/images/homepage/tab_grey.svg new file mode 100644 index 0000000000..dba5d00816 --- /dev/null +++ b/website/static/images/homepage/tab_grey.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/whiz.yaml b/whiz.yaml index 8e2d3ef76b..9b011d6022 100644 --- a/whiz.yaml +++ b/whiz.yaml @@ -11,8 +11,6 @@ gate1: &tp command: ghjk x dev-gate1 pipe: "^.+DEBUG http .*$": whiz://http - env: - TMP_DIR: "./tmp" gate2: <<: *tp @@ -55,7 +53,7 @@ setup: - typegraph/python/pyproject.toml - website/package.json env: - GHJK_VERSION: "0.2.0" + GHJK_VERSION: "b702292" command: | set -e curl -fsSL https://raw.githubusercontent.com/metatypedev/ghjk/$GHJK_VERSION/install.sh | bash @@ -66,4 +64,4 @@ setup: ghjk x install-ts ghjk x install-website ghjk x install-lsp - ghjk x install-sys | bash + echo 'NOTE: To install system dependencies, do "ghjk x install-sys | bash"'