diff --git a/docs/architecture.md b/docs/architecture.md index 9e12373b..d6bc5ec4 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,5 +1,242 @@ # Architecture -There's a overview diagram avail -[here](https://www.tldraw.com/s/v2_c_MewHuw1lKwZzwv3XG8-Y6?viewport=-3756%2C-1126%2C10279%2C6280&page=page%3Apage). -Be sure to update the [backup](./architecture.tldr) if you update that. +> [!WARNING] Ghjk is currently very early stages of development so expect +> unstable apis, large refactors and all kinds of insects and dragons if you +> intend to use it. A lot of the what's outlined in this document might change +> as the problem/design space is exploired. + +## TLDR + +> [!INFO] There's a overview diagram avail +> [here](https://www.tldraw.com/s/v2_c_MewHuw1lKwZzwv3XG8-Y6?viewport=-3756%2C-1126%2C10279%2C6280&page=page%3Apage). +> Be sure to update the [backup](./architecture.tldr) if you update that. + +Ghjk is made up of a set of modules that each implement and encapsulate a set of +related features. The program is primarily consumed through the provided CLI. It +as an argument a path to a ghjkfile (through `$GHJK_CONFIG`) and if no such +argument is provided, it'll look for a file named `ghjk.ts` in the current or +any of the parent directories and treat it as the config file. It then loads the +config file in a `WebWorker` to obtain a config object which is expected to +contain configuration for any of the modules it's intersted in. The modules then +process their configuration and, based on it, outline the cli commands and flags +to expose through the CLI. The modules are also allowed to export entries to the +lockfile which is treated as a _memo_ of the processed config file. If As of +January 1, 2024 the following modules are imlemented/planned: + +- Ports: download and install executables and libraries +- Envs (TBD): make CLI shell environments that have access to specific programs + and variables +- Tasks: run commands in custom shell environments + +## Run down + +Ghjk is composed of two distinct spheres: + +- The ghjkfile + - Currently, only `ghjk.ts` files are supported + - produces a config object that configure the different modules +- The host + - loads and processes config files + +Config files are the primary entry point for interacting with `ghjk` and provide +the vector of programmability for end users. As of today, only `ghjk.ts` config +files are supported but the `ghjk` is designed to support alternatives. You'll +observe that this kind of modularity and extensability will is a core motif of +the design, providing consraints, guidance and tension that's informed a lot of +the current design. A lot of decisions and abstractions will thus appear YAGNI +at this early stage but programmability is the name of the game in ghjk is +programmability so we prefer to err on the side of modularity. + +### Ghjkfiles + +### `ghjk.ts` + +- They're loaded in a `WebWorker` (Deno flavoured) with access limited to: + - `--allow-read=$PWD` + - `--allow-net=*` + - `--allow-env=*` + - `--allow-sys=*` +- `ghjk.ts` is expected to expose a `getConfig` function +- `getConfig` is expected to return a `Promise` type + - If `ghjk.ts` exposes an item named `secureConfig`, it's passed as the first + argument to `getConfig`. +- `ghjk/mod.ts` exposes a bunch of helpers for authoring conventional `ghjk.ts` + but as far as the host is concerned, it's only aware of the `getConfig` + interface. + +#### `ghjk.lock.json` + +- Will be searched for in the same directory as the ghjkfile. +- If found and if the `mtime` is after the config file's `mtime`, will be + treated as valid. +- [ ] Move to non-json format +- [ ] Avoid discarding whole lockfile just because of `mtime`. Reuse what's + possible. +- If no lockfile is found: + - Each module declared in the config file processes its specific config and + generates a lock entry + - The lock entries are then used as input when driving the module +- If lockfile is found: + - The lock entries of each module are used to drive the module. + +### Host + +The host is the section of the program expected to: + +- Provide the `ghjk` CLI +- Load and serialize config files +- Load and drive the modules according CLI arguments and config object +- Lockfile management + +### Modules + +Ghjk is made up of a set of interacting modules implementing specific +functionality. Listed below are the modules that we think will make ghjk a +complete runtime manager but note that we don't currently plan on implementing +all of them. Getting each module to become competitive with equivalent tools let +alone achieving feature parity is beyond the resources available to the authors +today and their design is only considered here to provide a holistic framework +for development of ghjk. It's afterall a _programmable runtime manager_ and we +intend to make the core of ghjk (i.e. the host) modular enough that: + +- Future implementations shouldn't require large refactors +- Easy intergration of external tools as modules +- Easy to swap implementation of modules without requring lot of changes in + other dependent modules + +#### Ports module + +Equivalent tools: + +- [`asdf`](https://github.com/asdf-vm/asdf) +- [`rtx`](https://github.com/jdx/rtx) +- [`proto`](https://moonrepo.dev/docs/proto) +- [`nix`](https://github.com/NixOS/nix) and especially so the + [flakes](https://www.tweag.io/blog/2020-05-25-flakes/) feature. + +- The ports module handles the download and installation of os level programs + and libraries. + - Executables, shared libraries, header files, documentation (TODO) are all in + scope. + - Installations are put in a centeral location and are shared across all the + ghjk environments that make use of them. +- The config for the ports module expects: + - `allowedPortDeps`: the list of ports other ports are allowed to depend on at + build time. + - Including the default `InstallConfig` to use for the dependency port if + not specified by dependents. + - `installs`: a list of `InstallConfig` objects describing the installations + to provide. + - Each `InstallConfig` will contain a `PortManifest` describing the `Port` + program that will handle it's installation. + - A `PortManifest` can optionally specify a list of other ports, under + `buildDeps`, that the `Port` requires during build time. + - A separate list of dependencies, `resolutionDeps`, is used for + routines used for version resolution like `listAll` and + `latestStable`. + - Any dependencies used by ports must be declared in the top level + `allowedPortDeps` list. + - I.e. non standard dependencies will have to be manually declared there + by users. + - `InstallConfig` can optionally contain a `version`. + - If found, the `version` is sanity checked agains the list of versions + returned by `listAll`. + - [ ] Fuzzy matching can optionally take place. + - If not found, the `latestStable` version routine of the `Port` is + invoked to obtain the version. + - `InstallConfig` can optionally specify `InstallConfig`s to be used by the + dependency ports. + - If provided, will override the default from the top level + `allowedPortDeps`. + - [ ] runtime deps + +##### Port implementation reference + +- A Port is described through the `PortManifest` object. +- The implementation and execution of ports depends on the `ty` of the port but + they're all roughly expose the following stages modeled after `asdf` plugins: + - `listAll`: return a list of all the versions that the port + - `latestStable`: the version to install when no version is specified by the + user. + - `download`: fetch distribution files into a provided dir + - Any archives are preferrably extracted prior to placement in download dir + - `install`: build, process, transform the downloaded files in any way + required to create the final artifacts. + - Artifacts are placed into the installDir + - [ ] Consider hiding the final install directory from ports + - `execEnv`: list of environment variables required by users of exposed + artifacts + - `listBinPaths`: list of executables to expose in the environment. Globs are + expanded. + - `listLibPaths`: list of shared libraries to expose in the environment. Globs + are expanded. + - `listIncludePaths`: list of header files to expose in the environment. Globs + are expanded. + - [ ] `listManPaths`: list of manual files to expose in the environment. Globs + are expanded. + +###### `denoWorker@v1` ports + +- EcmaScript file at `moduleSpecifier` is `import`ed within a `WebWorker`. + - It must export a `PortBase` class implementation under the name `Port`. +- Module will have limited deno permissions: + - `-allow-run=execs-of-build-deps` on the `download` and `install` stages. + - `-allow-run=execs-of-resolution-deps` on the `listAll` and `latestStable` + stages. + - `-allow-read=installDir,downloadDir` on all stages. + +###### `ambientAccess@v1` ports + +- Formally way of accessing tools already globally present on the system. +- Look at `AmbientAccessPortManifest` for what configuration is + required/available. + +#### Envs module + +Reproducable CLI shell environments that can access specific tools and +variables. Including support to auto-load an environment when a specific shell +`cd`'s to the ghjk root. + +Prior art: + +- [`direnv`](https://www.jetpack.io/devbox) +- [`devenv`](https://devenv.sh) +- [`devbox`](https://www.jetpack.io/devbox) +- [`devshell`](https://github.com/numtide/devshell) + +#### Tasks module + +Task runner. + +Inspiration: + +- [`just`](https://github.com/casey/just) +- [`moon`](https://moonrepo.dev/moon/) + +#### Build module + +Build system. This one is not on the cards right now. + +Aspirations: + +- [`make`](https://en.wikipedia.org/wiki/Make_(software)) +- [`bazel`](https://bazel.build/) +- [`nx`](https://nx.dev/) +- [`buck2`](https://buck2.build/) + +#### Containers module + +Create OCI compatible containers from based on the results of the Envs and Build +module. Not planned. + +Looking at: + +- [`earthly`](https://earthly.dev) + +#### Services module + +Service orchestration. + +Thinking of: + +- [`docker compose`](https://docs.docker.com/compose/) diff --git a/ghjk.deno.lock b/ghjk.deno.lock new file mode 100644 index 00000000..ffc8b349 --- /dev/null +++ b/ghjk.deno.lock @@ -0,0 +1,683 @@ +{ + "version": "3", + "redirects": { + "https://deno.land/std/testing/asserts.ts": "https://deno.land/std@0.210.0/testing/asserts.ts", + "https://x.nest.land/arithmetic4@0.1.1/mod.ts": "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/mod.ts" + }, + "remote": { + "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.120.0/_wasm_crypto/crypto.js": "5c283a80e1059d16589b79fa026be5fb0a28424302a99487cadceef8c17f8afa", + "https://deno.land/std@0.120.0/_wasm_crypto/crypto.wasm.js": "0e6df3c18beb1187b442ec7f0a03df4d18b21212172d6b4a50ee4816404771d7", + "https://deno.land/std@0.120.0/_wasm_crypto/mod.ts": "7d02009ef3ddc953c8f90561d213e02fa0a6f3eaed9b8baf0c241c8cbeec1ed3", + "https://deno.land/std@0.120.0/crypto/mod.ts": "5760510eaa0b250f78cce81ce92d83cf8c40e9bb3c3efeedd4ef1a5bb0801ef4", + "https://deno.land/std@0.120.0/encoding/ascii85.ts": "b42b041e9c668afa356dd07ccf69a6b3ee49b9ae080fdf3b03f0ac3981f4d1e6", + "https://deno.land/std@0.120.0/encoding/base64.ts": "0b58bd6477214838bf711eef43eac21e47ba9e5c81b2ce185fe25d9ecab3ebb3", + "https://deno.land/std@0.129.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", + "https://deno.land/std@0.129.0/archive/tar.ts": "35ea1baddec7988cc4034765a2cee7613bc8074bd40940d3f5e98f63070a716a", + "https://deno.land/std@0.129.0/async/deferred.ts": "bc18e28108252c9f67dfca2bbc4587c3cbf3aeb6e155f8c864ca8ecff992b98a", + "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/fmt/colors.ts": "30455035d6d728394781c10755351742dd731e3db6771b1843f9b9e490104d37", + "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/mod.ts": "1a4e8d19d42745fb2ff68d6ffa801657a4a15713bf7e7173df2da4737f5c5450", + "https://deno.land/std@0.129.0/io/readers.ts": "679471f3b9929b54393c9cd75b6bd178b4bc6d9aab5c0f1f9538f862cf4746fe", + "https://deno.land/std@0.129.0/io/streams.ts": "988a19155b52161f0035ce539e2f1d12edbc4c389fa7633da832a64e6edbe1a0", + "https://deno.land/std@0.129.0/io/util.ts": "078da53bba767bec0d45f7da44411f6dbf269e51ef7fcfea5e3714e04681c674", + "https://deno.land/std@0.129.0/io/writers.ts": "5db9995d2afc7ed391c88c6b441457df6fad6a0b09653e54c1dcd0387ab947fd", + "https://deno.land/std@0.129.0/streams/buffer.ts": "ee47194022d47fa23d4749b8afbadc83c237c4595467a9bddb322af0dd205815", + "https://deno.land/std@0.129.0/streams/conversion.ts": "712585bfa0172a97fb68dd46e784ae8ad59d11b88079d6a4ab098ff42e697d21", + "https://deno.land/std@0.129.0/streams/delimiter.ts": "75595345f14eb268d2f5edfd20600c9956f61499a36697baabef8043897bc50b", + "https://deno.land/std@0.129.0/streams/merge.ts": "89faf7dcda7e010f1e01dfc555d609c66d9fb2c834b7aa457a63cc70a25c3817", + "https://deno.land/std@0.129.0/streams/mod.ts": "5f47811c2e983518cc0c82f323924b6a9bb1f5bf948cd6d498ff6aed77ada51c", + "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.196.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", + "https://deno.land/std@0.196.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", + "https://deno.land/std@0.196.0/console/_data.json": "cf2cc9d039a192b3adbfe64627167c7e6212704c888c25c769fc8f1709e1e1b8", + "https://deno.land/std@0.196.0/console/_rle.ts": "56668d5c44f964f1b4ff93f21c9896df42d6ee4394e814db52d6d13f5bb247c7", + "https://deno.land/std@0.196.0/console/unicode_width.ts": "10661c0f2eeab802d16b8b85ed8825bbc573991bbfb6affed32dc1ff994f54f9", + "https://deno.land/std@0.196.0/fmt/colors.ts": "a7eecffdf3d1d54db890723b303847b6e0a1ab4b528ba6958b8f2e754cf1b3bc", + "https://deno.land/std@0.201.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", + "https://deno.land/std@0.201.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", + "https://deno.land/std@0.201.0/bytes/copy.ts": "939d89e302a9761dcf1d9c937c7711174ed74c59eef40a1e4569a05c9de88219", + "https://deno.land/std@0.201.0/fmt/colors.ts": "87544aa2bc91087bb37f9c077970c85bfb041b48e4c37356129d7b450a415b6f", + "https://deno.land/std@0.201.0/fs/_util.ts": "fbf57dcdc9f7bc8128d60301eece608246971a7836a3bb1e78da75314f08b978", + "https://deno.land/std@0.201.0/fs/copy.ts": "23cc1c465babe5ca4d69778821e2f8addc44593e30a5ca0b902b3784eed75bb6", + "https://deno.land/std@0.201.0/fs/empty_dir.ts": "2e52cd4674d18e2e007175c80449fc3d263786a1361e858d9dfa9360a6581b47", + "https://deno.land/std@0.201.0/fs/ensure_dir.ts": "dc64c4c75c64721d4e3fb681f1382f803ff3d2868f08563ff923fdd20d071c40", + "https://deno.land/std@0.201.0/fs/ensure_file.ts": "39ac83cc283a20ec2735e956adf5de3e8a3334e0b6820547b5772f71c49ae083", + "https://deno.land/std@0.201.0/fs/ensure_link.ts": "c15e69c48556d78aae31b83e0c0ece04b7b8bc0951412f5b759aceb6fde7f0ac", + "https://deno.land/std@0.201.0/fs/ensure_symlink.ts": "b389c8568f0656d145ac7ece472afe710815cccbb2ebfd19da7978379ae143fe", + "https://deno.land/std@0.201.0/fs/eol.ts": "f1f2eb348a750c34500741987b21d65607f352cf7205f48f4319d417fff42842", + "https://deno.land/std@0.201.0/fs/exists.ts": "cb59a853d84871d87acab0e7936a4dac11282957f8e195102c5a7acb42546bb8", + "https://deno.land/std@0.201.0/fs/expand_glob.ts": "52b8b6f5b1fa585c348250da1c80ce5d820746cb4a75d874b3599646f677d3a7", + "https://deno.land/std@0.201.0/fs/mod.ts": "bc3d0acd488cc7b42627044caf47d72019846d459279544e1934418955ba4898", + "https://deno.land/std@0.201.0/fs/move.ts": "b4f8f46730b40c32ea3c0bc8eb0fd0e8139249a698883c7b3756424cf19785c9", + "https://deno.land/std@0.201.0/fs/walk.ts": "a16146724a6aaf9efdb92023a74e9805195c3469900744ce5de4113b07b29779", + "https://deno.land/std@0.201.0/io/buf_reader.ts": "0bd8ad26255945b5f418940db23db03bee0c160dbb5ae4627e2c0be3b361df6a", + "https://deno.land/std@0.201.0/io/buffer.ts": "4d6883daeb2e698579c4064170515683d69f40f3de019bfe46c5cf31e74ae793", + "https://deno.land/std@0.201.0/path/_basename.ts": "057d420c9049821f983f784fd87fa73ac471901fb628920b67972b0f44319343", + "https://deno.land/std@0.201.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", + "https://deno.land/std@0.201.0/path/_dirname.ts": "355e297236b2218600aee7a5301b937204c62e12da9db4b0b044993d9e658395", + "https://deno.land/std@0.201.0/path/_extname.ts": "eaaa5aae1acf1f03254d681bd6a8ce42a9cb5b7ff2213a9d4740e8ab31283664", + "https://deno.land/std@0.201.0/path/_format.ts": "4a99270d6810f082e614309164fad75d6f1a483b68eed97c830a506cc589f8b4", + "https://deno.land/std@0.201.0/path/_from_file_url.ts": "6eadfae2e6f63ad9ee46b26db4a1b16583055c0392acedfb50ed2fc694b6f581", + "https://deno.land/std@0.201.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", + "https://deno.land/std@0.201.0/path/_is_absolute.ts": "05dac10b5e93c63198b92e3687baa2be178df5321c527dc555266c0f4f51558c", + "https://deno.land/std@0.201.0/path/_join.ts": "815f5e85b042285175b1492dd5781240ce126c23bd97bad6b8211fe7129c538e", + "https://deno.land/std@0.201.0/path/_normalize.ts": "a19ec8706b2707f9dd974662a5cd89fad438e62ab1857e08b314a8eb49a34d81", + "https://deno.land/std@0.201.0/path/_os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", + "https://deno.land/std@0.201.0/path/_parse.ts": "0f9b0ff43682dd9964eb1c4398610c4e165d8db9d3ac9d594220217adf480cfa", + "https://deno.land/std@0.201.0/path/_relative.ts": "27bdeffb5311a47d85be26d37ad1969979359f7636c5cd9fcf05dcd0d5099dc5", + "https://deno.land/std@0.201.0/path/_resolve.ts": "7a3616f1093735ed327e758313b79c3c04ea921808ca5f19ddf240cb68d0adf6", + "https://deno.land/std@0.201.0/path/_to_file_url.ts": "a141e4a525303e1a3a0c0571fd024552b5f3553a2af7d75d1ff3a503dcbb66d8", + "https://deno.land/std@0.201.0/path/_to_namespaced_path.ts": "0d5f4caa2ed98ef7a8786286df6af804b50e38859ae897b5b5b4c8c5930a75c8", + "https://deno.land/std@0.201.0/path/_util.ts": "4e191b1bac6b3bf0c31aab42e5ca2e01a86ab5a0d2e08b75acf8585047a86221", + "https://deno.land/std@0.201.0/path/basename.ts": "bdfa5a624c6a45564dc6758ef2077f2822978a6dbe77b0a3514f7d1f81362930", + "https://deno.land/std@0.201.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", + "https://deno.land/std@0.201.0/path/dirname.ts": "b6533f4ee4174a526dec50c279534df5345836dfdc15318400b08c62a62a39dd", + "https://deno.land/std@0.201.0/path/extname.ts": "62c4b376300795342fe1e4746c0de518b4dc9c4b0b4617bfee62a2973a9555cf", + "https://deno.land/std@0.201.0/path/format.ts": "110270b238514dd68455a4c54956215a1aff7e37e22e4427b7771cefe1920aa5", + "https://deno.land/std@0.201.0/path/from_file_url.ts": "9f5cb58d58be14c775ec2e57fc70029ac8b17ed3bd7fe93e475b07280adde0ac", + "https://deno.land/std@0.201.0/path/glob.ts": "593e2c3573883225c25c5a21aaa8e9382a696b8e175ea20a3b6a1471ad17aaed", + "https://deno.land/std@0.201.0/path/is_absolute.ts": "0b92eb35a0a8780e9f16f16bb23655b67dace6a8e0d92d42039e518ee38103c1", + "https://deno.land/std@0.201.0/path/join.ts": "31c5419f23d91655b08ec7aec403f4e4cd1a63d39e28f6e42642ea207c2734f8", + "https://deno.land/std@0.201.0/path/mod.ts": "6e1efb0b13121463aedb53ea51dabf5639a3172ab58c89900bbb72b486872532", + "https://deno.land/std@0.201.0/path/normalize.ts": "6ea523e0040979dd7ae2f1be5bf2083941881a252554c0f32566a18b03021955", + "https://deno.land/std@0.201.0/path/parse.ts": "be8de342bb9e1924d78dc4d93c45215c152db7bf738ec32475560424b119b394", + "https://deno.land/std@0.201.0/path/posix.ts": "0a1c1952d132323a88736d03e92bd236f3ed5f9f079e5823fae07c8d978ee61b", + "https://deno.land/std@0.201.0/path/relative.ts": "8bedac226afd360afc45d451a6c29fabceaf32978526bcb38e0c852661f66c61", + "https://deno.land/std@0.201.0/path/resolve.ts": "133161e4949fc97f9ca67988d51376b0f5eef8968a6372325ab84d39d30b80dc", + "https://deno.land/std@0.201.0/path/separator.ts": "40a3e9a4ad10bef23bc2cd6c610291b6c502a06237c2c4cd034a15ca78dedc1f", + "https://deno.land/std@0.201.0/path/to_file_url.ts": "00e6322373dd51ad109956b775e4e72e5f9fa68ce2c6b04e4af2a6eed3825d31", + "https://deno.land/std@0.201.0/path/to_namespaced_path.ts": "1b1db3055c343ab389901adfbda34e82b7386bcd1c744d54f9c1496ee0fd0c3d", + "https://deno.land/std@0.201.0/path/win32.ts": "8b3f80ef7a462511d5e8020ff490edcaa0a0d118f1b1e9da50e2916bdd73f9dd", + "https://deno.land/std@0.201.0/streams/read_all.ts": "ee319772fb0fd28302f97343cc48dfcf948f154fd0d755d8efe65814b70533be", + "https://deno.land/std@0.201.0/streams/reader_from_stream_reader.ts": "fa4971e5615a010e49492c5d1688ca1a4d17472a41e98b498ab89a64ebd7ac73", + "https://deno.land/std@0.201.0/streams/write_all.ts": "aec90152978581ea62d56bb53a5cbf487e6a89c902f87c5969681ffbdf32b998", + "https://deno.land/std@0.205.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", + "https://deno.land/std@0.205.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", + "https://deno.land/std@0.205.0/bytes/copy.ts": "939d89e302a9761dcf1d9c937c7711174ed74c59eef40a1e4569a05c9de88219", + "https://deno.land/std@0.205.0/fmt/colors.ts": "c51c4642678eb690dcf5ffee5918b675bf01a33fba82acf303701ae1a4f8c8d9", + "https://deno.land/std@0.205.0/fs/_util.ts": "fbf57dcdc9f7bc8128d60301eece608246971a7836a3bb1e78da75314f08b978", + "https://deno.land/std@0.205.0/fs/copy.ts": "ca19e4837965914471df38fbd61e16f9e8adfe89f9cffb0c83615c83ea3fc2bf", + "https://deno.land/std@0.205.0/fs/empty_dir.ts": "0b4a2508232446eed232ad1243dd4b0f07ac503a281633ae1324d1528df70964", + "https://deno.land/std@0.205.0/fs/ensure_dir.ts": "dc64c4c75c64721d4e3fb681f1382f803ff3d2868f08563ff923fdd20d071c40", + "https://deno.land/std@0.205.0/fs/ensure_file.ts": "39ac83cc283a20ec2735e956adf5de3e8a3334e0b6820547b5772f71c49ae083", + "https://deno.land/std@0.205.0/fs/ensure_link.ts": "c15e69c48556d78aae31b83e0c0ece04b7b8bc0951412f5b759aceb6fde7f0ac", + "https://deno.land/std@0.205.0/fs/ensure_symlink.ts": "b389c8568f0656d145ac7ece472afe710815cccbb2ebfd19da7978379ae143fe", + "https://deno.land/std@0.205.0/fs/eol.ts": "f1f2eb348a750c34500741987b21d65607f352cf7205f48f4319d417fff42842", + "https://deno.land/std@0.205.0/fs/exists.ts": "cb59a853d84871d87acab0e7936a4dac11282957f8e195102c5a7acb42546bb8", + "https://deno.land/std@0.205.0/fs/expand_glob.ts": "4f98c508fc9e40d6311d2f7fd88aaad05235cc506388c22dda315e095305811d", + "https://deno.land/std@0.205.0/fs/mod.ts": "bc3d0acd488cc7b42627044caf47d72019846d459279544e1934418955ba4898", + "https://deno.land/std@0.205.0/fs/move.ts": "b4f8f46730b40c32ea3c0bc8eb0fd0e8139249a698883c7b3756424cf19785c9", + "https://deno.land/std@0.205.0/fs/walk.ts": "c1e6b43f72a46e89b630140308bd51a4795d416a416b4cfb7cd4bd1e25946723", + "https://deno.land/std@0.205.0/io/buf_writer.ts": "c49d1a3114ad936690847abd0dd2e321e96188546d6e8ae9d22b292b8b59f9f8", + "https://deno.land/std@0.205.0/log/handlers.ts": "3a0883f65567f59a9a88e44c972b24b924621bc28ead91af11d7a6da93c4a64c", + "https://deno.land/std@0.205.0/log/levels.ts": "6309147664e9e008cd6671610f2505c4c95f181f6bae4816a84b33e0aec66859", + "https://deno.land/std@0.205.0/log/logger.ts": "180c50a07c43a556dc5794e913c82946399e89d683201d01c8f0091e1e4ae3fc", + "https://deno.land/std@0.205.0/log/mod.ts": "a274d2129c8d08d4c96e0fb165a595e6c730b5130b437a9ce04364156bfe955a", + "https://deno.land/std@0.205.0/path/_common/assert_path.ts": "061e4d093d4ba5aebceb2c4da3318bfe3289e868570e9d3a8e327d91c2958946", + "https://deno.land/std@0.205.0/path/_common/basename.ts": "0d978ff818f339cd3b1d09dc914881f4d15617432ae519c1b8fdc09ff8d3789a", + "https://deno.land/std@0.205.0/path/_common/common.ts": "9e4233b2eeb50f8b2ae10ecc2108f58583aea6fd3e8907827020282dc2b76143", + "https://deno.land/std@0.205.0/path/_common/constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", + "https://deno.land/std@0.205.0/path/_common/dirname.ts": "2ba7fb4cc9fafb0f38028f434179579ce61d4d9e51296fad22b701c3d3cd7397", + "https://deno.land/std@0.205.0/path/_common/format.ts": "11aa62e316dfbf22c126917f5e03ea5fe2ee707386555a8f513d27ad5756cf96", + "https://deno.land/std@0.205.0/path/_common/from_file_url.ts": "ef1bf3197d2efbf0297a2bdbf3a61d804b18f2bcce45548ae112313ec5be3c22", + "https://deno.land/std@0.205.0/path/_common/glob_to_reg_exp.ts": "5c3c2b79fc2294ec803d102bd9855c451c150021f452046312819fbb6d4dc156", + "https://deno.land/std@0.205.0/path/_common/is_glob.ts": "567dce5c6656bdedfc6b3ee6c0833e1e4db2b8dff6e62148e94a917f289c06ad", + "https://deno.land/std@0.205.0/path/_common/normalize.ts": "2ba7fb4cc9fafb0f38028f434179579ce61d4d9e51296fad22b701c3d3cd7397", + "https://deno.land/std@0.205.0/path/_common/normalize_string.ts": "88c472f28ae49525f9fe82de8c8816d93442d46a30d6bb5063b07ff8a89ff589", + "https://deno.land/std@0.205.0/path/_common/relative.ts": "1af19d787a2a84b8c534cc487424fe101f614982ae4851382c978ab2216186b4", + "https://deno.land/std@0.205.0/path/_common/strip_trailing_separators.ts": "7ffc7c287e97bdeeee31b155828686967f222cd73f9e5780bfe7dfb1b58c6c65", + "https://deno.land/std@0.205.0/path/_common/to_file_url.ts": "a8cdd1633bc9175b7eebd3613266d7c0b6ae0fb0cff24120b6092ac31662f9ae", + "https://deno.land/std@0.205.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", + "https://deno.land/std@0.205.0/path/_os.ts": "30b0c2875f360c9296dbe6b7f2d528f0f9c741cecad2e97f803f5219e91b40a2", + "https://deno.land/std@0.205.0/path/basename.ts": "04bb5ef3e86bba8a35603b8f3b69537112cdd19ce64b77f2522006da2977a5f3", + "https://deno.land/std@0.205.0/path/common.ts": "f4d061c7d0b95a65c2a1a52439edec393e906b40f1caf4604c389fae7caa80f5", + "https://deno.land/std@0.205.0/path/dirname.ts": "88a0a71c21debafc4da7a4cd44fd32e899462df458fbca152390887d41c40361", + "https://deno.land/std@0.205.0/path/extname.ts": "2da4e2490f3b48b7121d19fb4c91681a5e11bd6bd99df4f6f47d7a71bb6ecdf2", + "https://deno.land/std@0.205.0/path/format.ts": "3457530cc85d1b4bab175f9ae73998b34fd456c830d01883169af0681b8894fb", + "https://deno.land/std@0.205.0/path/from_file_url.ts": "e7fa233ea1dff9641e8d566153a24d95010110185a6f418dd2e32320926043f8", + "https://deno.land/std@0.205.0/path/glob.ts": "9c77cf47db1d786e2ebf66670824d03fd84ecc7c807cac24441eb9d5cb6a2986", + "https://deno.land/std@0.205.0/path/is_absolute.ts": "67232b41b860571c5b7537f4954c88d86ae2ba45e883ee37d3dec27b74909d13", + "https://deno.land/std@0.205.0/path/join.ts": "98d3d76c819af4a11a81d5ba2dbb319f1ce9d63fc2b615597d4bcfddd4a89a09", + "https://deno.land/std@0.205.0/path/mod.ts": "2d62a0a8b78a60e8e6f485d881bac6b61d58573b11cf585fb7c8fc50d9b20d80", + "https://deno.land/std@0.205.0/path/normalize.ts": "aa95be9a92c7bd4f9dc0ba51e942a1973e2b93d266cd74f5ca751c136d520b66", + "https://deno.land/std@0.205.0/path/parse.ts": "d87ff0deef3fb495bc0d862278ff96da5a06acf0625ca27769fc52ac0d3d6ece", + "https://deno.land/std@0.205.0/path/posix/_util.ts": "ecf49560fedd7dd376c6156cc5565cad97c1abe9824f4417adebc7acc36c93e5", + "https://deno.land/std@0.205.0/path/posix/basename.ts": "a630aeb8fd8e27356b1823b9dedd505e30085015407caa3396332752f6b8406a", + "https://deno.land/std@0.205.0/path/posix/common.ts": "e781d395dc76f6282e3f7dd8de13194abb8b04a82d109593141abc6e95755c8b", + "https://deno.land/std@0.205.0/path/posix/dirname.ts": "f48c9c42cc670803b505478b7ef162c7cfa9d8e751b59d278b2ec59470531472", + "https://deno.land/std@0.205.0/path/posix/extname.ts": "ee7f6571a9c0a37f9218fbf510c440d1685a7c13082c348d701396cc795e0be0", + "https://deno.land/std@0.205.0/path/posix/format.ts": "b94876f77e61bfe1f147d5ccb46a920636cd3cef8be43df330f0052b03875968", + "https://deno.land/std@0.205.0/path/posix/from_file_url.ts": "b97287a83e6407ac27bdf3ab621db3fccbf1c27df0a1b1f20e1e1b5acf38a379", + "https://deno.land/std@0.205.0/path/posix/glob.ts": "86c3f06d1c98303613c74650961c3e24bdb871cde2a97c3ae7f0f6d4abbef445", + "https://deno.land/std@0.205.0/path/posix/is_absolute.ts": "159900a3422d11069d48395568217eb7fc105ceda2683d03d9b7c0f0769e01b8", + "https://deno.land/std@0.205.0/path/posix/join.ts": "0c0d84bdc344876930126640011ec1b888e6facf74153ffad9ef26813aa2a076", + "https://deno.land/std@0.205.0/path/posix/mod.ts": "6bfa8a42d85345b12dbe8571028ca2c62d460b6ef968125e498602b43b6cf6b6", + "https://deno.land/std@0.205.0/path/posix/normalize.ts": "11de90a94ab7148cc46e5a288f7d732aade1d616bc8c862f5560fa18ff987b4b", + "https://deno.land/std@0.205.0/path/posix/parse.ts": "199208f373dd93a792e9c585352bfc73a6293411bed6da6d3bc4f4ef90b04c8e", + "https://deno.land/std@0.205.0/path/posix/relative.ts": "e2f230608b0f083e6deaa06e063943e5accb3320c28aef8d87528fbb7fe6504c", + "https://deno.land/std@0.205.0/path/posix/resolve.ts": "51579d83159d5c719518c9ae50812a63959bbcb7561d79acbdb2c3682236e285", + "https://deno.land/std@0.205.0/path/posix/separator.ts": "0b6573b5f3269a3164d8edc9cefc33a02dd51003731c561008c8bb60220ebac1", + "https://deno.land/std@0.205.0/path/posix/to_file_url.ts": "08d43ea839ee75e9b8b1538376cfe95911070a655cd312bc9a00f88ef14967b6", + "https://deno.land/std@0.205.0/path/posix/to_namespaced_path.ts": "c9228a0e74fd37e76622cd7b142b8416663a9b87db643302fa0926b5a5c83bdc", + "https://deno.land/std@0.205.0/path/relative.ts": "23d45ede8b7ac464a8299663a43488aad6b561414e7cbbe4790775590db6349c", + "https://deno.land/std@0.205.0/path/resolve.ts": "5b184efc87155a0af9fa305ff68a109e28de9aee81fc3e77cd01380f19daf867", + "https://deno.land/std@0.205.0/path/separator.ts": "40a3e9a4ad10bef23bc2cd6c610291b6c502a06237c2c4cd034a15ca78dedc1f", + "https://deno.land/std@0.205.0/path/to_file_url.ts": "edaafa089e0bce386e1b2d47afe7c72e379ff93b28a5829a5885e4b6c626d864", + "https://deno.land/std@0.205.0/path/to_namespaced_path.ts": "cf8734848aac3c7527d1689d2adf82132b1618eff3cc523a775068847416b22a", + "https://deno.land/std@0.205.0/path/windows/_util.ts": "f32b9444554c8863b9b4814025c700492a2b57ff2369d015360970a1b1099d54", + "https://deno.land/std@0.205.0/path/windows/basename.ts": "8a9dbf7353d50afbc5b221af36c02a72c2d1b2b5b9f7c65bf6a5a2a0baf88ad3", + "https://deno.land/std@0.205.0/path/windows/common.ts": "e781d395dc76f6282e3f7dd8de13194abb8b04a82d109593141abc6e95755c8b", + "https://deno.land/std@0.205.0/path/windows/dirname.ts": "5c2aa541384bf0bd9aca821275d2a8690e8238fa846198ef5c7515ce31a01a94", + "https://deno.land/std@0.205.0/path/windows/extname.ts": "07f4fa1b40d06a827446b3e3bcc8d619c5546b079b8ed0c77040bbef716c7614", + "https://deno.land/std@0.205.0/path/windows/format.ts": "343019130d78f172a5c49fdc7e64686a7faf41553268961e7b6c92a6d6548edf", + "https://deno.land/std@0.205.0/path/windows/from_file_url.ts": "d53335c12b0725893d768be3ac6bf0112cc5b639d2deb0171b35988493b46199", + "https://deno.land/std@0.205.0/path/windows/glob.ts": "0286fb89ecd21db5cbf3b6c79e2b87c889b03f1311e66fb769e6b905d4142332", + "https://deno.land/std@0.205.0/path/windows/is_absolute.ts": "245b56b5f355ede8664bd7f080c910a97e2169972d23075554ae14d73722c53c", + "https://deno.land/std@0.205.0/path/windows/join.ts": "e6600bf88edeeef4e2276e155b8de1d5dec0435fd526ba2dc4d37986b2882f16", + "https://deno.land/std@0.205.0/path/windows/mod.ts": "c3d1a36fbf9f6db1320bcb4fbda8de011d25461be3497105e15cbea1e3726198", + "https://deno.land/std@0.205.0/path/windows/normalize.ts": "9deebbf40c81ef540b7b945d4ccd7a6a2c5a5992f791e6d3377043031e164e69", + "https://deno.land/std@0.205.0/path/windows/parse.ts": "120faf778fe1f22056f33ded069b68e12447668fcfa19540c0129561428d3ae5", + "https://deno.land/std@0.205.0/path/windows/relative.ts": "026855cd2c36c8f28f1df3c6fbd8f2449a2aa21f48797a74700c5d872b86d649", + "https://deno.land/std@0.205.0/path/windows/resolve.ts": "5ff441ab18a2346abadf778121128ee71bda4d0898513d4639a6ca04edca366b", + "https://deno.land/std@0.205.0/path/windows/separator.ts": "ae21f27015f10510ed1ac4a0ba9c4c9c967cbdd9d9e776a3e4967553c397bd5d", + "https://deno.land/std@0.205.0/path/windows/to_file_url.ts": "8e9ea9e1ff364aa06fa72999204229952d0a279dbb876b7b838b2b2fea55cce3", + "https://deno.land/std@0.205.0/path/windows/to_namespaced_path.ts": "e0f4d4a5e77f28a5708c1a33ff24360f35637ba6d8f103d19661255ef7bfd50d", + "https://deno.land/std@0.205.0/semver/_shared.ts": "8547ccf91b36c30fb2a8a17d7081df13f4ae694c4aa44c39799eba69ad0dcb23", + "https://deno.land/std@0.205.0/semver/cmp.ts": "12c30b5888afd9e414defef64f881a478ff9ab11bd329ed6c5844b74eea5c971", + "https://deno.land/std@0.205.0/semver/comparator_format.ts": "329e05d914c064590ded4801fc601bf1c5d0f461c5524b1578e10f180551ef6f", + "https://deno.land/std@0.205.0/semver/comparator_intersects.ts": "61920121a6c1600306dbcf8944c4cc55e45c3a1bdbefe41b79a0884bf02d9e1b", + "https://deno.land/std@0.205.0/semver/comparator_max.ts": "f4cc5f528abd8aab68c66bbead732e3c59102b13a318cd8e4f8a47aa3debec76", + "https://deno.land/std@0.205.0/semver/comparator_min.ts": "eea382428ebf0c50168f780898df8519c88da5a10d1f8babbfebdc89fb75942e", + "https://deno.land/std@0.205.0/semver/compare.ts": "782e03b5107648bebaaebf0e33a9a7d6a0481eb88d2f7be8e857e4abbfdf42c0", + "https://deno.land/std@0.205.0/semver/compare_build.ts": "5d6ebc0106f1ed46e391d6c234e071934ba30938fa818c9cc3da67c7c7494c02", + "https://deno.land/std@0.205.0/semver/constants.ts": "bb0c7652c433c7ec1dad5bf18c7e7e1557efe9ddfd5e70aa6305153e76dc318c", + "https://deno.land/std@0.205.0/semver/difference.ts": "966ef286f0bfde53ebfb74a727c607b05a7fdce623a678794d088166b9b9afdf", + "https://deno.land/std@0.205.0/semver/eq.ts": "6ddb84ce8c95f18e9b7a46d8a63b1e6ca5f0c0f651f1f46f20db6543b390c3f3", + "https://deno.land/std@0.205.0/semver/format.ts": "236cc8b5d2e8031258dcff3ca89e14ba926434d5b789730e2c781db172e76bd9", + "https://deno.land/std@0.205.0/semver/gt.ts": "8529cf2ae1bca95c22801cf38f93620dc802c5dcbc02f863437571b970de3705", + "https://deno.land/std@0.205.0/semver/gte.ts": "b54f7855ac37ff076d6df9a294e944356754171f94f5cb974af782480a9f1fd0", + "https://deno.land/std@0.205.0/semver/gtr.ts": "d2ec1f02ce6a566b7df76a188af7315d802c6069892d460d631a3b0d9e2b1a45", + "https://deno.land/std@0.205.0/semver/increment.ts": "a6e5ac018887244731a4b936743ae14476cc432ac874f1c9848711b4000c5991", + "https://deno.land/std@0.205.0/semver/is_semver.ts": "666f4e1d8e41994150d4326d515046bc5fc72e59cbbd6e756a0b60548dcd00b5", + "https://deno.land/std@0.205.0/semver/is_semver_comparator.ts": "035aa894415ad1c8f50a6b6f52ea49c62d6f3af62b5d6fca9c1f4cb84f1896fd", + "https://deno.land/std@0.205.0/semver/is_semver_range.ts": "6f9b4f1c937a202750cae9444900d8abe4a68cc3bf5bb90f0d49c08cf85308cb", + "https://deno.land/std@0.205.0/semver/lt.ts": "081614b5adbc5bc944649e09af946a90a4b4bdb3d65a67c005183994504f04c2", + "https://deno.land/std@0.205.0/semver/lte.ts": "f8605c17d620bfb3aa57775643e3c560c04f7c20f2e431f64ca5b2ea39e36217", + "https://deno.land/std@0.205.0/semver/ltr.ts": "975e672b5ca8aa67336660653f8c76e1db829c628fb08ea3e815a9a12fa7eb9c", + "https://deno.land/std@0.205.0/semver/max_satisfying.ts": "75406901818cd1127a6332e007e96285474e833d0e40dbbfddc01b08ee6e51f2", + "https://deno.land/std@0.205.0/semver/min_satisfying.ts": "58bd48033a00e63bea0709f78c33c66ea58bce2dbebda0d54d3fdc6db7d0d298", + "https://deno.land/std@0.205.0/semver/mod.ts": "442702e8a57cbf02e68868c46ffe66ecf6efbde58d72cfdfbdaa51ad0c4af513", + "https://deno.land/std@0.205.0/semver/neq.ts": "e91b699681c3b406fc3d661d4eac7aa36cd1cc8bf188f8e3c7b53cc340775b87", + "https://deno.land/std@0.205.0/semver/outside.ts": "1d225fdb42172d946c382e144ce97c402812741741bbe299561aa164cc956ec4", + "https://deno.land/std@0.205.0/semver/parse.ts": "5d24ec0c5f681db1742c31332f6007395c84696c88ff4b58287485ed3f6d8c84", + "https://deno.land/std@0.205.0/semver/parse_comparator.ts": "f07f9be8322b1f61a36b94c3c65a0dc4124958ee54cf744c92ca4028bf156d5e", + "https://deno.land/std@0.205.0/semver/parse_range.ts": "39a18608a8026004b218ef383e7ae624a9e663b82327948c1810f16d875113c2", + "https://deno.land/std@0.205.0/semver/range_format.ts": "3de31fd0b74dd565e052840e73a8e9ee1d9d289ca60b85749167710b978cc078", + "https://deno.land/std@0.205.0/semver/range_intersects.ts": "8672e603df1bb68a02452b634021c4913395f4d16d75c21b578d6f4175a2b2c1", + "https://deno.land/std@0.205.0/semver/range_max.ts": "9c10c65bbc7796347ce6f765a77865cead88870d17481ac78259400a2378af2e", + "https://deno.land/std@0.205.0/semver/range_min.ts": "b7849e70e0b0677b382eddaa822b6690521449a659c5b8ec84cbd438f6e6ca59", + "https://deno.land/std@0.205.0/semver/rcompare.ts": "b8b9f5108d40c64cf50ffe455199aba7ad64995829a17110301ae3f8290374ee", + "https://deno.land/std@0.205.0/semver/rsort.ts": "a9139a1fc37570f9d8b6517032d152cf69143cec89d4342f19174e48f06d8543", + "https://deno.land/std@0.205.0/semver/sort.ts": "c058a5b2c8e866fa8e6ef25c9d228133357caf4c140f129bfc368334fcd0813b", + "https://deno.land/std@0.205.0/semver/test_comparator.ts": "eff5394cb82d133ed18f96fe547de7e7264bf0d25d16cbc6126664aa06ef8f37", + "https://deno.land/std@0.205.0/semver/test_range.ts": "b236c276268e92bbbc65e7c4b4b6b685ea6b4534a71b2525b53093d094f631c6", + "https://deno.land/std@0.205.0/semver/types.ts": "d44f442c2f27dd89bd6695b369e310b80549746f03c38f241fe28a83b33dd429", + "https://deno.land/std@0.205.0/url/_strip.ts": "86f852d266b86e5867f50ac5d453bedea7b7e7a1919669df93d66a0b59b00e5b", + "https://deno.land/std@0.205.0/url/basename.ts": "1257643f9934b65696d8af3ad993b3269d55231e6258ac13fba3d4fe193f30be", + "https://deno.land/std@0.205.0/url/dirname.ts": "65a0c5d4a62a6505404ea992fb73a2201c66e208aa7dfeb76d34f275432eddd0", + "https://deno.land/std@0.205.0/url/extname.ts": "d16f2a3bdccd1ef389a0a066a8275fa59089a04ae98cb69d753e228845d6256f", + "https://deno.land/std@0.205.0/url/join.ts": "fbc3488c641c38832f0c900fcf99cb970164d8e32b84f1427581bb83cf35efeb", + "https://deno.land/std@0.205.0/url/mod.ts": "d4e4db2f85a4a1613d824367b750f36bbd1c0ff791daae2eb74795d292c722bb", + "https://deno.land/std@0.205.0/url/normalize.ts": "5c5803452521a36faec1a91bdb665e1cbdf7ce22bc0482388ad79f229b74cd45", + "https://deno.land/std@0.210.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9", + "https://deno.land/std@0.210.0/assert/_diff.ts": "2c9371f17cf08cbb843c924bc31ca77af422ec4fe162f73d42c651d547573fa8", + "https://deno.land/std@0.210.0/assert/_format.ts": "335ce8e15c65b679ad142dbc9e5e97e5d58602c39dd3c9175cef6c85fe22d6d5", + "https://deno.land/std@0.210.0/assert/assert.ts": "e265ad50a9341f3b40e51dd4cb41ab253d976943ba78a977106950e52e0302ab", + "https://deno.land/std@0.210.0/assert/assert_almost_equals.ts": "a70d637856e1c6128dc733346d32aa73c67058489495116ca85091c39a60c767", + "https://deno.land/std@0.210.0/assert/assert_array_includes.ts": "59d005d8897c1fbcbd5792170833f13a867f6a5ecd5a6b34a3d86b4b430de63c", + "https://deno.land/std@0.210.0/assert/assert_equals.ts": "991b0c2b437a015d623654f758e48bfd931068211a52e8131b397cdf005c595f", + "https://deno.land/std@0.210.0/assert/assert_exists.ts": "f24ecb0d3febad358a6cee235f012551077e07692517ebfe0630a561ba40a703", + "https://deno.land/std@0.210.0/assert/assert_false.ts": "99cf237fe374cabf57072d2fb41b3eaff389029f850fbb96f643c875792f10ce", + "https://deno.land/std@0.210.0/assert/assert_greater.ts": "e0bba9ac76a780573a864ab6eeb8b9fd71435b750bdd36d56a270e22ab9a79d9", + "https://deno.land/std@0.210.0/assert/assert_greater_or_equal.ts": "aea1c7dc868926ba55f1e59f8c3560bb44706b5e3b6b009453ee4064eecf6746", + "https://deno.land/std@0.210.0/assert/assert_instance_of.ts": "7c093d36b1a86666d5a60a8c290c91a51a627153b821a5a4dc40b24cab69f1e7", + "https://deno.land/std@0.210.0/assert/assert_is_error.ts": "a8a758581661edec514c453910bee2f9c91b1346a515c58404963b130d81cd80", + "https://deno.land/std@0.210.0/assert/assert_less.ts": "855aa58e49afa6a9e825f1abcd5947dc789c5878fc1b6f48b8a08115d48da32b", + "https://deno.land/std@0.210.0/assert/assert_less_or_equal.ts": "2ae5246bd0e83da26e5c8e2815d1493252f71f7dc02afb83dc2fc0e0fb0bd894", + "https://deno.land/std@0.210.0/assert/assert_match.ts": "e541a9769cf5726312ff9e15031e2faa2df3c59fbdc5573c8758b1f4668ccc62", + "https://deno.land/std@0.210.0/assert/assert_not_equals.ts": "6bce4b28f3316029c0aef107f8390796798835c382d31c1004160baef0b80db0", + "https://deno.land/std@0.210.0/assert/assert_not_instance_of.ts": "866243fd28bc6665e2ffcc027a9df1d2a69cb644aef1e9b8d1ce34377c6b8a84", + "https://deno.land/std@0.210.0/assert/assert_not_match.ts": "59707eceb0d2b16d6892fbf92ec86f92fd76fcfc55f8b61508299db7d2972cab", + "https://deno.land/std@0.210.0/assert/assert_not_strict_equals.ts": "c84b8e229450e8dfc44b9910d602788313ff7333d67d5bd8528371567b6a3632", + "https://deno.land/std@0.210.0/assert/assert_object_match.ts": "ebeff248d48e5810f787e8742ae4f6b39904f4640edc2f69796596ceb6dbcdf8", + "https://deno.land/std@0.210.0/assert/assert_rejects.ts": "f7e83272d816e1b39710012a0597ed950db2de6b193adcc5e50ddbcd9e177767", + "https://deno.land/std@0.210.0/assert/assert_strict_equals.ts": "4007dabef1c2e9d6f1bb0e948ba7ba99ec9b1bee97ba34d67f7c10e7e5d794f7", + "https://deno.land/std@0.210.0/assert/assert_string_includes.ts": "108a30d9348e5ff7a8b0b7cc836cf0a8cff27d5b33e861b8c56b52cc60b8219a", + "https://deno.land/std@0.210.0/assert/assert_throws.ts": "a8767e6a06e94bac42ca9eebdad5d4e2decbc0c48bc892da7e06aa1fe0b388ba", + "https://deno.land/std@0.210.0/assert/assertion_error.ts": "26ed1863d905005f00785c89750c001c3522c5417e4f58f95044b8143cfc1593", + "https://deno.land/std@0.210.0/assert/equal.ts": "6f81c8a3b12c08bdc3510c8a1293b4db1c083692219d7e3828d2234b448d3d3d", + "https://deno.land/std@0.210.0/assert/fail.ts": "f56fc64f9a141f98c1be5ff1005ddf158db888b7b206510e955bb3fedc69021c", + "https://deno.land/std@0.210.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085", + "https://deno.land/std@0.210.0/assert/unimplemented.ts": "4e3e504792c87c485dbc5f4020489d8806ef697741403af2008dfa7b5a4711e8", + "https://deno.land/std@0.210.0/assert/unreachable.ts": "1af8c99421cc5fb7332454b2b9eca074a4e394895a180bc837750dedcca75338", + "https://deno.land/std@0.210.0/fmt/colors.ts": "2685c524bef9b16b3059a417daf6860c754eb755e19e812762ef5dff62f24481", + "https://deno.land/std@0.210.0/testing/asserts.ts": "605bbd2ef0695e2a4324d810c4ad22e56041d51afb9584fc0b4e81084b14b1d6", + "https://deno.land/x/cliffy@v1.0.0-rc.3/_utils/distance.ts": "02af166952c7c358ac83beae397aa2fbca4ad630aecfcd38d92edb1ea429f004", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/_argument_types.ts": "ab269dacea2030f865a07c2a1e953ec437a64419a05bad1f1ddaab3f99752ead", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/_errors.ts": "12d513ff401020287a344e0830e1297ce1c80c077ecb91e0ac5db44d04a6019c", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/_spread.ts": "0cc6eb70a6df97b5d7d26008822d39f3e8a1232ee0a27f395aa19e68de738245", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/_type_utils.ts": "820004a59bc858e355b11f80e5b3ff1be2c87e66f31f53f253610170795602f0", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/_utils.ts": "3c88ff4f36eba298beb07de08068fdce5e5cb7b9d82c8a319f09596d8279be64", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/command.ts": "ae690745759524082776b7f271f66d5b93933170b1b132f888bd4ac12e9fdd7d", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/_bash_completions_generator.ts": "0c6cb1df4d378d22f001155781d97a9c3519fd10c48187a198fef2cc63b0f84a", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/_fish_completions_generator.ts": "8ba4455f7f76a756e05c3db4ce35332b2951af65a2891f2750b530e06880f495", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/_zsh_completions_generator.ts": "c74525feaf570fe8c14433c30d192622c25603f1fc64694ef69f2a218b41f230", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/bash.ts": "53fe78994eb2359110dc4fa79235bdd86800a38c1d6b1c4fe673c81756f3a0e2", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/complete.ts": "58df61caa5e6220ff2768636a69337923ad9d4b8c1932aeb27165081c4d07d8b", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/completions_command.ts": "506f97f1c6b0b1c3e9956e5069070028b818942310600d4157f64c9b644d3c49", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/fish.ts": "6f0b44b4067740b2931c9ec8863b6619b1d3410fea0c5a3988525a4c53059197", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/mod.ts": "8dda715ca25f3f66d5ec232b76d7c9a96dd4c64b5029feff91738cc0c9586fb1", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/completions/zsh.ts": "f1263c3946975e090d4aadc8681db811d86b52a8ae680f246e03248025885c21", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/deprecated.ts": "bbe6670f1d645b773d04b725b8b8e7814c862c9f1afba460c4d599ffe9d4983c", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/deps.ts": "7473ebd5625bf901becd7ff80afdde3b8a50ae5d1bbfa2f43805cfacf4559d5a", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/help/_help_generator.ts": "532dd4a928baab8b45ce46bb6d20e2ebacfdf3da141ce9d12da796652b1de478", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/help/help_command.ts": "fbbf0c0827dd21d3cec7bcc68c00c20b55f53e2b621032891b9d23ac4191231c", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/help/mod.ts": "8369b292761dcc9ddaf41f2d34bfb06fb6800b69efe80da4fc9752c3b890275b", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/mod.ts": "4b708df1b97152522bee0e3828f06abbbc1d2250168910e5cf454950d7b7404b", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/type.ts": "f588f5d9635b79100044e62aced4b00e510e75b83801f9b089c40c2d98674de2", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types.ts": "bc9ff7459b9cc1079eeb95ff101690a51b4b4afa4af5623340076ee361d08dbb", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/action_list.ts": "33c98d449617c7a563a535c9ceb3741bde9f6363353fd492f90a74570c611c27", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/boolean.ts": "3879ec16092b4b5b1a0acb8675f8c9250c0b8a972e1e4c7adfba8335bd2263ed", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/child_command.ts": "f1fca390c7fbfa7a713ca15ef55c2c7656bcbb394d50e8ef54085bdf6dc22559", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/command.ts": "325d0382e383b725fd8d0ef34ebaeae082c5b76a1f6f2e843fee5dbb1a4fe3ac", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/enum.ts": "8a7cd2898e03089234083bb78c8b1d9b7172254c53c32d4710321638165a48ec", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/file.ts": "8618f16ac9015c8589cbd946b3de1988cc4899b90ea251f3325c93c46745140e", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/integer.ts": "29864725fd48738579d18123d7ee78fed37515e6dc62146c7544c98a82f1778d", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/number.ts": "aeba96e6f470309317a16b308c82e0e4138a830ec79c9877e4622c682012bc1f", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/types/string.ts": "e4dadb08a11795474871c7967beab954593813bb53d9f69ea5f9b734e43dc0e0", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/upgrade/_check_version.ts": "6cfa7dc26bc0dc46381500e8d4b130fb224f4c5456152dada15bd3793edca89b", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/upgrade/mod.ts": "4eff69c489467be17dea27fb95a795396111ee385d170ac0cbcc82f0ea38156c", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/upgrade/provider.ts": "c23253334097dc4b8a147ccdeb3aa44f5a95aa953a6386cb5396f830d95d77a5", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/upgrade/provider/deno_land.ts": "24f8d82e38c51e09be989f30f8ad21f9dd41ac1bb1973b443a13883e8ba06d6d", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/upgrade/provider/github.ts": "99e1b133dd446c6aa79f69e69c46eb8bc1c968dd331c2a7d4064514a317c7b59", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/upgrade/provider/nest_land.ts": "0e07936cea04fa41ac9297f32d87f39152ea873970c54cb5b4934b12fee1885e", + "https://deno.land/x/cliffy@v1.0.0-rc.3/command/upgrade/upgrade_command.ts": "3640a287d914190241ea1e636774b1b4b0e1828fa75119971dd5304784061e05", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/_errors.ts": "f1fbb6bfa009e7950508c9d491cfb4a5551027d9f453389606adb3f2327d048f", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/_utils.ts": "340d3ecab43cde9489187e1f176504d2c58485df6652d1cdd907c0e9c3ce4cc2", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/_validate_flags.ts": "e60b9038c0136ab7e6bd1baf0e993a07bf23f18afbfb6e12c59adf665a622957", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/deprecated.ts": "a72a35de3cc7314e5ebea605ca23d08385b218ef171c32a3f135fb4318b08126", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/flags.ts": "3e62c4a9756b5705aada29e7e94847001356b3a83cd18ad56f4207387a71cf51", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/types.ts": "9e2f75edff2217d972fc711a21676a59dfd88378da2f1ace440ea84c07db1dcc", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/types/boolean.ts": "4c026dd66ec9c5436860dc6d0241427bdb8d8e07337ad71b33c08193428a2236", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/types/integer.ts": "b60d4d590f309ddddf066782d43e4dc3799f0e7d08e5ede7dc62a5ee94b9a6d9", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/types/number.ts": "610936e2d29de7c8c304b65489a75ebae17b005c6122c24e791fbed12444d51e", + "https://deno.land/x/cliffy@v1.0.0-rc.3/flags/types/string.ts": "e89b6a5ce322f65a894edecdc48b44956ec246a1d881f03e97bbda90dd8638c5", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/_layout.ts": "e4a518da28333de95ad791208b9930025987c8b93d5f8b7f30b377b3e26b24e1", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/_utils.ts": "fd48d1a524a42e72aa3ad2eec858a92f5a00728d306c7e8436fba6c34314fee6", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/border.ts": "5c6e9ef5078c6930169aacb668b274bdbb498461c724a7693ac9270fe9d3f5d5", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/cell.ts": "1ffabd43b6b7fddfac9625cb0d015532e144702a9bfed03b358b79375115d06b", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/column.ts": "cf14009f2cb14bad156f879946186c1893acdc6a2fee6845db152edddb6a2714", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/consume_words.ts": "456e75755fdf6966abdefb8b783df2855e2a8bad6ddbdf21bd748547c5fc1d4b", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/deps.ts": "1226c4d39d53edc81d7c3e661fb8a79f2e704937c276c60355cd4947a0fe9153", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/row.ts": "79eb1468aafdd951e5963898cdafe0752d4ab4c519d5f847f3d8ecb8fe857d4f", + "https://deno.land/x/cliffy@v1.0.0-rc.3/table/table.ts": "298671e72e61f1ab18b42ae36643181993f79e29b39dc411fdc6ffd53aa04684", + "https://deno.land/x/dax@0.35.0/mod.ts": "3fc382546bf3c7b90aa458aa144be7c6e8aed3e8c2680289f9c8694d986b7247", + "https://deno.land/x/dax@0.35.0/src/command.ts": "6e7db06015b4ad6decbf59cc5fcb6bd4b03a46276f7e3f3472204c11b2109e0e", + "https://deno.land/x/dax@0.35.0/src/command_handler.ts": "841cee0ce12b19eea6c7fcaeaa40a9e3ef4bf50c36cf02afbe3ab7b41f8571eb", + "https://deno.land/x/dax@0.35.0/src/commands/args.ts": "a138aef24294e3cbf13cef08f4836d018e8dd99fd06ad82e7e7f08ef680bbc1d", + "https://deno.land/x/dax@0.35.0/src/commands/cat.ts": "229dc854f80ea8f1ebd811190fc31e5cf0fe39f76c2de1c27e256cb831237cb0", + "https://deno.land/x/dax@0.35.0/src/commands/cd.ts": "239fee1606881dbc3f778a761d1d4557c21a63063c15ab58883a32e7466b7177", + "https://deno.land/x/dax@0.35.0/src/commands/cp_mv.ts": "58205a82a9404e444c7c5caf98b5dd2b350c668c0b421546a038b76ea8b6a53d", + "https://deno.land/x/dax@0.35.0/src/commands/echo.ts": "247909de5b8ea20218daab419f3aad37b69763052272aca3633fe8e7f83148cd", + "https://deno.land/x/dax@0.35.0/src/commands/exit.ts": "c619e52d744dfa3e8fa954026f1c5302d8be991c775553efc85a0f224b77b6ff", + "https://deno.land/x/dax@0.35.0/src/commands/export.ts": "b6ecad1203cfe606d69da6c16736f31acf211e864e6822484d85cea1cb7d5528", + "https://deno.land/x/dax@0.35.0/src/commands/mkdir.ts": "9381ecdc0e0203d941f89027b6ef2865393bf0a66670bf5f5aaa6a49669244c7", + "https://deno.land/x/dax@0.35.0/src/commands/printenv.ts": "473c39b457cae91e9ca029ad420642b9a410257fb699674660c886c6ebe72ebc", + "https://deno.land/x/dax@0.35.0/src/commands/pwd.ts": "5438aea979027bfa5c64c2a7f1073389735ea986f6abe2174ec21bcb70a2156f", + "https://deno.land/x/dax@0.35.0/src/commands/rm.ts": "d911ff4e2e0b3d3c5d426c7b735313741ad762d9e25a743f101a1b05447eecf8", + "https://deno.land/x/dax@0.35.0/src/commands/sleep.ts": "d1183fa8e31ba85a7b88666e854c7aa6e53e1d4c65e39f20a05d8ea4b82efca3", + "https://deno.land/x/dax@0.35.0/src/commands/test.ts": "a221f82c209fd53756e9c02c475b9d5833284513853e90fdaaf0c1e1d9cfbf30", + "https://deno.land/x/dax@0.35.0/src/commands/touch.ts": "5953dbde8732da47ade9b7554a638ea06a8b67a59842e638fb79f7aebe392650", + "https://deno.land/x/dax@0.35.0/src/commands/unset.ts": "8d4abb29f53c3de0c10ba6d51e3d55bce745160f7430396ede58156e8f2b747c", + "https://deno.land/x/dax@0.35.0/src/common.ts": "c0e809c591400dbadb25197f2819c59fec6b897c94c1aba6a026d5d1eee9cb53", + "https://deno.land/x/dax@0.35.0/src/console/confirm.ts": "d9128d10b77fcc0a8df2784f71c79df68f5c8e00a34b04547b9ba9ddf1c97f96", + "https://deno.land/x/dax@0.35.0/src/console/logger.ts": "e0ab5025915cef70df03681c756e211f25bb2e4331f82ed4256b17ddd9e794ea", + "https://deno.land/x/dax@0.35.0/src/console/mod.ts": "29ae1f8250b74a477e26a3b6ccf647badf5d8f8e2a9e6c4aa0d5df9e3bbbb273", + "https://deno.land/x/dax@0.35.0/src/console/multiSelect.ts": "31003744e58f45f720271bd034d8cfba1055c954ba02d77a2f2eb21e4c1ed55a", + "https://deno.land/x/dax@0.35.0/src/console/progress/format.ts": "15ddbb8051580f88ed499281e12ca6f881f875ab73268d7451d7113ee130bd7d", + "https://deno.land/x/dax@0.35.0/src/console/progress/interval.ts": "80188d980a27c2eb07c31324365118af549641442f0752fe7c3b0c91832e5046", + "https://deno.land/x/dax@0.35.0/src/console/progress/mod.ts": "70080a5d06ab2c58e948225e1e5144458fbc36fbfa61672ac82bb2f6c6991bad", + "https://deno.land/x/dax@0.35.0/src/console/prompt.ts": "78c645b41a7562133d05a10901ae4d682cb22bfaf0b5a21cc8475ca2a946aee1", + "https://deno.land/x/dax@0.35.0/src/console/select.ts": "c9d7124d975bf34d52ea1ac88fd610ed39db8ee6505b9bb53f371cef2f56c6ab", + "https://deno.land/x/dax@0.35.0/src/console/utils.ts": "954c99397dcd2cb3f1ccf50055085f17c9ffb31b25b3c5719776de81e23935f4", + "https://deno.land/x/dax@0.35.0/src/deps.ts": "709fcfef942331cbc97c1faf37dbff8b97c411fac1d142106027ca5bbe64df59", + "https://deno.land/x/dax@0.35.0/src/lib/mod.ts": "c992db99c8259ae3bf2d35666585dfefda84cf7cf4e624e42ea2ac7367900fe0", + "https://deno.land/x/dax@0.35.0/src/lib/rs_lib.generated.js": "381f2f60b458bcb0a6fec1310c2c3b6447339f6995df206b9a4d0c3747ee8c36", + "https://deno.land/x/dax@0.35.0/src/path.ts": "5e1ea6139a975d31d6a5ca62c96c095ff7ddcf5c34ef8b75ab0ea04f87ac579b", + "https://deno.land/x/dax@0.35.0/src/pipes.ts": "3aa984c0d031f4221953e228ba89452a86068a80d2811fddb9c60737cd4ab174", + "https://deno.land/x/dax@0.35.0/src/request.ts": "a2b20859de7a0fbe10584a41de435942ee4726f0b637b1cb55d7f632f4efc74f", + "https://deno.land/x/dax@0.35.0/src/result.ts": "0908b69c16b25c3b258f6b2ada12e124686df5f7ea2b98daa27a83973c7b118c", + "https://deno.land/x/dax@0.35.0/src/shell.ts": "9475a015d5493197f9611b1259c5dd6d27c7c2ab9c3711606cd4b47412568ee1", + "https://deno.land/x/equal@v1.0.2/constants.ts": "162b906e5f7c85614954f4c110d5b8a417245f3e11b22a7c3c24c0c6f8dfe22f", + "https://deno.land/x/equal@v1.0.2/deps.ts": "e4d88aa5e60a16c0e46905f86ba14125f75a6adb92579d8c15da4a40408bc3ef", + "https://deno.land/x/equal@v1.0.2/equal.ts": "bd7ccdbdde365f0abe07c70f46b4788ccae638a8c78bfb383485b62432a4d24d", + "https://deno.land/x/equal@v1.0.2/is.ts": "bb2992b7756bafd1f93934ce56fc23062f5456f474dbf88d3fc90c1819e06d54", + "https://deno.land/x/equal@v1.0.2/mod.ts": "95ad37614f3b54fa61e7fe1b1285b5c102cb15cfa629d7dfe827bc205d995ced", + "https://deno.land/x/equal@v1.0.2/utils.ts": "d3c8e589b28f5c333a6f06c84f044e89ae215f38b3e84712dbc0a03fc17a791d", + "https://deno.land/x/equal@v1.4.0/_constants.ts": "d8c7fe3054dcbc2230250ec7b6f2e901740ef37cae49b1f4def9a44f711c99df", + "https://deno.land/x/equal@v1.4.0/_is.ts": "095827659522b2df9e5cdc528ef0c3bd30a945cad8e5054b241b1b2836fe0ae8", + "https://deno.land/x/equal@v1.4.0/_utils.ts": "d9a1129a137cbf7704b7d1d276957b14496d7b75673067fade7c56c5243a2423", + "https://deno.land/x/equal@v1.4.0/deps.ts": "7e8c8f2f1b54db3b929b9f431dec9d26170864b06dba32a1bae8000b77a77ba4", + "https://deno.land/x/equal@v1.4.0/equal.ts": "65209a1a713835b995dc696c69c616c7cd1629805cc98f03da4033a93bf8857b", + "https://deno.land/x/equal@v1.4.0/mod.ts": "95ad37614f3b54fa61e7fe1b1285b5c102cb15cfa629d7dfe827bc205d995ced", + "https://deno.land/x/equal@v1.5.0/_constants.ts": "d8c7fe3054dcbc2230250ec7b6f2e901740ef37cae49b1f4def9a44f711c99df", + "https://deno.land/x/equal@v1.5.0/_is.ts": "c334165fcf09cbbc01a1a7a7d7c99e4529e530c6f4b5ca222f518e22d98ba6fa", + "https://deno.land/x/equal@v1.5.0/_utils.ts": "d9a1129a137cbf7704b7d1d276957b14496d7b75673067fade7c56c5243a2423", + "https://deno.land/x/equal@v1.5.0/deps.ts": "1af7f13141f3cb4d4427fd9f1c3153017c746d425e2737a4bae271d6b4c6cafc", + "https://deno.land/x/equal@v1.5.0/equal.ts": "515c54e5b1018ccbc4b3d4fd9b8782ae8dfc6523fd7d112f18efea9fcbb1aab3", + "https://deno.land/x/equal@v1.5.0/mod.ts": "713ecd49b992d71b06e9c592704a2dacc407da1efda89b1fdf1271fab0be2387", + "https://deno.land/x/fonction@v1.6.2/deps.ts": "eeb75acaddca83095eefe1276066e538812fcc7f63e450931e388a8146840069", + "https://deno.land/x/fonction@v1.6.2/mod.ts": "d1f0dc0a50ddfb44e80cbc199b92aad8e7f37e5d8e3bb53d4aaf90a2a58c0b7b", + "https://deno.land/x/fonction@v1.6.2/src/F.ts": "47759bcddf83dc42e7227498db1b1ac350d8a10269e4babaf22fb9d2aa8f1d05", + "https://deno.land/x/fonction@v1.6.2/src/K.ts": "8398b4132e5d7801477e7277e4a33777358fc6ec96fa283dac8bf3f818809ac6", + "https://deno.land/x/fonction@v1.6.2/src/N.ts": "a7060bab3b8af5d4c062d4fce3208fd241a0f3dd23eae68706929039bd2d6733", + "https://deno.land/x/fonction@v1.6.2/src/NN.ts": "5eaf063ed232735290376373348c3c400019a18947963609990d25c7bd090686", + "https://deno.land/x/fonction@v1.6.2/src/T.ts": "bb74f0b214d297e0a1cd05dfc8f6648646d1eb3a54adf414e965b2e5033cafbf", + "https://deno.land/x/fonction@v1.6.2/src/_/has.ts": "281ad9dc785d8ea17743ae4586c4f66c10e50b4d68ed316b794d872542665462", + "https://deno.land/x/fonction@v1.6.2/src/_/hasPath.ts": "541af5c1b74ba51eed12001cb84ad859877b0cff3d3d79b2b060bc17ae59bab3", + "https://deno.land/x/fonction@v1.6.2/src/_/mapArray.ts": "ce29ffead7bc0d6a7c9dfa8626c2df1aa0fc0d026a7ca15c62ee4c973d8af3c7", + "https://deno.land/x/fonction@v1.6.2/src/_/mapObject.ts": "cda288486d472a222278f270dafa7f9faf749a861cf5b280080588bf051b30eb", + "https://deno.land/x/fonction@v1.6.2/src/_/prop.ts": "6ebab27a74aa70a786fe12dea260e675b9cac0ca5a10ba1511993d568366b8d6", + "https://deno.land/x/fonction@v1.6.2/src/add.ts": "764c02dea1cc1cbf7aade2cac49f51fcff759cbc54925ee91c20a2c25e3fa13d", + "https://deno.land/x/fonction@v1.6.2/src/and.ts": "ed9aa4a5ceca25016669adf0172282b6303f37e7eba9222f9de02da9974163c0", + "https://deno.land/x/fonction@v1.6.2/src/append.ts": "2d3774bbb163f95ff611d49b7ab914a37fea3849607cc07d3bac44de44973b63", + "https://deno.land/x/fonction@v1.6.2/src/chunk.ts": "25bf0ec3245096c4851b8c5dbd7fae10c1f9eff12675d430f2c5968b12f4f05b", + "https://deno.land/x/fonction@v1.6.2/src/constants/index.ts": "92fe5066a54f85f53136040496bb6e7d5096f7497dddc39f370d613bb77146ca", + "https://deno.land/x/fonction@v1.6.2/src/dec.ts": "76ee78f8cfb6fe8e063152cb8772a0576c533bb2cacc831d174a0db740916597", + "https://deno.land/x/fonction@v1.6.2/src/defaultTo.ts": "b09f59467789848d97f37773cda181386003601ce2dc32a6f2f858203b5248da", + "https://deno.land/x/fonction@v1.6.2/src/divide.ts": "e6253ee5b723d2863a5999437188deb34f3a00b9306465723bf09d94391942ed", + "https://deno.land/x/fonction@v1.6.2/src/endsWith.ts": "0da472d7ae4593b50952e94c7853cf93239d1b9af6e52f2a83a1d5b4adaec826", + "https://deno.land/x/fonction@v1.6.2/src/entries.ts": "c59e640a7478e7ad6f211e239fd10e06491ccd275162d83bfe0f8600217fab9c", + "https://deno.land/x/fonction@v1.6.2/src/first.ts": "756a15493520969f50940aa5b1553ecd63643440aebaa70a9225a91f77fde618", + "https://deno.land/x/fonction@v1.6.2/src/flattenDeep.ts": "bfe578d3a743ff3f22e0456ab69183bdb7adec48bc0f0e98a246948ea25b0bab", + "https://deno.land/x/fonction@v1.6.2/src/gt.ts": "e79d6e34e3a32ef316c360c6aa3cad1db2a18b47f5f68f5462ea0c9f2b58ee84", + "https://deno.land/x/fonction@v1.6.2/src/gte.ts": "7ac9684ea7875f2796f0254d3665b9247788e86ced29277044c3be4aba3a6322", + "https://deno.land/x/fonction@v1.6.2/src/has.ts": "8b828d2bf3d021817188e3fb702d6e337db6c6450c70ff096bed5fb1707bc3bb", + "https://deno.land/x/fonction@v1.6.2/src/hasPath.ts": "ae90ebac887c8fc43bb92764e73519af7d1d6a294a3e8465ccf224d1deb2e214", + "https://deno.land/x/fonction@v1.6.2/src/head.ts": "8427dbd357c46be8b29272d7c63b06ff4bc74e846baca013e7cbf3cf56b630ea", + "https://deno.land/x/fonction@v1.6.2/src/identity.ts": "be151f71d2e8379a740b85f9109e61fe6fa00057690672ed643758fd621d8043", + "https://deno.land/x/fonction@v1.6.2/src/ifElse.ts": "503c53bb3f6fb3c7a5d00730f378fe8898409c4bfc625c034fcf03883196ddc6", + "https://deno.land/x/fonction@v1.6.2/src/ifElseFn.ts": "c8bd4116121a4e6f92513bdb88ede45364b58d39d5bb5394b9b61576695b3f72", + "https://deno.land/x/fonction@v1.6.2/src/inc.ts": "3f7c9cc9a9abbbb481acc6632f2b8aa87d549d8c950c39d49f7eabd77e455317", + "https://deno.land/x/fonction@v1.6.2/src/isArray.ts": "6184ffb79f5072b711d33027dac70a921328248a2f34acb751df9059cb3c1ba9", + "https://deno.land/x/fonction@v1.6.2/src/isBigint.ts": "c13a602dfaa86d5ab4d30420bb25139fcf211268297ed4f618a873e9a0d90285", + "https://deno.land/x/fonction@v1.6.2/src/isBoolean.ts": "53bf4d117e71f7c60f34d423dc0652da6b60fb947fcf6f29989a9c2ba4b03b10", + "https://deno.land/x/fonction@v1.6.2/src/isEmpty.ts": "b17f934352ffdefadd8d914d9e0f4b1f4a3e86a31954742a22e45c7754007a0f", + "https://deno.land/x/fonction@v1.6.2/src/isFunction.ts": "739eef673b55845ae9cbfb43886e4afb28ab9a31d666455145e744741a7600c1", + "https://deno.land/x/fonction@v1.6.2/src/isNaN.ts": "4d68bd7dba2d525b9d09c6572abc75699cc23a592b1935f77ea3c13b775bbc41", + "https://deno.land/x/fonction@v1.6.2/src/isNil.ts": "00e41bc160db3fe1b086b932fa94975603cd0444a780f904624fdd455f79a953", + "https://deno.land/x/fonction@v1.6.2/src/isNill.ts": "fee7ea97dabc46057245dd6a9ffd0401cd8ab13efdbe49f49ef9634ddc95421e", + "https://deno.land/x/fonction@v1.6.2/src/isNull.ts": "1c80e4d029d7b05b6ed86f2ac13c25f2ada7e99058c9bce0ad447775ee9db844", + "https://deno.land/x/fonction@v1.6.2/src/isNumber.ts": "8741b00e3b200304d0ef22f2fc6d79922e71bb0c15a07b4170a8bbb01e6c85c3", + "https://deno.land/x/fonction@v1.6.2/src/isObject.ts": "43e7778e7791cb622e7f03b3563370ea932fc9f52473a5a04450b482828633c2", + "https://deno.land/x/fonction@v1.6.2/src/isPrimitive.ts": "740158f74c53a6e6ea64fd53d46f9e23aa0973aa5557388aa7236298dcd2d507", + "https://deno.land/x/fonction@v1.6.2/src/isString.ts": "2d30a56c2641fdbb8a2b873af956062dcf8960b4977f2ff76a1d6af6149b1227", + "https://deno.land/x/fonction@v1.6.2/src/isSymbol.ts": "0a62227b416122c9660808b55881939a30faeee93aedb450eb6df0447763eb8a", + "https://deno.land/x/fonction@v1.6.2/src/isUndefined.ts": "cb7bcf8637e46d45f9873dd53a4b88a65c13e8ad3b1b42d2f1c9b2cb3befc8a7", + "https://deno.land/x/fonction@v1.6.2/src/keys.ts": "2a6bb05a17349415258316070e3f88d6c3f3bc37fca0d2297241711f235e1ac6", + "https://deno.land/x/fonction@v1.6.2/src/last.ts": "19a76bfb6879bdb4ab026a4fb0995d4553e7cbeacbb8df95a464604a29c7a392", + "https://deno.land/x/fonction@v1.6.2/src/length.ts": "b9ca67331ce9c9dadded1af90fc3ab6234a85a0b451b8a1fba748726226a9d58", + "https://deno.land/x/fonction@v1.6.2/src/lowerCase.ts": "5ee75c8dddb995d59780e9721627612e418f1281b7e01c80f55d9f52a4537d60", + "https://deno.land/x/fonction@v1.6.2/src/lt.ts": "9f2036866227f7b9ce4dfa136f68326f6c9eef6aa8435b231431a7e611c4dcc1", + "https://deno.land/x/fonction@v1.6.2/src/lte.ts": "f63e5738dba7db5cc6d3594604ecac4f6cff0171d13ff6c2e6905fc0528a92e5", + "https://deno.land/x/fonction@v1.6.2/src/map.ts": "be24735b9d040e5e581b8edc6509b002136a8ee5c7f6af96352fd73802d8caad", + "https://deno.land/x/fonction@v1.6.2/src/multiply.ts": "ea9486a08e6c70f7d98a4c72aec9d6b31b5035de17397b3a40efb2b0dafe410d", + "https://deno.land/x/fonction@v1.6.2/src/not.ts": "b593522579b78d54e1b9697d26b5fa251d0ea041e3e9a9918e1776ca2a24055d", + "https://deno.land/x/fonction@v1.6.2/src/or.ts": "16aa8fe37ece0994bde5605299b76c2b16ed4c2a8181ea64a40c137469df03bd", + "https://deno.land/x/fonction@v1.6.2/src/prepend.ts": "ca0958b44477f214eacbd92b88710abc4632f72d8cd1c3aae35c0ef2a4eff1f1", + "https://deno.land/x/fonction@v1.6.2/src/product.ts": "83009952e3670e64484058714828d5f8efa79ebd669e9eb45f21942f6d0c3302", + "https://deno.land/x/fonction@v1.6.2/src/props.ts": "c9cd4f5dbba31da85c560ac658e0a5664bdf4e7a06852ac05ea791633c784d95", + "https://deno.land/x/fonction@v1.6.2/src/replace.ts": "5dd8771626127b9c56a588699de256f4a3b14e8027794c6f368d52bb325bc87b", + "https://deno.land/x/fonction@v1.6.2/src/replaceAll.ts": "5429b6aa9f06b32d8335f2eafd92228445ad36e7f0fdc1581d9c578383270a0d", + "https://deno.land/x/fonction@v1.6.2/src/reverse.ts": "3876b4b7f7d7ccea597a3e2a35643cf8cf526fb82beb5940e05defa09881ddc2", + "https://deno.land/x/fonction@v1.6.2/src/slice.ts": "d99dbbc3d4581c1f48b7aec30f09f95eb7c86b0cebaa9236f85005f4849d6a46", + "https://deno.land/x/fonction@v1.6.2/src/startsWith.ts": "6f391fce2b589b0b8bfe1ec27049011e648eaf8923a8976a8f208c287f35a67e", + "https://deno.land/x/fonction@v1.6.2/src/subtract.ts": "4b6a69964b408bd296e9ac88012ccd508123d7150b2c27b69578fade2e25c49e", + "https://deno.land/x/fonction@v1.6.2/src/sum.ts": "d1a656ff7c6b61f8bf9763e2489435f56050d4694c12b33129d14c456752b6e1", + "https://deno.land/x/fonction@v1.6.2/src/tail.ts": "61939fa965f2dd4f216c4d80f99d37341b72412ad8ee5e77cfff3a5183084cc2", + "https://deno.land/x/fonction@v1.6.2/src/take.ts": "208900d4c19a967fd117f7602e18aaa8305e995444d4787cee22ccaa5e1b16dc", + "https://deno.land/x/fonction@v1.6.2/src/takeLast.ts": "8882210abf19a26791bd214a3cc875f97893fff93c149ac693823b450051184b", + "https://deno.land/x/fonction@v1.6.2/src/trim.ts": "4772b66fa3c4e71f2769fee92fd79443856f0c9393b7f3f4918cc9490132c5d5", + "https://deno.land/x/fonction@v1.6.2/src/trimLeft.ts": "134e4baa19b06c1e577c9274abe6fcb09bbe08192d752cb6c7d2ecaaa42727d6", + "https://deno.land/x/fonction@v1.6.2/src/trimRight.ts": "6355d3bd2983487b505040d6975a8b04a4d3ee746e38d3b72eb6c0f28f872a4e", + "https://deno.land/x/fonction@v1.6.2/src/types/index.ts": "e6540d9e647709ce4496120d73e2ae21f2e54e817cd35b55cf50b407abf9c715", + "https://deno.land/x/fonction@v1.6.2/src/upperCase.ts": "54af3ef1528624b563909555d09b98c139db8fa566ac539b14b3f2b4db47fe68", + "https://deno.land/x/fonction@v1.6.2/src/values.ts": "5349d56e140c175f66103dd64c4a90cceabc21e44db54664892cb82561c5ed02", + "https://deno.land/x/fonction@v1.6.2/src/xor.ts": "75276252b1d9788feadfeedd2e6d61665ada566de386bca2a73c751d22e68ab3", + "https://deno.land/x/fonction@v1.8.0-beta.6/deps.ts": "1d2afdee963dd6b9c8b3e65e00740d88f9b83cb226428957baabd7a76eb9f6b6", + "https://deno.land/x/fonction@v1.8.0-beta.6/mod.ts": "702d27b7156a3cf0a1110e9542fd3df8fe79690de7b0c9c8758e4a857c7fd321", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/F.ts": "47759bcddf83dc42e7227498db1b1ac350d8a10269e4babaf22fb9d2aa8f1d05", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/K.ts": "8398b4132e5d7801477e7277e4a33777358fc6ec96fa283dac8bf3f818809ac6", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/N.ts": "a7060bab3b8af5d4c062d4fce3208fd241a0f3dd23eae68706929039bd2d6733", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/NN.ts": "5eaf063ed232735290376373348c3c400019a18947963609990d25c7bd090686", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/T.ts": "bb74f0b214d297e0a1cd05dfc8f6648646d1eb3a54adf414e965b2e5033cafbf", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/_/constructorName.ts": "e7ab70baf54dd06ca38b19c13b18be8df7f3736298f2cf380679e3654a6b42e9", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/_/has.ts": "281ad9dc785d8ea17743ae4586c4f66c10e50b4d68ed316b794d872542665462", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/_/hasPath.ts": "1d2e6a171cae950291bc065c5087c3fc575abcaa0c5cddc2f6488463bdf7c2bc", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/_/mapArray.ts": "ce29ffead7bc0d6a7c9dfa8626c2df1aa0fc0d026a7ca15c62ee4c973d8af3c7", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/_/mapObject.ts": "cda288486d472a222278f270dafa7f9faf749a861cf5b280080588bf051b30eb", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/_/prop.ts": "7b2229cc13a0adbadc313480e43bc6221acab9b618aba8d88e52ede15c0dcf76", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/add.ts": "764c02dea1cc1cbf7aade2cac49f51fcff759cbc54925ee91c20a2c25e3fa13d", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/advance.ts": "d765a6f36249e9740fa4ed97bf39800a7b99f45effbe05ba5ba662a59697ede0", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/and.ts": "6b3721d1d4fde7a5cd7f7ae51d3da7d0185d12e61a7d1b37699b17e47ffa6598", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/append.ts": "2d3774bbb163f95ff611d49b7ab914a37fea3849607cc07d3bac44de44973b63", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/chunk.ts": "6165855135413d5d76ab3b74ceedf681d47d9ca054349e0bfed1e31c6330dd6f", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/constants/index.ts": "a8e0106c5c2cf0872e6956e140b68beb5f3165dae5ae2a3699dcff0936b6e9ef", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/dec.ts": "76ee78f8cfb6fe8e063152cb8772a0576c533bb2cacc831d174a0db740916597", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/defaultTo.ts": "7f68162bd87800a4a7ce456a7f0d3143a89ebfacf8a1a79e7b68a3a9879100e6", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/divide.ts": "e6253ee5b723d2863a5999437188deb34f3a00b9306465723bf09d94391942ed", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/endsWith.ts": "5680521079e88a3cf51366135e1d08bf9716d893149b471721ee4c97f9bbc76a", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/entries.ts": "c59e640a7478e7ad6f211e239fd10e06491ccd275162d83bfe0f8600217fab9c", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/equal.ts": "c0680f1e044de5d46ec56b27c1197401b0d1ab97077a11d8fb2c206bd4a19623", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/first.ts": "73e2c6ff1a3cd0e125d120a1ed6c2a63b837246c8590d96fc7f0db54b1082717", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/flattenDeep.ts": "bfe578d3a743ff3f22e0456ab69183bdb7adec48bc0f0e98a246948ea25b0bab", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/gt.ts": "e79d6e34e3a32ef316c360c6aa3cad1db2a18b47f5f68f5462ea0c9f2b58ee84", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/gte.ts": "7ac9684ea7875f2796f0254d3665b9247788e86ced29277044c3be4aba3a6322", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/has.ts": "8b828d2bf3d021817188e3fb702d6e337db6c6450c70ff096bed5fb1707bc3bb", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/hasPath.ts": "ae90ebac887c8fc43bb92764e73519af7d1d6a294a3e8465ccf224d1deb2e214", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/head.ts": "8427dbd357c46be8b29272d7c63b06ff4bc74e846baca013e7cbf3cf56b630ea", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/identity.ts": "be151f71d2e8379a740b85f9109e61fe6fa00057690672ed643758fd621d8043", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/ifElse.ts": "7738b867292d8a250192fd4c0498a39b38f229b90dd693f23c9ef6b6f2275412", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/ifElseFn.ts": "53d2050fbb7263d0c5926b8896f9faa6fa34a513ab878e44ecc4cf7560039048", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/inc.ts": "3f7c9cc9a9abbbb481acc6632f2b8aa87d549d8c950c39d49f7eabd77e455317", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isArray.ts": "6184ffb79f5072b711d33027dac70a921328248a2f34acb751df9059cb3c1ba9", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isBigint.ts": "c13a602dfaa86d5ab4d30420bb25139fcf211268297ed4f618a873e9a0d90285", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isBoolean.ts": "53bf4d117e71f7c60f34d423dc0652da6b60fb947fcf6f29989a9c2ba4b03b10", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isEmpty.ts": "78ff3302a2130a015c570bc06e6064cfff54a90c220ea659c44504e83f1e026a", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isFunction.ts": "739eef673b55845ae9cbfb43886e4afb28ab9a31d666455145e744741a7600c1", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isJSONObject.ts": "40e0a0ac5fb2dcb1ec9788a9c48c9069da8bf2114a4a77a756bc6ae40b2a2dad", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isLength0.ts": "0aa94dfdd59519af9c580f4b9bad8d15ba5a5b581c847da94b9ea10b343322d0", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isNaN.ts": "4d68bd7dba2d525b9d09c6572abc75699cc23a592b1935f77ea3c13b775bbc41", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isNil.ts": "93ecaf48435c176933f7601ec9b4e9c9ce422359dd25ad02c84d9635174a87d5", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isNill.ts": "726e5de01605904f67550b4154c80caceb3836604f5fbfd8157b5d841b3dd1a9", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isNull.ts": "1c80e4d029d7b05b6ed86f2ac13c25f2ada7e99058c9bce0ad447775ee9db844", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isNumber.ts": "8741b00e3b200304d0ef22f2fc6d79922e71bb0c15a07b4170a8bbb01e6c85c3", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isObject.ts": "9f70d5e08e0ab67e179161e7604d0f5db6c25278c09c384648a38354ae6e1cba", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isPrimitive.ts": "740158f74c53a6e6ea64fd53d46f9e23aa0973aa5557388aa7236298dcd2d507", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isString.ts": "2d30a56c2641fdbb8a2b873af956062dcf8960b4977f2ff76a1d6af6149b1227", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isSymbol.ts": "0a62227b416122c9660808b55881939a30faeee93aedb450eb6df0447763eb8a", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/isUndefined.ts": "cb7bcf8637e46d45f9873dd53a4b88a65c13e8ad3b1b42d2f1c9b2cb3befc8a7", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/keys.ts": "2a6bb05a17349415258316070e3f88d6c3f3bc37fca0d2297241711f235e1ac6", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/last.ts": "a6e20abbd3ca212fcf14c6eab8566852e78ca88010e99fb6f4c9001182534558", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/length.ts": "b9ca67331ce9c9dadded1af90fc3ab6234a85a0b451b8a1fba748726226a9d58", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/lowerCase.ts": "5ee75c8dddb995d59780e9721627612e418f1281b7e01c80f55d9f52a4537d60", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/lt.ts": "9f2036866227f7b9ce4dfa136f68326f6c9eef6aa8435b231431a7e611c4dcc1", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/lte.ts": "f63e5738dba7db5cc6d3594604ecac4f6cff0171d13ff6c2e6905fc0528a92e5", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/map.ts": "be24735b9d040e5e581b8edc6509b002136a8ee5c7f6af96352fd73802d8caad", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/multiply.ts": "ea9486a08e6c70f7d98a4c72aec9d6b31b5035de17397b3a40efb2b0dafe410d", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/not.ts": "dd1f12661f32fd4a8f059600c30c56188aec254b700fa0c8a04110c27c989af9", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/or.ts": "eb496fb1d5c49d49022250222d79c891770464d8b9071ae6b11e7dacf8df60bf", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/pipe.ts": "603d660d4ff75af86e6f40ed12d514258c5e616cc9249e81f7a17e4f9142b8b7", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/prepend.ts": "ca0958b44477f214eacbd92b88710abc4632f72d8cd1c3aae35c0ef2a4eff1f1", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/product.ts": "bd0516b8f86af9dc93b63d5d785218b3a4dd094806c6290a3eecb9b646760926", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/props.ts": "c9cd4f5dbba31da85c560ac658e0a5664bdf4e7a06852ac05ea791633c784d95", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/replace.ts": "5dd8771626127b9c56a588699de256f4a3b14e8027794c6f368d52bb325bc87b", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/replaceAll.ts": "5429b6aa9f06b32d8335f2eafd92228445ad36e7f0fdc1581d9c578383270a0d", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/reverse.ts": "3876b4b7f7d7ccea597a3e2a35643cf8cf526fb82beb5940e05defa09881ddc2", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/slice.ts": "d99dbbc3d4581c1f48b7aec30f09f95eb7c86b0cebaa9236f85005f4849d6a46", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/startsWith.ts": "44d30ab80d48f85496898dc5fe7db7c6002ef9eb8bbecf3600c7051141675b1f", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/subtract.ts": "4b6a69964b408bd296e9ac88012ccd508123d7150b2c27b69578fade2e25c49e", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/sum.ts": "e8fbe92aab084cee9c5f3f3211ec1f9016ca20e48e21a736592f9653d549a79f", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/tail.ts": "61939fa965f2dd4f216c4d80f99d37341b72412ad8ee5e77cfff3a5183084cc2", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/take.ts": "a86e41b07cd78911690ae6df8b3560f6757201210757a7c6200b0a46fd845087", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/takeLast.ts": "f062a9d1e113089172dac2daeb8589aa4773b7122715950d50af2dcec511afb4", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/trim.ts": "4772b66fa3c4e71f2769fee92fd79443856f0c9393b7f3f4918cc9490132c5d5", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/trimLeft.ts": "134e4baa19b06c1e577c9274abe6fcb09bbe08192d752cb6c7d2ecaaa42727d6", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/trimRight.ts": "6355d3bd2983487b505040d6975a8b04a4d3ee746e38d3b72eb6c0f28f872a4e", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/tryCatch.ts": "a15e7dc18c65ad05ec8c5e66789ad663ce34ec755b932911dbd7dff54dd7a778", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/types/index.ts": "e6540d9e647709ce4496120d73e2ae21f2e54e817cd35b55cf50b407abf9c715", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/uniq.ts": "975a6b2e6a83dcbf9100e119f76032a0a51d69aabd25709230fb83dd9b156b18", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/upperCase.ts": "54af3ef1528624b563909555d09b98c139db8fa566ac539b14b3f2b4db47fe68", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/values.ts": "5349d56e140c175f66103dd64c4a90cceabc21e44db54664892cb82561c5ed02", + "https://deno.land/x/fonction@v1.8.0-beta.6/src/xor.ts": "d68c46286baeaa02817c87054c03ee1899d1c696cb65f5316608130e3c502176", + "https://deno.land/x/fonction@v1.8.0-beta.7/deps.ts": "95b20875155574d182f2d79733def2e2755ba20ae3a31424212695de753e3f09", + "https://deno.land/x/fonction@v1.8.0-beta.7/mod.ts": "394f1ed4096296045187636553d02c63898c9e9aace60ea42582dc0fa17e9fda", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/F.ts": "47759bcddf83dc42e7227498db1b1ac350d8a10269e4babaf22fb9d2aa8f1d05", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/K.ts": "8398b4132e5d7801477e7277e4a33777358fc6ec96fa283dac8bf3f818809ac6", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/N.ts": "a7060bab3b8af5d4c062d4fce3208fd241a0f3dd23eae68706929039bd2d6733", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/NN.ts": "5eaf063ed232735290376373348c3c400019a18947963609990d25c7bd090686", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/T.ts": "bb74f0b214d297e0a1cd05dfc8f6648646d1eb3a54adf414e965b2e5033cafbf", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/_/has.ts": "281ad9dc785d8ea17743ae4586c4f66c10e50b4d68ed316b794d872542665462", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/_/hasPath.ts": "1d2e6a171cae950291bc065c5087c3fc575abcaa0c5cddc2f6488463bdf7c2bc", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/_/mapArray.ts": "ce29ffead7bc0d6a7c9dfa8626c2df1aa0fc0d026a7ca15c62ee4c973d8af3c7", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/_/mapObject.ts": "cda288486d472a222278f270dafa7f9faf749a861cf5b280080588bf051b30eb", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/_/prop.ts": "7b2229cc13a0adbadc313480e43bc6221acab9b618aba8d88e52ede15c0dcf76", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/add.ts": "764c02dea1cc1cbf7aade2cac49f51fcff759cbc54925ee91c20a2c25e3fa13d", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/advance.ts": "d765a6f36249e9740fa4ed97bf39800a7b99f45effbe05ba5ba662a59697ede0", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/and.ts": "6b3721d1d4fde7a5cd7f7ae51d3da7d0185d12e61a7d1b37699b17e47ffa6598", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/append.ts": "2d3774bbb163f95ff611d49b7ab914a37fea3849607cc07d3bac44de44973b63", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/chunk.ts": "6165855135413d5d76ab3b74ceedf681d47d9ca054349e0bfed1e31c6330dd6f", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/constants/index.ts": "a8e0106c5c2cf0872e6956e140b68beb5f3165dae5ae2a3699dcff0936b6e9ef", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/constructorName.ts": "26c1df37b387c699d5e46ce12907cb6779fa6659607798bc596f74882ec03fe3", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/dec.ts": "76ee78f8cfb6fe8e063152cb8772a0576c533bb2cacc831d174a0db740916597", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/defaultTo.ts": "7f68162bd87800a4a7ce456a7f0d3143a89ebfacf8a1a79e7b68a3a9879100e6", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/divide.ts": "e6253ee5b723d2863a5999437188deb34f3a00b9306465723bf09d94391942ed", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/endsWith.ts": "5680521079e88a3cf51366135e1d08bf9716d893149b471721ee4c97f9bbc76a", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/entries.ts": "c59e640a7478e7ad6f211e239fd10e06491ccd275162d83bfe0f8600217fab9c", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/equal.ts": "c0680f1e044de5d46ec56b27c1197401b0d1ab97077a11d8fb2c206bd4a19623", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/first.ts": "73e2c6ff1a3cd0e125d120a1ed6c2a63b837246c8590d96fc7f0db54b1082717", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/flattenDeep.ts": "bfe578d3a743ff3f22e0456ab69183bdb7adec48bc0f0e98a246948ea25b0bab", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/gt.ts": "e79d6e34e3a32ef316c360c6aa3cad1db2a18b47f5f68f5462ea0c9f2b58ee84", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/gte.ts": "7ac9684ea7875f2796f0254d3665b9247788e86ced29277044c3be4aba3a6322", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/has.ts": "8b828d2bf3d021817188e3fb702d6e337db6c6450c70ff096bed5fb1707bc3bb", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/hasPath.ts": "ae90ebac887c8fc43bb92764e73519af7d1d6a294a3e8465ccf224d1deb2e214", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/head.ts": "8427dbd357c46be8b29272d7c63b06ff4bc74e846baca013e7cbf3cf56b630ea", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/identity.ts": "be151f71d2e8379a740b85f9109e61fe6fa00057690672ed643758fd621d8043", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/ifElse.ts": "7738b867292d8a250192fd4c0498a39b38f229b90dd693f23c9ef6b6f2275412", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/ifElseFn.ts": "53d2050fbb7263d0c5926b8896f9faa6fa34a513ab878e44ecc4cf7560039048", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/inc.ts": "3f7c9cc9a9abbbb481acc6632f2b8aa87d549d8c950c39d49f7eabd77e455317", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isArray.ts": "6184ffb79f5072b711d33027dac70a921328248a2f34acb751df9059cb3c1ba9", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isBigint.ts": "c13a602dfaa86d5ab4d30420bb25139fcf211268297ed4f618a873e9a0d90285", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isBoolean.ts": "53bf4d117e71f7c60f34d423dc0652da6b60fb947fcf6f29989a9c2ba4b03b10", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isEmpty.ts": "78ff3302a2130a015c570bc06e6064cfff54a90c220ea659c44504e83f1e026a", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isFunction.ts": "739eef673b55845ae9cbfb43886e4afb28ab9a31d666455145e744741a7600c1", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isJSONObject.ts": "76cc75e71b7cde50beb9486b2443b46e5fde8f00202fd685d0f65605b09ba794", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isLength0.ts": "0aa94dfdd59519af9c580f4b9bad8d15ba5a5b581c847da94b9ea10b343322d0", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isNaN.ts": "4d68bd7dba2d525b9d09c6572abc75699cc23a592b1935f77ea3c13b775bbc41", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isNil.ts": "93ecaf48435c176933f7601ec9b4e9c9ce422359dd25ad02c84d9635174a87d5", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isNill.ts": "726e5de01605904f67550b4154c80caceb3836604f5fbfd8157b5d841b3dd1a9", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isNull.ts": "1c80e4d029d7b05b6ed86f2ac13c25f2ada7e99058c9bce0ad447775ee9db844", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isNumber.ts": "8741b00e3b200304d0ef22f2fc6d79922e71bb0c15a07b4170a8bbb01e6c85c3", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isObject.ts": "9f70d5e08e0ab67e179161e7604d0f5db6c25278c09c384648a38354ae6e1cba", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isPrimitive.ts": "740158f74c53a6e6ea64fd53d46f9e23aa0973aa5557388aa7236298dcd2d507", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isString.ts": "2d30a56c2641fdbb8a2b873af956062dcf8960b4977f2ff76a1d6af6149b1227", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isSymbol.ts": "0a62227b416122c9660808b55881939a30faeee93aedb450eb6df0447763eb8a", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/isUndefined.ts": "cb7bcf8637e46d45f9873dd53a4b88a65c13e8ad3b1b42d2f1c9b2cb3befc8a7", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/keys.ts": "2a6bb05a17349415258316070e3f88d6c3f3bc37fca0d2297241711f235e1ac6", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/last.ts": "a6e20abbd3ca212fcf14c6eab8566852e78ca88010e99fb6f4c9001182534558", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/length.ts": "b9ca67331ce9c9dadded1af90fc3ab6234a85a0b451b8a1fba748726226a9d58", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/lowerCase.ts": "5ee75c8dddb995d59780e9721627612e418f1281b7e01c80f55d9f52a4537d60", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/lt.ts": "9f2036866227f7b9ce4dfa136f68326f6c9eef6aa8435b231431a7e611c4dcc1", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/lte.ts": "f63e5738dba7db5cc6d3594604ecac4f6cff0171d13ff6c2e6905fc0528a92e5", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/map.ts": "be24735b9d040e5e581b8edc6509b002136a8ee5c7f6af96352fd73802d8caad", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/multiply.ts": "ea9486a08e6c70f7d98a4c72aec9d6b31b5035de17397b3a40efb2b0dafe410d", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/not.ts": "dd1f12661f32fd4a8f059600c30c56188aec254b700fa0c8a04110c27c989af9", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/or.ts": "eb496fb1d5c49d49022250222d79c891770464d8b9071ae6b11e7dacf8df60bf", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/pipe.ts": "603d660d4ff75af86e6f40ed12d514258c5e616cc9249e81f7a17e4f9142b8b7", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/prepend.ts": "ca0958b44477f214eacbd92b88710abc4632f72d8cd1c3aae35c0ef2a4eff1f1", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/product.ts": "bd0516b8f86af9dc93b63d5d785218b3a4dd094806c6290a3eecb9b646760926", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/props.ts": "c9cd4f5dbba31da85c560ac658e0a5664bdf4e7a06852ac05ea791633c784d95", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/replace.ts": "5dd8771626127b9c56a588699de256f4a3b14e8027794c6f368d52bb325bc87b", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/replaceAll.ts": "5429b6aa9f06b32d8335f2eafd92228445ad36e7f0fdc1581d9c578383270a0d", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/reverse.ts": "3876b4b7f7d7ccea597a3e2a35643cf8cf526fb82beb5940e05defa09881ddc2", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/slice.ts": "d99dbbc3d4581c1f48b7aec30f09f95eb7c86b0cebaa9236f85005f4849d6a46", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/startsWith.ts": "44d30ab80d48f85496898dc5fe7db7c6002ef9eb8bbecf3600c7051141675b1f", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/subtract.ts": "4b6a69964b408bd296e9ac88012ccd508123d7150b2c27b69578fade2e25c49e", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/sum.ts": "e8fbe92aab084cee9c5f3f3211ec1f9016ca20e48e21a736592f9653d549a79f", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/tail.ts": "61939fa965f2dd4f216c4d80f99d37341b72412ad8ee5e77cfff3a5183084cc2", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/take.ts": "a86e41b07cd78911690ae6df8b3560f6757201210757a7c6200b0a46fd845087", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/takeLast.ts": "f062a9d1e113089172dac2daeb8589aa4773b7122715950d50af2dcec511afb4", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/trim.ts": "4772b66fa3c4e71f2769fee92fd79443856f0c9393b7f3f4918cc9490132c5d5", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/trimLeft.ts": "134e4baa19b06c1e577c9274abe6fcb09bbe08192d752cb6c7d2ecaaa42727d6", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/trimRight.ts": "6355d3bd2983487b505040d6975a8b04a4d3ee746e38d3b72eb6c0f28f872a4e", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/tryCatch.ts": "a15e7dc18c65ad05ec8c5e66789ad663ce34ec755b932911dbd7dff54dd7a778", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/types/index.ts": "e6540d9e647709ce4496120d73e2ae21f2e54e817cd35b55cf50b407abf9c715", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/uniq.ts": "975a6b2e6a83dcbf9100e119f76032a0a51d69aabd25709230fb83dd9b156b18", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/upperCase.ts": "54af3ef1528624b563909555d09b98c139db8fa566ac539b14b3f2b4db47fe68", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/values.ts": "5349d56e140c175f66103dd64c4a90cceabc21e44db54664892cb82561c5ed02", + "https://deno.land/x/fonction@v1.8.0-beta.7/src/xor.ts": "d68c46286baeaa02817c87054c03ee1899d1c696cb65f5316608130e3c502176", + "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/json_hash@0.2.0/canon.ts": "ce7c07abd871cd7f0eb1280ad9f58f6382f02f84a217898ce977cf35ad315877", + "https://deno.land/x/json_hash@0.2.0/crypto.ts": "8738b601a0cf52c0ff58242707e2d5f7f5ff8f7ca4d51d0282ad3b0bb56548cf", + "https://deno.land/x/json_hash@0.2.0/digest.ts": "95e3d996377eebebb960ad2b6e4fdd70d71543378a651c31de75f1e86b637fc7", + "https://deno.land/x/json_hash@0.2.0/hex.ts": "104154a6408c6b5b36ff35361011aeb3047941bd5a652724f5aebeeb89fcf9a8", + "https://deno.land/x/json_hash@0.2.0/merkle.ts": "cf48004b45fdf0412afd48fea0ba8bb16bf78f717a66a5ff505f6400a88c08cf", + "https://deno.land/x/json_hash@0.2.0/mod.ts": "b0fdd79a540d3fc6aa3e0a9a93fe6735b1a174d9ba2aba103e4a18ee4872acad", + "https://deno.land/x/jszip@0.11.0/mod.ts": "5661ddc18e9ac9c07e3c5d2483bc912a7022b6af0d784bb7b05035973e640ba1", + "https://deno.land/x/outdent@v0.8.0/src/index.ts": "6dc3df4108d5d6fedcdb974844d321037ca81eaaa16be6073235ff3268841a22", + "https://deno.land/x/which@0.3.0/mod.ts": "3e10d07953c14e4ddc809742a3447cef14202cdfe9be6678a1dfc8769c4487e6", + "https://deno.land/x/zod@v3.22.4/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea", + "https://deno.land/x/zod@v3.22.4/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", + "https://deno.land/x/zod@v3.22.4/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", + "https://deno.land/x/zod@v3.22.4/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c", + "https://deno.land/x/zod@v3.22.4/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", + "https://deno.land/x/zod@v3.22.4/helpers/parseUtil.ts": "f791e6e65a0340d85ad37d26cd7a3ba67126cd9957eac2b7163162155283abb1", + "https://deno.land/x/zod@v3.22.4/helpers/partialUtil.ts": "998c2fe79795257d4d1cf10361e74492f3b7d852f61057c7c08ac0a46488b7e7", + "https://deno.land/x/zod@v3.22.4/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e", + "https://deno.land/x/zod@v3.22.4/helpers/util.ts": "8baf19b19b2fca8424380367b90364b32503b6b71780269a6e3e67700bb02774", + "https://deno.land/x/zod@v3.22.4/index.ts": "d27aabd973613985574bc31f39e45cb5d856aa122ef094a9f38a463b8ef1a268", + "https://deno.land/x/zod@v3.22.4/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", + "https://deno.land/x/zod@v3.22.4/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", + "https://deno.land/x/zod@v3.22.4/types.ts": "724185522fafe43ee56a52333958764c8c8cd6ad4effa27b42651df873fc151e", + "https://esm.sh/jszip@3.7.1": "f3872a819b015715edb05f81d973b5cd05d3d213d8eb28293ca5471fe7a71773", + "https://esm.sh/v135/jszip@3.7.1/denonext/jszip.mjs": "d31d7f9e0de9c6db3c07ca93f7301b756273d4dccb41b600461978fc313504c9", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/mod.ts": "1b908a97d591f4228e3cce0de52eb1468eb949a78030d8769c0cfa60eecb9e27", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/src/add/deno.ts": "40d4f305fddca9e4607ff3926198c9964be4bf222fda7674428f1b68d0290c78", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/src/constants/deno.ts": "11eaee6a9f2af09d83b6232f7abaf87744865ce39c777f4582d9bb7e77c1a17a", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/src/divide/deno.ts": "82f2bdc831e52acc6c671fc03449b98c132dfed7be719abcd9ba3576da4e2965", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/src/multiply/deno.ts": "da78ef7d36c15ee8adb4dcf86594ae4c9f8eabf67b628342d4f235b07552b154", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/src/subtract/deno.ts": "6d81f96b21a66db7f38fb8a0df2245d9c09ac5acca634be873b993dae5128244", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/src/types/deno.ts": "4aad6c7484e93f6275405bdcc40ba3d4cea5ab315169a30658683fd26b5f5326", + "https://qkmhap62qwfaasqzew54nnbu7ar42u43y356rpojsrtm2ravz4uq.arweave.net/gphwP9qFigBKGSW7xrQ0-CPNU5vG--i9yZRmzUQVzyk/src/utils/deno.ts": "e3e9695a01f7d2cd6ebacaac9110b2def54f1920483a900d644841fe658ee9c4" + } +} diff --git a/ghjk.lock b/ghjk.lock index 8befe310..6f12c422 100644 --- a/ghjk.lock +++ b/ghjk.lock @@ -37,7 +37,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/act.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/act.ts" } }, { @@ -116,7 +116,7 @@ "name": "cpy_bs_ghrel" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/pipi.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/pipi.ts" }, "packageName": "pre-commit" }, @@ -159,7 +159,7 @@ "name": "zstd_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/cpy_bs.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/cpy_bs.ts" } } ], @@ -451,7 +451,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/cargo-binstall.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/cargo-binstall.ts" }, "defaultInst": { "portRef": "cargo_binstall_ghrel@0.1.0" @@ -488,7 +488,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/pnpm.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/pnpm.ts" }, "defaultInst": { "portRef": "pnpm_ghrel@0.1.0" @@ -535,7 +535,7 @@ "name": "git_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/asdf_plugin_git.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/asdf_plugin_git.ts" }, "defaultInst": { "portRef": "asdf_plugin_git@0.1.0" @@ -577,7 +577,7 @@ "name": "tar_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/node.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/node.ts" }, "defaultInst": { "portRef": "node_org@0.1.0" @@ -622,7 +622,7 @@ "name": "zstd_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/cpy_bs.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/cpy_bs.ts" }, "defaultInst": { "portRef": "cpy_bs_ghrel@0.1.0" @@ -636,14 +636,13 @@ "config": { "tasks": { "ha": { - "name": "ha", "installs": [ { "port": { "ty": "denoWorker@v1", "name": "protoc_ghrel", "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/protoc.ts", + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/protoc.ts", "platforms": [ [ "linux", @@ -672,7 +671,7 @@ "ty": "denoWorker@v1", "name": "protoc_ghrel", "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/protoc.ts", + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/protoc.ts", "platforms": [ [ "linux", @@ -698,6 +697,65 @@ "STUFF": "hello" }, "allowedPortDeps": {} + }, + "name": "ha" + }, + "ho": { + "dependsOn": [ + "ha" + ], + "name": "ho", + "env": { + "installs": [], + "env": {}, + "allowedPortDeps": {}, + "dependsOn": [ + "ha" + ] + } + }, + "hum": { + "dependsOn": [ + "ho" + ], + "name": "hum", + "env": { + "installs": [], + "env": {}, + "allowedPortDeps": {}, + "dependsOn": [ + "ho" + ] + } + }, + "hii": { + "dependsOn": [ + "ho" + ], + "name": "hii", + "env": { + "installs": [], + "env": {}, + "allowedPortDeps": {}, + "dependsOn": [ + "ho" + ] + } + }, + "hey": { + "dependsOn": [ + "hii", + "ho" + ], + "name": "hey", + "env": { + "installs": [], + "env": {}, + "allowedPortDeps": {}, + "dependsOn": [ + "hii", + "ho" + ] } } } @@ -741,7 +799,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/act.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/act.ts" } }, { @@ -820,7 +878,7 @@ "name": "cpy_bs_ghrel" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/pipi.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/pipi.ts" }, "packageName": "pre-commit" }, @@ -863,7 +921,7 @@ "name": "zstd_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/cpy_bs.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/cpy_bs.ts" } } ], @@ -1155,7 +1213,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/cargo-binstall.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/cargo-binstall.ts" }, "defaultInst": { "portRef": "cargo_binstall_ghrel@0.1.0" @@ -1192,7 +1250,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/pnpm.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/pnpm.ts" }, "defaultInst": { "portRef": "pnpm_ghrel@0.1.0" @@ -1239,7 +1297,7 @@ "name": "git_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/asdf_plugin_git.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/asdf_plugin_git.ts" }, "defaultInst": { "portRef": "asdf_plugin_git@0.1.0" @@ -1281,7 +1339,7 @@ "name": "tar_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/node.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/node.ts" }, "defaultInst": { "portRef": "node_org@0.1.0" @@ -1326,7 +1384,7 @@ "name": "zstd_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/cpy_bs.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/cpy_bs.ts" }, "defaultInst": { "portRef": "cpy_bs_ghrel@0.1.0" @@ -1336,14 +1394,14 @@ }, "graph": { "all": { - "cpy_bs_ghrel@0.1.0+5e64e9e2": { - "instId": "cpy_bs_ghrel@0.1.0+5e64e9e2", + "cpy_bs_ghrel@0.1.0+720c891b": { + "instId": "cpy_bs_ghrel@0.1.0+720c891b", "portRef": "cpy_bs_ghrel@0.1.0", "config": { "version": "3.12.0", "depConfigs": { "tar_aa": { - "version": "1.34", + "version": "1.35", "depConfigs": {}, "portRef": "tar_aa@0.1.0" }, @@ -1365,17 +1423,17 @@ "portRef": "zstd_aa@0.1.0", "instId": "zstd_aa@0.1.0+993fa832" }, - "tar_aa@0.1.0+d9cbe4e3": { + "tar_aa@0.1.0+59889bd0": { "config": { - "version": "1.34", + "version": "1.35", "depConfigs": {}, "portRef": "tar_aa@0.1.0" }, "portRef": "tar_aa@0.1.0", - "instId": "tar_aa@0.1.0+d9cbe4e3" + "instId": "tar_aa@0.1.0+59889bd0" }, - "pipi_pypi@0.1.0+94a90a13": { - "instId": "pipi_pypi@0.1.0+94a90a13", + "pipi_pypi@0.1.0+05783a87": { + "instId": "pipi_pypi@0.1.0+05783a87", "portRef": "pipi_pypi@0.1.0", "config": { "version": "3.6.0", @@ -1384,7 +1442,7 @@ "version": "3.12.0", "depConfigs": { "tar_aa": { - "version": "1.34", + "version": "1.35", "depConfigs": {}, "portRef": "tar_aa@0.1.0" }, @@ -1401,42 +1459,42 @@ "packageName": "pre-commit" } }, - "act_ghrel@0.1.0+a57a28a0": { - "instId": "act_ghrel@0.1.0+a57a28a0", + "act_ghrel@0.1.0+e9b6de66": { + "instId": "act_ghrel@0.1.0+e9b6de66", "portRef": "act_ghrel@0.1.0", "config": { - "version": "v0.2.56", + "version": "v0.2.57", "depConfigs": {}, "portRef": "act_ghrel@0.1.0" } } }, "user": [ - "act_ghrel@0.1.0+a57a28a0", - "pipi_pypi@0.1.0+94a90a13", - "cpy_bs_ghrel@0.1.0+5e64e9e2" + "act_ghrel@0.1.0+e9b6de66", + "pipi_pypi@0.1.0+05783a87", + "cpy_bs_ghrel@0.1.0+720c891b" ], "indie": [ "zstd_aa@0.1.0+993fa832", - "tar_aa@0.1.0+d9cbe4e3", - "act_ghrel@0.1.0+a57a28a0" + "tar_aa@0.1.0+59889bd0", + "act_ghrel@0.1.0+e9b6de66" ], "allowed": {}, "revDepEdges": { - "tar_aa@0.1.0+d9cbe4e3": [ - "cpy_bs_ghrel@0.1.0+5e64e9e2" + "tar_aa@0.1.0+59889bd0": [ + "cpy_bs_ghrel@0.1.0+720c891b" ], "zstd_aa@0.1.0+993fa832": [ - "cpy_bs_ghrel@0.1.0+5e64e9e2" + "cpy_bs_ghrel@0.1.0+720c891b" ], - "cpy_bs_ghrel@0.1.0+5e64e9e2": [ - "pipi_pypi@0.1.0+94a90a13" + "cpy_bs_ghrel@0.1.0+720c891b": [ + "pipi_pypi@0.1.0+05783a87" ] }, "depEdges": { - "cpy_bs_ghrel@0.1.0+5e64e9e2": [ + "cpy_bs_ghrel@0.1.0+720c891b": [ [ - "tar_aa@0.1.0+d9cbe4e3", + "tar_aa@0.1.0+59889bd0", "tar_aa" ], [ @@ -1444,9 +1502,9 @@ "zstd_aa" ] ], - "pipi_pypi@0.1.0+94a90a13": [ + "pipi_pypi@0.1.0+05783a87": [ [ - "cpy_bs_ghrel@0.1.0+5e64e9e2", + "cpy_bs_ghrel@0.1.0+720c891b", "cpy_bs_ghrel" ] ] @@ -1482,7 +1540,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/act.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/act.ts" }, "pipi_pypi@0.1.0": { "ty": "denoWorker@v1", @@ -1559,7 +1617,7 @@ "name": "cpy_bs_ghrel" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/pipi.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/pipi.ts" }, "cpy_bs_ghrel@0.1.0": { "ty": "denoWorker@v1", @@ -1599,7 +1657,7 @@ "name": "zstd_aa" } ], - "moduleSpecifier": "file:///data/home/ghjk/ports/cpy_bs.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/cpy_bs.ts" }, "tar_aa@0.1.0": { "ty": "ambientAccess@v1", @@ -1663,6 +1721,7 @@ "config": { "tasks": { "ha": { + "name": "ha", "env": { "installs": [ { @@ -1688,7 +1747,7 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/protoc.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/protoc.ts" } } ], @@ -1697,10 +1756,55 @@ "STUFF": "hello" } } + }, + "ho": { + "name": "ho", + "env": { + "installs": [], + "allowedPortDeps": {}, + "env": {} + }, + "dependsOn": [ + "ha" + ] + }, + "hum": { + "name": "hum", + "env": { + "installs": [], + "allowedPortDeps": {}, + "env": {} + }, + "dependsOn": [ + "ho" + ] + }, + "hii": { + "name": "hii", + "env": { + "installs": [], + "allowedPortDeps": {}, + "env": {} + }, + "dependsOn": [ + "ho" + ] + }, + "hey": { + "name": "hey", + "env": { + "installs": [], + "allowedPortDeps": {}, + "env": {} + }, + "dependsOn": [ + "hii", + "ho" + ] } } }, - "installGraphs": { + "portInstallGraphs": { "ha": { "all": { "protoc_ghrel@0.1.0+bc42449f": { @@ -1745,11 +1849,47 @@ ] ], "version": "0.1.0", - "moduleSpecifier": "file:///data/home/ghjk/ports/protoc.ts" + "moduleSpecifier": "file:///home/asdf/repos/ecma/ghjk/ports/protoc.ts" } } + }, + "ho": { + "all": {}, + "user": [], + "indie": [], + "allowed": {}, + "revDepEdges": {}, + "depEdges": {}, + "ports": {} + }, + "hum": { + "all": {}, + "user": [], + "indie": [], + "allowed": {}, + "revDepEdges": {}, + "depEdges": {}, + "ports": {} + }, + "hii": { + "all": {}, + "user": [], + "indie": [], + "allowed": {}, + "revDepEdges": {}, + "depEdges": {}, + "ports": {} + }, + "hey": { + "all": {}, + "user": [], + "indie": [], + "allowed": {}, + "revDepEdges": {}, + "depEdges": {}, + "ports": {} } } } } -} +} \ No newline at end of file diff --git a/ghjk.ts b/ghjk.ts index b5d7b866..906be88d 100644 --- a/ghjk.ts +++ b/ghjk.ts @@ -11,12 +11,44 @@ ghjk ], env: { STUFF: "hello" }, async fn({ $ }) { - await $`echo $STUFFY; + await $`echo $STUFF; protoc --version `; }, }); +ghjk + .task("ho", { + dependsOn: ["ha"], + async fn({ $ }) { + await $`echo ho`; + }, + }); + +ghjk + .task("hum", { + dependsOn: ["ho"], + async fn({ $ }) { + await $`echo ho`; + }, + }); + +ghjk + .task("hii", { + dependsOn: ["ho"], + async fn({ $ }) { + await $`echo haii`; + }, + }); + +ghjk + .task("hey", { + dependsOn: ["hii", "ho"], + async fn({ $ }) { + await $`echo hey`; + }, + }); + // these are just for quick testing ghjk.install(); diff --git a/install/mod.ts b/install/mod.ts index e0d377bc..8ee500e9 100644 --- a/install/mod.ts +++ b/install/mod.ts @@ -197,7 +197,21 @@ export async function install( exePath, `#!/bin/sh GHJK_DIR="$\{GHJK_DIR:-${ghjkDir}}" DENO_DIR="$\{GHJK_DENO_DIR:-${denoCacheDir}}" -${args.ghjkExecDenoExec} run --unstable-kv --unstable-worker-options -A ${lockFlag} ${ +cur_dir=$PWD +while [ "$cur_dir" != "/" ]; do + if [ -f "$cur_dir/ghjk.ts" ]; then + export GHJK_CONFIG="$cur_dir/ghjk.ts" + localLockFile="$cur_dir/ghjk.deno.lock" + fi + # recursively look in parent directory + cur_dir="$(dirname "$cur_dir")" +done +if [ -n "\${localLockFile+x}" ]; then + lockFlag="--lock $localLockFile" +else + lockFlag="${lockFlag}" +fi +${args.ghjkExecDenoExec} run --unstable-kv --unstable-worker-options -A $lockFlag ${ import.meta.resolve("../main.ts") } $*`, { mode: 0o700 }, diff --git a/mod.ts b/mod.ts index 2ed19a44..217ee3d1 100644 --- a/mod.ts +++ b/mod.ts @@ -23,7 +23,11 @@ import * as node from "./ports/node.ts"; import type { SerializedConfig } from "./host/types.ts"; import * as std_modules from "./modules/std.ts"; // tasks -import type { TaskEnv, TasksModuleConfig } from "./modules/tasks/types.ts"; +import type { + TaskDef, + TaskEnv, + TasksModuleConfig, +} from "./modules/tasks/types.ts"; import { dax } from "./deps/common.ts"; const portsConfig: PortsModuleConfigBase = { installs: [] }; @@ -35,9 +39,7 @@ export type TaskFnArgs = { }; export type TaskFn = (args: TaskFnArgs) => Promise; -export type UserTask = { - env: TaskEnv; - desc?: string; +export type UserTask = TaskDef & { fn: TaskFn; // command: cliffy_cmd.Command; }; @@ -62,10 +64,11 @@ function install(...configs: InstallConfigFat[]) { } } -export type TaskConfig = Omit & Partial; +export type TaskConfig = Omit & Partial; function task(name: string, config: TaskConfig) { tasks[name] = { ...config, + name, env: { installs: [], env: {}, @@ -153,7 +156,6 @@ async function getConfig(secureConfig: PortsModuleSecureConfig | undefined) { const cmdJsons2 = await Promise.all( Object.entries(tasks).map( ([name, task]) => [name, { - name, ...task, }], ), diff --git a/modules/ports/mod.ts b/modules/ports/mod.ts index 096dd558..a259447e 100644 --- a/modules/ports/mod.ts +++ b/modules/ports/mod.ts @@ -9,7 +9,7 @@ import type { GhjkCtx, ModuleManifest } from "../types.ts"; import { ModuleBase } from "../mod.ts"; import { buildInstallGraph, - installAndShimEnv, + installFromGraphAndShimEnv, InstallGraph, syncCtxFromGhjk, } from "./sync.ts"; @@ -56,7 +56,7 @@ export class PortsModule extends ModuleBase { .action(async () => { logger().debug("syncing ports"); await using syncCx = await syncCtxFromGhjk(ctx); - void await installAndShimEnv( + void await installFromGraphAndShimEnv( syncCx, ctx.envDir, manifest.graph, diff --git a/modules/ports/sync.ts b/modules/ports/sync.ts index c5a4d8e9..15b344ad 100644 --- a/modules/ports/sync.ts +++ b/modules/ports/sync.ts @@ -61,15 +61,14 @@ export async function syncCtxFromGhjk(ctx: GhjkCtx) { }, }; } -/* - */ -export async function installAndShimEnv( + +export async function installFromGraphAndShimEnv( cx: SyncCtx, envDir: string, graph: InstallGraph, createShellLoaders = true, ) { - const installArts = await installAll( + const installArts = await installFromGraph( cx, graph, ); @@ -166,7 +165,7 @@ export async function installAndShimEnv( }; } -export async function installAll( +export async function installFromGraph( cx: SyncCtx, graph: InstallGraph, ) { diff --git a/modules/tasks/mod.ts b/modules/tasks/mod.ts index 7982aaca..cad42851 100644 --- a/modules/tasks/mod.ts +++ b/modules/tasks/mod.ts @@ -4,7 +4,7 @@ import { cliffy_cmd, std_path } from "../../deps/cli.ts"; import { $, JSONValue } from "../../utils/mod.ts"; import validators from "./types.ts"; -import type { TaskEnvX, TasksModuleConfigX } from "./types.ts"; +import type { TaskDefX, TasksModuleConfigX } from "./types.ts"; import type { GhjkCtx, ModuleManifest } from "../types.ts"; import { ModuleBase } from "../mod.ts"; import logger from "../../utils/logger.ts"; @@ -12,15 +12,19 @@ import { execTaskDeno } from "./deno.ts"; import { buildInstallGraph, - installAndShimEnv, + installFromGraphAndShimEnv, InstallGraph, syncCtxFromGhjk, } from "../ports/sync.ts"; export type TaskModuleManifest = { config: TasksModuleConfigX; - installGraphs: Record; + // taskGraph: TaskGraph; + portInstallGraphs: Record; }; + +type TasksCtx = TaskModuleManifest; + export class TasksModule extends ModuleBase { async processManifest( ctx: GhjkCtx, @@ -35,30 +39,35 @@ export class TasksModule extends ModuleBase { }, }); } + // const taskGraph = buildTaskGraph(res.data); await using syncCx = await syncCtxFromGhjk(ctx); + const portInstallGraphs = Object.fromEntries( + await Promise.all( + Object.entries(res.data.tasks) + .map(async ([name, task]) => [ + name, + await buildInstallGraph( + syncCx, + { + installs: task.env.installs, + allowedDeps: task.env.allowedPortDeps, + }, + ), + ]), + ), + ); return { config: res.data, - installGraphs: Object.fromEntries( - await Promise.all( - Object.entries(res.data.tasks) - .map(async ([name, task]) => [ - name, - await buildInstallGraph( - syncCx, - { - installs: task.env.installs, - allowedDeps: task.env.allowedPortDeps, - }, - ), - ]), - ), - ), + // taskGraph, + portInstallGraphs, }; } + command( - ctx: GhjkCtx, + ghjkCtx: GhjkCtx, manifest: TaskModuleManifest, ) { + const cx = manifest; const commands = Object.entries(manifest.config.tasks).map( ([name, task]) => { let cliffyCmd = new cliffy_cmd.Command() @@ -66,11 +75,10 @@ export class TasksModule extends ModuleBase { .useRawArgs() .action(async (_, ...args) => { await execTask( - ctx, + ghjkCtx, + cx, name, args, - task.env, - manifest.installGraphs[name], ); }); if (task.desc) { @@ -91,6 +99,7 @@ export class TasksModule extends ModuleBase { } return root; } + loadLockEntry( _ctx: GhjkCtx, raw: JSONValue, @@ -105,6 +114,7 @@ export class TasksModule extends ModuleBase { // FIXME: zod this up return rest as TaskModuleManifest; } + genLockEntry( _ctx: GhjkCtx, manifest: TaskModuleManifest, @@ -116,31 +126,119 @@ export class TasksModule extends ModuleBase { } } +export type TaskGraph = ReturnType; + +export function buildTaskGraph( + tasks: Record, +) { + const graph = { + indie: [] as string[], + // edges from dependency to dependent + revDepEdges: {} as Record, + // edges from dependent to dependency + depEdges: {} as Record, + }; + for (const [name, task] of Object.entries(tasks)) { + if (!task.dependsOn) { + graph.indie.push(name); + } else { + for (const depTaskName of task.dependsOn) { + const depTask = tasks[name]; + if (!depTask) { + throw new Error(`specified dependency task doesn't exist`, { + cause: task, + }); + } + const depTaskDeps = graph.depEdges[depTaskName]; + if (depTaskDeps?.includes(name)) { + throw new Error( + `cycling dependency detected between tasks ${name} & ${depTaskName}`, + { + cause: { + task, + depTask, + }, + }, + ); + } + graph.revDepEdges[depTaskName] = [ + ...graph.revDepEdges[depTaskName] ?? [], + name, + ]; + } + graph.depEdges[name] = task.dependsOn; + } + } + return graph; +} + export async function execTask( ctx: GhjkCtx, - name: string, + cx: TasksCtx, + targetName: string, args: string[], - taskEnv: TaskEnvX, - installGraph: InstallGraph, + // taskEnv: TaskEnvX, + // installGraph: InstallGraph, ): Promise { - await using syncCx = await syncCtxFromGhjk(ctx); - const taskEnvDir = await Deno.makeTempDir({ - prefix: `ghjkTaskEnv_${name}_`, - }); - const { env: installEnvs } = await installAndShimEnv( - syncCx, - taskEnvDir, - installGraph, - ); - logger().info("executing", name); - await execTaskDeno( - std_path.toFileUrl(ctx.configPath).href, - name, - args, - { - ...installEnvs, - ...taskEnv.env, - }, + let taskGraph; + { + const taskMap = {} as Record; + const stack = [targetName]; + while (stack.length > 0) { + const taskName = stack.pop()!; + const taskDef = cx.config.tasks[taskName]; + taskMap[taskName] = taskDef; + stack.push(...taskDef.dependsOn ?? []); + } + taskGraph = buildTaskGraph(taskMap); + } + const pendingDepEdges = new Map( + Object.entries(taskGraph.depEdges).map(([key, val]) => [key, val!]), ); - $.removeIfExists(taskEnvDir); + const pendingTasks = [...taskGraph.indie]; + while (pendingTasks.length > 0) { + const taskName = pendingTasks.pop()!; + const taskEnv = cx.config.tasks[taskName]; + + const installGraph = cx.portInstallGraphs[taskName]; + await using syncCx = await syncCtxFromGhjk(ctx); + const taskEnvDir = await Deno.makeTempDir({ + prefix: `ghjkTaskEnv_${taskName}_`, + }); + const { env: installEnvs } = await installFromGraphAndShimEnv( + syncCx, + taskEnvDir, + installGraph, + ); + logger().info("executing", taskName); + await execTaskDeno( + std_path.toFileUrl(ctx.configPath).href, + taskName, + args, + { + ...installEnvs, + ...taskEnv.env.env, + }, + ); + $.removeIfExists(taskEnvDir); + + const dependentTasks = taskGraph.revDepEdges[taskName] ?? []; + const readyTasks = []; + for (const parentId of dependentTasks) { + const parentDeps = pendingDepEdges.get(parentId)!; + + // swap remove from parent pending deps list + const idx = parentDeps.indexOf(taskName); + const last = parentDeps.pop()!; + if (parentDeps.length > idx) { + parentDeps[idx] = last; + } + + if (parentDeps.length == 0) { + // parent is ready for install + readyTasks.push(parentId); + } + } + pendingTasks.push(...readyTasks); + } } diff --git a/modules/tasks/types.ts b/modules/tasks/types.ts index f46be3d2..4b9f4e39 100644 --- a/modules/tasks/types.ts +++ b/modules/tasks/types.ts @@ -3,6 +3,8 @@ import { zod } from "../../deps/common.ts"; import portsValidators from "../ports/types.ts"; +const taskName = zod.string().regex(/[^\s]/); + const taskEnv = zod.object({ installs: portsValidators.installConfigFat.array(), allowedPortDeps: zod.record( @@ -11,12 +13,16 @@ const taskEnv = zod.object({ ), env: zod.record(zod.string(), zod.string()), }); + const taskDef = zod.object({ + name: zod.string(), env: taskEnv, + dependsOn: taskName.array().nullish(), desc: zod.string().nullish(), }); + const tasksModuleConfig = zod.object({ - tasks: zod.record(zod.string(), taskDef), + tasks: zod.record(taskName, taskDef), }); export default { taskDef,