feat: release 2.0.0
This commit is contained in:
1502
.eslint/package-lock.json
generated
1502
.eslint/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "module",
|
|
||||||
"devDependencies": {
|
|
||||||
"eslint": "9.7.0",
|
|
||||||
"eslint-plugin-simple-import-sort": "12.1.1",
|
|
||||||
"typescript-eslint": "7.16.0"
|
|
||||||
},
|
|
||||||
"overrides": {
|
|
||||||
"eslint": "9.7.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
6
.vscode/settings.json
vendored
6
.vscode/settings.json
vendored
@@ -1,14 +1,10 @@
|
|||||||
{
|
{
|
||||||
"deno.enable": true,
|
"deno.enable": true,
|
||||||
"eslint.nodePath": "./.eslint/node_modules",
|
|
||||||
"eslint.options": {
|
|
||||||
"overrideConfigFile": "./.eslint/eslint.config.mjs"
|
|
||||||
},
|
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll.eslint": "explicit"
|
"source.fixAll.eslint": "explicit"
|
||||||
},
|
},
|
||||||
"[typescript]": {
|
"[typescript]": {
|
||||||
"editor.defaultFormatter": "denoland.vscode-deno"
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
13
LICENSE
Normal file
13
LICENSE
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright 2024-2025 Christoffer Rødvik.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the
|
||||||
|
Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
||||||
|
Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
177
containers/mongodb.ts
Normal file
177
containers/mongodb.ts
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
/**
|
||||||
|
* @module
|
||||||
|
*
|
||||||
|
* Provides the ability to quickly run a mongo image in a docker instance.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```ts
|
||||||
|
* import { MongoTestContainer } from "@valkyr/testcontainers/mongo";
|
||||||
|
*
|
||||||
|
* const container = await MongoTestContainer.start("mongo");
|
||||||
|
*
|
||||||
|
* console.log(container.client()); // => MongoClient
|
||||||
|
* console.log(container.url()); // => mongodb://user:password@127.0.0.1:27017
|
||||||
|
*
|
||||||
|
* await container.stop();
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { delay } from "@std/async/delay";
|
||||||
|
import { getAvailablePort } from "@std/net";
|
||||||
|
import { MongoClient, type MongoClientOptions } from "mongodb";
|
||||||
|
|
||||||
|
import type { Container } from "../docker/libraries/container.ts";
|
||||||
|
import { docker } from "../mod.ts";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a simplified utility layer for starting, operating, and shutting down a
|
||||||
|
* postgres docker container.
|
||||||
|
*
|
||||||
|
* Will automatically pull the requested docker image before starting the container.
|
||||||
|
*/
|
||||||
|
export class MongoTestContainer {
|
||||||
|
readonly #connection: MongoConnectionInfo;
|
||||||
|
|
||||||
|
#client?: MongoClient;
|
||||||
|
|
||||||
|
private constructor(
|
||||||
|
readonly container: Container,
|
||||||
|
connection: MongoConnectionInfo,
|
||||||
|
) {
|
||||||
|
this.#connection = connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
| Accessors
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
get client(): MongoClient {
|
||||||
|
if (this.#client === undefined) {
|
||||||
|
this.#client = new MongoClient(this.url(), this.#connection.opts);
|
||||||
|
}
|
||||||
|
return this.#client;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MongoDb container host.
|
||||||
|
*/
|
||||||
|
get host(): string {
|
||||||
|
return this.#connection.host;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MongoDb container port.
|
||||||
|
*/
|
||||||
|
get port(): number {
|
||||||
|
return this.#connection.port;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MongoDb username applied to the container.
|
||||||
|
*/
|
||||||
|
get username(): string {
|
||||||
|
return this.#connection.user;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MongoDb password applied to the container.
|
||||||
|
*/
|
||||||
|
get password(): string {
|
||||||
|
return this.#connection.pass;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute a command in the Mongo container.
|
||||||
|
*/
|
||||||
|
get exec(): typeof this.container.exec {
|
||||||
|
return this.container.exec.bind(this.container);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
| Lifecycle
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start a new Mongo container.
|
||||||
|
*
|
||||||
|
* @param image - Which docker image to run.
|
||||||
|
* @param config - Configuration for the Mongo container.
|
||||||
|
*/
|
||||||
|
static async start(image: string = "mongo:8.0.3", config: Partial<MongoConnectionInfo> = {}): Promise<MongoTestContainer> {
|
||||||
|
const port = getAvailablePort({ preferredPort: config.port });
|
||||||
|
if (port === undefined) {
|
||||||
|
throw new Error("Unable to assign to a random port");
|
||||||
|
}
|
||||||
|
|
||||||
|
await docker.pullImage(image);
|
||||||
|
|
||||||
|
const container = await docker.createContainer({
|
||||||
|
Image: image,
|
||||||
|
Env: [`MONGO_INITDB_ROOT_USERNAME=${config.user ?? "root"}`, `MONGO_INITDB_ROOT_PASSWORD=${config.pass ?? "password"}`],
|
||||||
|
ExposedPorts: {
|
||||||
|
"27017/tcp": {},
|
||||||
|
},
|
||||||
|
HostConfig: {
|
||||||
|
PortBindings: { "27017/tcp": [{ HostIp: "0.0.0.0", HostPort: String(port) }] },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await container.start();
|
||||||
|
await container.waitForLog("ready for start up");
|
||||||
|
|
||||||
|
await delay(250);
|
||||||
|
|
||||||
|
return new MongoTestContainer(container, {
|
||||||
|
host: config.host ?? "127.0.0.1",
|
||||||
|
port,
|
||||||
|
user: config.user ?? "root",
|
||||||
|
pass: config.pass ?? "password",
|
||||||
|
opts: config.opts,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop and remove the Mongo container.
|
||||||
|
*/
|
||||||
|
async stop(): Promise<void> {
|
||||||
|
await this.client.close();
|
||||||
|
await this.container.remove({ force: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
| Utilities
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the connection URL for the Mongo container in the format:
|
||||||
|
* `mongodb://${user}:${pass}@${host}:${port}`.
|
||||||
|
*
|
||||||
|
* Make sure to start the container before accessing this method or it will
|
||||||
|
* throw an error.
|
||||||
|
*/
|
||||||
|
url(): MongoConnectionUrl {
|
||||||
|
return `mongodb://${this.username}:${this.password}@${this.host}:${this.port}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
| Types
|
||||||
|
|--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type MongoConnectionUrl = `mongodb://${string}:${string}@${string}:${number}`;
|
||||||
|
|
||||||
|
export type MongoConnectionInfo = {
|
||||||
|
host: string;
|
||||||
|
port: number;
|
||||||
|
user: string;
|
||||||
|
pass: string;
|
||||||
|
opts?: MongoClientOptions;
|
||||||
|
};
|
||||||
34
deno.json
34
deno.json
@@ -1,34 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "@valkyr/testcontainers",
|
"name": "@valkyr/testcontainers",
|
||||||
"version": "1.1.0",
|
"version": "2.0.0",
|
||||||
"exports": {
|
"exports": {
|
||||||
".": "./mod.ts",
|
".": "./mod.ts",
|
||||||
|
"./mongodb": "./containers/mongodb.ts",
|
||||||
"./postgres": "./containers/postgres.ts"
|
"./postgres": "./containers/postgres.ts"
|
||||||
},
|
},
|
||||||
"imports": {
|
|
||||||
"@std/assert": "jsr:@std/assert@^1.0.0",
|
|
||||||
"@std/async": "jsr:@std/async@1.0.0",
|
|
||||||
"@std/net": "jsr:@std/net@0.224.5",
|
|
||||||
"@std/testing": "jsr:@std/testing@0.225.3",
|
|
||||||
"postgres": "npm:postgres@3.4.4"
|
|
||||||
},
|
|
||||||
"exclude": [
|
|
||||||
".vscode"
|
|
||||||
],
|
|
||||||
"lint": {
|
|
||||||
"rules": {
|
|
||||||
"exclude": [
|
|
||||||
"no-explicit-any",
|
|
||||||
"require-await"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fmt": {
|
|
||||||
"lineWidth": 120
|
|
||||||
},
|
|
||||||
"publish": {
|
"publish": {
|
||||||
"exclude": [
|
"exclude": [
|
||||||
".eslint",
|
|
||||||
".github",
|
".github",
|
||||||
".vscode",
|
".vscode",
|
||||||
".gitignore",
|
".gitignore",
|
||||||
@@ -36,7 +15,10 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"tasks": {
|
"tasks": {
|
||||||
"lint": "deno lint && npx eslint -c .eslint/eslint.config.mjs .",
|
"lint": "npx eslint -c eslint.config.mjs .",
|
||||||
"test": "export ENVIRONMENT=testing && deno test --allow-all --unstable-ffi"
|
"test": "deno test --allow-all",
|
||||||
}
|
"test:publish": "deno publish --dry-run",
|
||||||
|
"ncu": "npx ncu -u -p npm"
|
||||||
|
},
|
||||||
|
"nodeModulesDir": "auto"
|
||||||
}
|
}
|
||||||
|
|||||||
861
deno.lock
generated
861
deno.lock
generated
@@ -1,91 +1,794 @@
|
|||||||
{
|
{
|
||||||
"version": "3",
|
"version": "4",
|
||||||
"packages": {
|
|
||||||
"specifiers": {
|
"specifiers": {
|
||||||
"jsr:@std/assert@^1.0.0": "jsr:@std/assert@1.0.0",
|
"npm:@jsr/std__assert@1.0.12": "1.0.12",
|
||||||
"jsr:@std/async@1.0.0": "jsr:@std/async@1.0.0",
|
"npm:@jsr/std__async@1.0.12": "1.0.12",
|
||||||
"jsr:@std/internal@^1.0.1": "jsr:@std/internal@1.0.1",
|
"npm:@jsr/std__fs@1.0.16": "1.0.16",
|
||||||
"jsr:@std/net@0.224.5": "jsr:@std/net@0.224.5",
|
"npm:@jsr/std__net@1.0.4": "1.0.4",
|
||||||
"jsr:@std/testing@0.225.3": "jsr:@std/testing@0.225.3",
|
"npm:@jsr/std__testing@1.0.11": "1.0.11",
|
||||||
"npm:@types/node": "npm:@types/node@18.16.19",
|
"npm:eslint-plugin-simple-import-sort@12.1.1": "12.1.1_eslint@9.24.0",
|
||||||
"npm:postgres@3.4.4": "npm:postgres@3.4.4"
|
"npm:eslint@9.24.0": "9.24.0",
|
||||||
},
|
"npm:mongodb@6.15.0": "6.15.0",
|
||||||
"jsr": {
|
"npm:postgres@3.4.5": "3.4.5",
|
||||||
"@std/assert@1.0.0": {
|
"npm:prettier@3.5.3": "3.5.3",
|
||||||
"integrity": "0e4f6d873f7f35e2a1e6194ceee39686c996b9e5d134948e644d35d4c4df2008",
|
"npm:typescript-eslint@8.29.1": "8.29.1_eslint@9.24.0_typescript@5.8.3_@typescript-eslint+parser@8.29.1__eslint@9.24.0__typescript@5.8.3"
|
||||||
"dependencies": [
|
|
||||||
"jsr:@std/internal@^1.0.1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"@std/async@1.0.0": {
|
|
||||||
"integrity": "19891d4540cd3af5efd1d7b1f0e92f6ca365e51edc263fbc077334173878e528"
|
|
||||||
},
|
|
||||||
"@std/internal@1.0.1": {
|
|
||||||
"integrity": "6f8c7544d06a11dd256c8d6ba54b11ed870aac6c5aeafff499892662c57673e6"
|
|
||||||
},
|
|
||||||
"@std/net@0.224.5": {
|
|
||||||
"integrity": "9c2ae90a5c3dc7771da5ae5e13b6f7d5d0b316c1954c5d53f2bfc1129fb757ff"
|
|
||||||
},
|
|
||||||
"@std/testing@0.225.3": {
|
|
||||||
"integrity": "348c24d0479d44ab3dbb4f26170f242e19f24051b45935d4a9e7ca0ab7e37780"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"npm": {
|
"npm": {
|
||||||
"@types/node@18.16.19": {
|
"@eslint-community/eslint-utils@4.6.1_eslint@9.24.0": {
|
||||||
"integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==",
|
"integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==",
|
||||||
"dependencies": {}
|
"dependencies": [
|
||||||
|
"eslint",
|
||||||
|
"eslint-visitor-keys@3.4.3"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"postgres@3.4.4": {
|
"@eslint-community/regexpp@4.12.1": {
|
||||||
"integrity": "sha512-IbyN+9KslkqcXa8AO9fxpk97PA4pzewvpi2B3Dwy9u4zpV32QicaEdgmF3eSQUzdRk7ttDHQejNgAEr4XoeH4A==",
|
"integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="
|
||||||
"dependencies": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"remote": {
|
"@eslint/config-array@0.20.0": {
|
||||||
"https://deno.land/std@0.224.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975",
|
"integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
|
||||||
"https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834",
|
"dependencies": [
|
||||||
"https://deno.land/std@0.224.0/assert/assert_almost_equals.ts": "9e416114322012c9a21fa68e187637ce2d7df25bcbdbfd957cd639e65d3cf293",
|
"@eslint/object-schema",
|
||||||
"https://deno.land/std@0.224.0/assert/assert_array_includes.ts": "14c5094471bc8e4a7895fc6aa5a184300d8a1879606574cb1cd715ef36a4a3c7",
|
"debug",
|
||||||
"https://deno.land/std@0.224.0/assert/assert_equals.ts": "3bbca947d85b9d374a108687b1a8ba3785a7850436b5a8930d81f34a32cb8c74",
|
"minimatch@3.1.2"
|
||||||
"https://deno.land/std@0.224.0/assert/assert_exists.ts": "43420cf7f956748ae6ed1230646567b3593cb7a36c5a5327269279c870c5ddfd",
|
]
|
||||||
"https://deno.land/std@0.224.0/assert/assert_false.ts": "3e9be8e33275db00d952e9acb0cd29481a44fa0a4af6d37239ff58d79e8edeff",
|
},
|
||||||
"https://deno.land/std@0.224.0/assert/assert_greater.ts": "5e57b201fd51b64ced36c828e3dfd773412c1a6120c1a5a99066c9b261974e46",
|
"@eslint/config-helpers@0.2.1": {
|
||||||
"https://deno.land/std@0.224.0/assert/assert_greater_or_equal.ts": "9870030f997a08361b6f63400273c2fb1856f5db86c0c3852aab2a002e425c5b",
|
"integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw=="
|
||||||
"https://deno.land/std@0.224.0/assert/assert_instance_of.ts": "e22343c1fdcacfaea8f37784ad782683ec1cf599ae9b1b618954e9c22f376f2c",
|
},
|
||||||
"https://deno.land/std@0.224.0/assert/assert_is_error.ts": "f856b3bc978a7aa6a601f3fec6603491ab6255118afa6baa84b04426dd3cc491",
|
"@eslint/core@0.12.0": {
|
||||||
"https://deno.land/std@0.224.0/assert/assert_less.ts": "60b61e13a1982865a72726a5fa86c24fad7eb27c3c08b13883fb68882b307f68",
|
"integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
|
||||||
"https://deno.land/std@0.224.0/assert/assert_less_or_equal.ts": "d2c84e17faba4afe085e6c9123a63395accf4f9e00150db899c46e67420e0ec3",
|
"dependencies": [
|
||||||
"https://deno.land/std@0.224.0/assert/assert_match.ts": "ace1710dd3b2811c391946954234b5da910c5665aed817943d086d4d4871a8b7",
|
"@types/json-schema"
|
||||||
"https://deno.land/std@0.224.0/assert/assert_not_equals.ts": "78d45dd46133d76ce624b2c6c09392f6110f0df9b73f911d20208a68dee2ef29",
|
]
|
||||||
"https://deno.land/std@0.224.0/assert/assert_not_instance_of.ts": "3434a669b4d20cdcc5359779301a0588f941ffdc2ad68803c31eabdb4890cf7a",
|
},
|
||||||
"https://deno.land/std@0.224.0/assert/assert_not_match.ts": "df30417240aa2d35b1ea44df7e541991348a063d9ee823430e0b58079a72242a",
|
"@eslint/core@0.13.0": {
|
||||||
"https://deno.land/std@0.224.0/assert/assert_not_strict_equals.ts": "37f73880bd672709373d6dc2c5f148691119bed161f3020fff3548a0496f71b8",
|
"integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
|
||||||
"https://deno.land/std@0.224.0/assert/assert_object_match.ts": "411450fd194fdaabc0089ae68f916b545a49d7b7e6d0026e84a54c9e7eed2693",
|
"dependencies": [
|
||||||
"https://deno.land/std@0.224.0/assert/assert_rejects.ts": "4bee1d6d565a5b623146a14668da8f9eb1f026a4f338bbf92b37e43e0aa53c31",
|
"@types/json-schema"
|
||||||
"https://deno.land/std@0.224.0/assert/assert_strict_equals.ts": "b4f45f0fd2e54d9029171876bd0b42dd9ed0efd8f853ab92a3f50127acfa54f5",
|
]
|
||||||
"https://deno.land/std@0.224.0/assert/assert_string_includes.ts": "496b9ecad84deab72c8718735373feb6cdaa071eb91a98206f6f3cb4285e71b8",
|
},
|
||||||
"https://deno.land/std@0.224.0/assert/assert_throws.ts": "c6508b2879d465898dab2798009299867e67c570d7d34c90a2d235e4553906eb",
|
"@eslint/eslintrc@3.3.1": {
|
||||||
"https://deno.land/std@0.224.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917",
|
"integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
|
||||||
"https://deno.land/std@0.224.0/assert/equal.ts": "bddf07bb5fc718e10bb72d5dc2c36c1ce5a8bdd3b647069b6319e07af181ac47",
|
"dependencies": [
|
||||||
"https://deno.land/std@0.224.0/assert/fail.ts": "0eba674ffb47dff083f02ced76d5130460bff1a9a68c6514ebe0cdea4abadb68",
|
"ajv",
|
||||||
"https://deno.land/std@0.224.0/assert/mod.ts": "48b8cb8a619ea0b7958ad7ee9376500fe902284bb36f0e32c598c3dc34cbd6f3",
|
"debug",
|
||||||
"https://deno.land/std@0.224.0/assert/unimplemented.ts": "8c55a5793e9147b4f1ef68cd66496b7d5ba7a9e7ca30c6da070c1a58da723d73",
|
"espree",
|
||||||
"https://deno.land/std@0.224.0/assert/unreachable.ts": "5ae3dbf63ef988615b93eb08d395dda771c96546565f9e521ed86f6510c29e19",
|
"globals",
|
||||||
"https://deno.land/std@0.224.0/async/delay.ts": "f90dd685b97c2f142b8069082993e437b1602b8e2561134827eeb7c12b95c499",
|
"ignore",
|
||||||
"https://deno.land/std@0.224.0/fmt/colors.ts": "508563c0659dd7198ba4bbf87e97f654af3c34eb56ba790260f252ad8012e1c5",
|
"import-fresh",
|
||||||
"https://deno.land/std@0.224.0/internal/diff.ts": "6234a4b493ebe65dc67a18a0eb97ef683626a1166a1906232ce186ae9f65f4e6",
|
"js-yaml",
|
||||||
"https://deno.land/std@0.224.0/internal/format.ts": "0a98ee226fd3d43450245b1844b47003419d34d210fa989900861c79820d21c2",
|
"minimatch@3.1.2",
|
||||||
"https://deno.land/std@0.224.0/internal/mod.ts": "534125398c8e7426183e12dc255bb635d94e06d0f93c60a297723abe69d3b22e",
|
"strip-json-comments"
|
||||||
"https://deno.land/std@0.224.0/testing/_test_suite.ts": "f10a8a6338b60c403f07a76f3f46bdc9f1e1a820c0a1decddeb2949f7a8a0546",
|
]
|
||||||
"https://deno.land/std@0.224.0/testing/bdd.ts": "3e4de4ff6d8f348b5574661cef9501b442046a59079e201b849d0e74120d476b"
|
},
|
||||||
|
"@eslint/js@9.24.0": {
|
||||||
|
"integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA=="
|
||||||
|
},
|
||||||
|
"@eslint/object-schema@2.1.6": {
|
||||||
|
"integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="
|
||||||
|
},
|
||||||
|
"@eslint/plugin-kit@0.2.8": {
|
||||||
|
"integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@eslint/core@0.13.0",
|
||||||
|
"levn"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@humanfs/core@0.19.1": {
|
||||||
|
"integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="
|
||||||
|
},
|
||||||
|
"@humanfs/node@0.16.6": {
|
||||||
|
"integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
|
||||||
|
"dependencies": [
|
||||||
|
"@humanfs/core",
|
||||||
|
"@humanwhocodes/retry@0.3.1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@humanwhocodes/module-importer@1.0.1": {
|
||||||
|
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
|
||||||
|
},
|
||||||
|
"@humanwhocodes/retry@0.3.1": {
|
||||||
|
"integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="
|
||||||
|
},
|
||||||
|
"@humanwhocodes/retry@0.4.2": {
|
||||||
|
"integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ=="
|
||||||
|
},
|
||||||
|
"@jsr/std__assert@1.0.12": {
|
||||||
|
"integrity": "sha512-9pmgjJhuljZCmLlbvsRV6aLT5+YCmhX/yIjaWYav7R7Vup2DOLAgpUOs4JkzRbwn7fdKYrwHT8+DjqPr7Ti8mg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@jsr/std__internal"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@jsr/std__async@1.0.12": {
|
||||||
|
"integrity": "sha512-NUaSOcwMetVeVkIqet2Ammy2A5YxG8ViFxryBbTaC4h7l/cgAkU59U3zF58ek4Y8HZ0Nx5De7qBptPfp62kcgw=="
|
||||||
|
},
|
||||||
|
"@jsr/std__data-structures@1.0.6": {
|
||||||
|
"integrity": "sha512-Ejc8mHLuoYxXLu2zPquvqijdgQ19OV+1DdVDrLc/Cg+tiuGh4Dq2FSnLiPINh4lO1AJ3XcZcYPx38RxdsZcCOg=="
|
||||||
|
},
|
||||||
|
"@jsr/std__fs@1.0.16": {
|
||||||
|
"integrity": "sha512-xnqp8XqEFN+ttkERg9GG+AxyipSd+rfCquLPviF5ZSwN6oCV1TM0ZNoKHXNk/EJAsz28YjF4sfgdJt8XwTV2UQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@jsr/std__path"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@jsr/std__internal@1.0.6": {
|
||||||
|
"integrity": "sha512-1NLtCx9XAL44nt56gzmRSCgXjIthHVzK62fTkJdq8/XsP7eN9a21AZDpc0EGJ/cgvmmOB52UGh46OuKrrY7eVg=="
|
||||||
|
},
|
||||||
|
"@jsr/std__net@1.0.4": {
|
||||||
|
"integrity": "sha512-KJGU8ZpQ70sMW2Zk+wU3wFUkggS9lTLfRFBygnV9VaK8KI+1ggiqtB06rH4a14CNRGM9y46Mn/ZCbQUd4Q45Jg=="
|
||||||
|
},
|
||||||
|
"@jsr/std__path@1.0.8": {
|
||||||
|
"integrity": "sha512-eNBGlh/8ZVkMxtFH4bwIzlAeKoHYk5in4wrBZhi20zMdOiuX4QozP4+19mIXBT2lzHDjhuVLyECbhFeR304iDg=="
|
||||||
|
},
|
||||||
|
"@jsr/std__testing@1.0.11": {
|
||||||
|
"integrity": "sha512-pqQDYtIsaDf+x4NHQ+WiixRJ8DfhgFQRdlHWWssFAzIYwleR+VHLTNlgsgg+AH3mIIR+gTkBmKk21hTkM/WbMQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@jsr/std__assert",
|
||||||
|
"@jsr/std__async",
|
||||||
|
"@jsr/std__data-structures",
|
||||||
|
"@jsr/std__fs",
|
||||||
|
"@jsr/std__internal",
|
||||||
|
"@jsr/std__path"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@mongodb-js/saslprep@1.2.2": {
|
||||||
|
"integrity": "sha512-EB0O3SCSNRUFk66iRCpI+cXzIjdswfCs7F6nOC3RAGJ7xr5YhaicvsRwJ9eyzYvYRlCSDUO/c7g4yNulxKC1WA==",
|
||||||
|
"dependencies": [
|
||||||
|
"sparse-bitfield"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@nodelib/fs.scandir@2.1.5": {
|
||||||
|
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||||
|
"dependencies": [
|
||||||
|
"@nodelib/fs.stat",
|
||||||
|
"run-parallel"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@nodelib/fs.stat@2.0.5": {
|
||||||
|
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
|
||||||
|
},
|
||||||
|
"@nodelib/fs.walk@1.2.8": {
|
||||||
|
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@nodelib/fs.scandir",
|
||||||
|
"fastq"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@types/estree@1.0.7": {
|
||||||
|
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
|
||||||
|
},
|
||||||
|
"@types/json-schema@7.0.15": {
|
||||||
|
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
|
||||||
|
},
|
||||||
|
"@types/webidl-conversions@7.0.3": {
|
||||||
|
"integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
|
||||||
|
},
|
||||||
|
"@types/whatwg-url@11.0.5": {
|
||||||
|
"integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@types/webidl-conversions"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@typescript-eslint/eslint-plugin@8.29.1_@typescript-eslint+parser@8.29.1__eslint@9.24.0__typescript@5.8.3_eslint@9.24.0_typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@eslint-community/regexpp",
|
||||||
|
"@typescript-eslint/parser",
|
||||||
|
"@typescript-eslint/scope-manager",
|
||||||
|
"@typescript-eslint/type-utils",
|
||||||
|
"@typescript-eslint/utils",
|
||||||
|
"@typescript-eslint/visitor-keys",
|
||||||
|
"eslint",
|
||||||
|
"graphemer",
|
||||||
|
"ignore",
|
||||||
|
"natural-compare",
|
||||||
|
"ts-api-utils",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@typescript-eslint/parser@8.29.1_eslint@9.24.0_typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@typescript-eslint/scope-manager",
|
||||||
|
"@typescript-eslint/types",
|
||||||
|
"@typescript-eslint/typescript-estree",
|
||||||
|
"@typescript-eslint/visitor-keys",
|
||||||
|
"debug",
|
||||||
|
"eslint",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@typescript-eslint/scope-manager@8.29.1": {
|
||||||
|
"integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@typescript-eslint/types",
|
||||||
|
"@typescript-eslint/visitor-keys"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@typescript-eslint/type-utils@8.29.1_eslint@9.24.0_typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==",
|
||||||
|
"dependencies": [
|
||||||
|
"@typescript-eslint/typescript-estree",
|
||||||
|
"@typescript-eslint/utils",
|
||||||
|
"debug",
|
||||||
|
"eslint",
|
||||||
|
"ts-api-utils",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@typescript-eslint/types@8.29.1": {
|
||||||
|
"integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ=="
|
||||||
|
},
|
||||||
|
"@typescript-eslint/typescript-estree@8.29.1_typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==",
|
||||||
|
"dependencies": [
|
||||||
|
"@typescript-eslint/types",
|
||||||
|
"@typescript-eslint/visitor-keys",
|
||||||
|
"debug",
|
||||||
|
"fast-glob",
|
||||||
|
"is-glob",
|
||||||
|
"minimatch@9.0.5",
|
||||||
|
"semver",
|
||||||
|
"ts-api-utils",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@typescript-eslint/utils@8.29.1_eslint@9.24.0_typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@eslint-community/eslint-utils",
|
||||||
|
"@typescript-eslint/scope-manager",
|
||||||
|
"@typescript-eslint/types",
|
||||||
|
"@typescript-eslint/typescript-estree",
|
||||||
|
"eslint",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@typescript-eslint/visitor-keys@8.29.1": {
|
||||||
|
"integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@typescript-eslint/types",
|
||||||
|
"eslint-visitor-keys@4.2.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acorn-jsx@5.3.2_acorn@8.14.1": {
|
||||||
|
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"acorn"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acorn@8.14.1": {
|
||||||
|
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="
|
||||||
|
},
|
||||||
|
"ajv@6.12.6": {
|
||||||
|
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
||||||
|
"dependencies": [
|
||||||
|
"fast-deep-equal",
|
||||||
|
"fast-json-stable-stringify",
|
||||||
|
"json-schema-traverse",
|
||||||
|
"uri-js"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ansi-styles@4.3.0": {
|
||||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"dependencies": [
|
||||||
|
"color-convert"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"argparse@2.0.1": {
|
||||||
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
|
||||||
|
},
|
||||||
|
"balanced-match@1.0.2": {
|
||||||
|
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||||
|
},
|
||||||
|
"brace-expansion@1.1.11": {
|
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
|
"dependencies": [
|
||||||
|
"balanced-match",
|
||||||
|
"concat-map"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"brace-expansion@2.0.1": {
|
||||||
|
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||||
|
"dependencies": [
|
||||||
|
"balanced-match"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"braces@3.0.3": {
|
||||||
|
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||||
|
"dependencies": [
|
||||||
|
"fill-range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"bson@6.10.3": {
|
||||||
|
"integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ=="
|
||||||
|
},
|
||||||
|
"callsites@3.1.0": {
|
||||||
|
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
|
||||||
|
},
|
||||||
|
"chalk@4.1.2": {
|
||||||
|
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||||
|
"dependencies": [
|
||||||
|
"ansi-styles",
|
||||||
|
"supports-color"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"color-convert@2.0.1": {
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"color-name"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"color-name@1.1.4": {
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||||
|
},
|
||||||
|
"concat-map@0.0.1": {
|
||||||
|
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
||||||
|
},
|
||||||
|
"cross-spawn@7.0.6": {
|
||||||
|
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
||||||
|
"dependencies": [
|
||||||
|
"path-key",
|
||||||
|
"shebang-command",
|
||||||
|
"which"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"debug@4.4.0": {
|
||||||
|
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
|
||||||
|
"dependencies": [
|
||||||
|
"ms"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"deep-is@0.1.4": {
|
||||||
|
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
|
||||||
|
},
|
||||||
|
"escape-string-regexp@4.0.0": {
|
||||||
|
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
|
||||||
|
},
|
||||||
|
"eslint-plugin-simple-import-sort@12.1.1_eslint@9.24.0": {
|
||||||
|
"integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==",
|
||||||
|
"dependencies": [
|
||||||
|
"eslint"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"eslint-scope@8.3.0": {
|
||||||
|
"integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"esrecurse",
|
||||||
|
"estraverse"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"eslint-visitor-keys@3.4.3": {
|
||||||
|
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
|
||||||
|
},
|
||||||
|
"eslint-visitor-keys@4.2.0": {
|
||||||
|
"integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="
|
||||||
|
},
|
||||||
|
"eslint@9.24.0": {
|
||||||
|
"integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@eslint-community/eslint-utils",
|
||||||
|
"@eslint-community/regexpp",
|
||||||
|
"@eslint/config-array",
|
||||||
|
"@eslint/config-helpers",
|
||||||
|
"@eslint/core@0.12.0",
|
||||||
|
"@eslint/eslintrc",
|
||||||
|
"@eslint/js",
|
||||||
|
"@eslint/plugin-kit",
|
||||||
|
"@humanfs/node",
|
||||||
|
"@humanwhocodes/module-importer",
|
||||||
|
"@humanwhocodes/retry@0.4.2",
|
||||||
|
"@types/estree",
|
||||||
|
"@types/json-schema",
|
||||||
|
"ajv",
|
||||||
|
"chalk",
|
||||||
|
"cross-spawn",
|
||||||
|
"debug",
|
||||||
|
"escape-string-regexp",
|
||||||
|
"eslint-scope",
|
||||||
|
"eslint-visitor-keys@4.2.0",
|
||||||
|
"espree",
|
||||||
|
"esquery",
|
||||||
|
"esutils",
|
||||||
|
"fast-deep-equal",
|
||||||
|
"file-entry-cache",
|
||||||
|
"find-up",
|
||||||
|
"glob-parent@6.0.2",
|
||||||
|
"ignore",
|
||||||
|
"imurmurhash",
|
||||||
|
"is-glob",
|
||||||
|
"json-stable-stringify-without-jsonify",
|
||||||
|
"lodash.merge",
|
||||||
|
"minimatch@3.1.2",
|
||||||
|
"natural-compare",
|
||||||
|
"optionator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"espree@10.3.0_acorn@8.14.1": {
|
||||||
|
"integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
|
||||||
|
"dependencies": [
|
||||||
|
"acorn",
|
||||||
|
"acorn-jsx",
|
||||||
|
"eslint-visitor-keys@4.2.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"esquery@1.6.0": {
|
||||||
|
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
|
||||||
|
"dependencies": [
|
||||||
|
"estraverse"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"esrecurse@4.3.0": {
|
||||||
|
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
|
||||||
|
"dependencies": [
|
||||||
|
"estraverse"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"estraverse@5.3.0": {
|
||||||
|
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
|
||||||
|
},
|
||||||
|
"esutils@2.0.3": {
|
||||||
|
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
|
||||||
|
},
|
||||||
|
"fast-deep-equal@3.1.3": {
|
||||||
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||||
|
},
|
||||||
|
"fast-glob@3.3.3": {
|
||||||
|
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@nodelib/fs.stat",
|
||||||
|
"@nodelib/fs.walk",
|
||||||
|
"glob-parent@5.1.2",
|
||||||
|
"merge2",
|
||||||
|
"micromatch"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fast-json-stable-stringify@2.1.0": {
|
||||||
|
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||||
|
},
|
||||||
|
"fast-levenshtein@2.0.6": {
|
||||||
|
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
|
||||||
|
},
|
||||||
|
"fastq@1.19.1": {
|
||||||
|
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"reusify"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"file-entry-cache@8.0.0": {
|
||||||
|
"integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"flat-cache"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fill-range@7.1.1": {
|
||||||
|
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||||
|
"dependencies": [
|
||||||
|
"to-regex-range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"find-up@5.0.0": {
|
||||||
|
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
||||||
|
"dependencies": [
|
||||||
|
"locate-path",
|
||||||
|
"path-exists"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"flat-cache@4.0.1": {
|
||||||
|
"integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
|
||||||
|
"dependencies": [
|
||||||
|
"flatted",
|
||||||
|
"keyv"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"flatted@3.3.3": {
|
||||||
|
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="
|
||||||
|
},
|
||||||
|
"glob-parent@5.1.2": {
|
||||||
|
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||||
|
"dependencies": [
|
||||||
|
"is-glob"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"glob-parent@6.0.2": {
|
||||||
|
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||||
|
"dependencies": [
|
||||||
|
"is-glob"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"globals@14.0.0": {
|
||||||
|
"integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="
|
||||||
|
},
|
||||||
|
"graphemer@1.4.0": {
|
||||||
|
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
|
||||||
|
},
|
||||||
|
"has-flag@4.0.0": {
|
||||||
|
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||||
|
},
|
||||||
|
"ignore@5.3.2": {
|
||||||
|
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="
|
||||||
|
},
|
||||||
|
"import-fresh@3.3.1": {
|
||||||
|
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"parent-module",
|
||||||
|
"resolve-from"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"imurmurhash@0.1.4": {
|
||||||
|
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
|
||||||
|
},
|
||||||
|
"is-extglob@2.1.1": {
|
||||||
|
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
|
||||||
|
},
|
||||||
|
"is-glob@4.0.3": {
|
||||||
|
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||||
|
"dependencies": [
|
||||||
|
"is-extglob"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"is-number@7.0.0": {
|
||||||
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
|
||||||
|
},
|
||||||
|
"isexe@2.0.0": {
|
||||||
|
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
|
||||||
|
},
|
||||||
|
"js-yaml@4.1.0": {
|
||||||
|
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
||||||
|
"dependencies": [
|
||||||
|
"argparse"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"json-buffer@3.0.1": {
|
||||||
|
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
|
||||||
|
},
|
||||||
|
"json-schema-traverse@0.4.1": {
|
||||||
|
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||||
|
},
|
||||||
|
"json-stable-stringify-without-jsonify@1.0.1": {
|
||||||
|
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
|
||||||
|
},
|
||||||
|
"keyv@4.5.4": {
|
||||||
|
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
|
||||||
|
"dependencies": [
|
||||||
|
"json-buffer"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"levn@0.4.1": {
|
||||||
|
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"prelude-ls",
|
||||||
|
"type-check"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locate-path@6.0.0": {
|
||||||
|
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
||||||
|
"dependencies": [
|
||||||
|
"p-locate"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lodash.merge@4.6.2": {
|
||||||
|
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
|
||||||
|
},
|
||||||
|
"memory-pager@1.5.0": {
|
||||||
|
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
|
||||||
|
},
|
||||||
|
"merge2@1.4.1": {
|
||||||
|
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
|
||||||
|
},
|
||||||
|
"micromatch@4.0.8": {
|
||||||
|
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||||
|
"dependencies": [
|
||||||
|
"braces",
|
||||||
|
"picomatch"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"minimatch@3.1.2": {
|
||||||
|
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||||
|
"dependencies": [
|
||||||
|
"brace-expansion@1.1.11"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"minimatch@9.0.5": {
|
||||||
|
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
|
||||||
|
"dependencies": [
|
||||||
|
"brace-expansion@2.0.1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mongodb-connection-string-url@3.0.2": {
|
||||||
|
"integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@types/whatwg-url",
|
||||||
|
"whatwg-url"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mongodb@6.15.0": {
|
||||||
|
"integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@mongodb-js/saslprep",
|
||||||
|
"bson",
|
||||||
|
"mongodb-connection-string-url"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ms@2.1.3": {
|
||||||
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||||
|
},
|
||||||
|
"natural-compare@1.4.0": {
|
||||||
|
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
|
||||||
|
},
|
||||||
|
"optionator@0.9.4": {
|
||||||
|
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
|
||||||
|
"dependencies": [
|
||||||
|
"deep-is",
|
||||||
|
"fast-levenshtein",
|
||||||
|
"levn",
|
||||||
|
"prelude-ls",
|
||||||
|
"type-check",
|
||||||
|
"word-wrap"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"p-limit@3.1.0": {
|
||||||
|
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"yocto-queue"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"p-locate@5.0.0": {
|
||||||
|
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
||||||
|
"dependencies": [
|
||||||
|
"p-limit"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent-module@1.0.1": {
|
||||||
|
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
||||||
|
"dependencies": [
|
||||||
|
"callsites"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"path-exists@4.0.0": {
|
||||||
|
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
||||||
|
},
|
||||||
|
"path-key@3.1.1": {
|
||||||
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
|
||||||
|
},
|
||||||
|
"picomatch@2.3.1": {
|
||||||
|
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
|
||||||
|
},
|
||||||
|
"postgres@3.4.5": {
|
||||||
|
"integrity": "sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg=="
|
||||||
|
},
|
||||||
|
"prelude-ls@1.2.1": {
|
||||||
|
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
|
||||||
|
},
|
||||||
|
"prettier@3.5.3": {
|
||||||
|
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="
|
||||||
|
},
|
||||||
|
"punycode@2.3.1": {
|
||||||
|
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
|
||||||
|
},
|
||||||
|
"queue-microtask@1.2.3": {
|
||||||
|
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
|
||||||
|
},
|
||||||
|
"resolve-from@4.0.0": {
|
||||||
|
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
|
||||||
|
},
|
||||||
|
"reusify@1.1.0": {
|
||||||
|
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="
|
||||||
|
},
|
||||||
|
"run-parallel@1.2.0": {
|
||||||
|
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||||
|
"dependencies": [
|
||||||
|
"queue-microtask"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"semver@7.7.1": {
|
||||||
|
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="
|
||||||
|
},
|
||||||
|
"shebang-command@2.0.0": {
|
||||||
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
|
"dependencies": [
|
||||||
|
"shebang-regex"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"shebang-regex@3.0.0": {
|
||||||
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
|
||||||
|
},
|
||||||
|
"sparse-bitfield@3.0.3": {
|
||||||
|
"integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"memory-pager"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"strip-json-comments@3.1.1": {
|
||||||
|
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
|
||||||
|
},
|
||||||
|
"supports-color@7.2.0": {
|
||||||
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||||
|
"dependencies": [
|
||||||
|
"has-flag"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"to-regex-range@5.0.1": {
|
||||||
|
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"is-number"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tr46@5.1.1": {
|
||||||
|
"integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
|
||||||
|
"dependencies": [
|
||||||
|
"punycode"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ts-api-utils@2.1.0_typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type-check@0.4.0": {
|
||||||
|
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
|
||||||
|
"dependencies": [
|
||||||
|
"prelude-ls"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"typescript-eslint@8.29.1_eslint@9.24.0_typescript@5.8.3_@typescript-eslint+parser@8.29.1__eslint@9.24.0__typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==",
|
||||||
|
"dependencies": [
|
||||||
|
"@typescript-eslint/eslint-plugin",
|
||||||
|
"@typescript-eslint/parser",
|
||||||
|
"@typescript-eslint/utils",
|
||||||
|
"eslint",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"typescript@5.8.3": {
|
||||||
|
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="
|
||||||
|
},
|
||||||
|
"uri-js@4.4.1": {
|
||||||
|
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||||
|
"dependencies": [
|
||||||
|
"punycode"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"webidl-conversions@7.0.0": {
|
||||||
|
"integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
|
||||||
|
},
|
||||||
|
"whatwg-url@14.2.0": {
|
||||||
|
"integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
|
||||||
|
"dependencies": [
|
||||||
|
"tr46",
|
||||||
|
"webidl-conversions"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"which@2.0.2": {
|
||||||
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
|
"dependencies": [
|
||||||
|
"isexe"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"word-wrap@1.2.5": {
|
||||||
|
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
|
||||||
|
},
|
||||||
|
"yocto-queue@0.1.0": {
|
||||||
|
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"workspace": {
|
"workspace": {
|
||||||
|
"packageJson": {
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"jsr:@std/assert@^1.0.0",
|
"npm:@jsr/std__assert@1.0.12",
|
||||||
"jsr:@std/async@1.0.0",
|
"npm:@jsr/std__async@1.0.12",
|
||||||
"jsr:@std/net@0.224.5",
|
"npm:@jsr/std__fs@1.0.16",
|
||||||
"jsr:@std/testing@0.225.3",
|
"npm:@jsr/std__net@1.0.4",
|
||||||
"npm:postgres@3.4.4"
|
"npm:@jsr/std__testing@1.0.11",
|
||||||
|
"npm:eslint-plugin-simple-import-sort@12.1.1",
|
||||||
|
"npm:eslint@9.24.0",
|
||||||
|
"npm:mongodb@6.15.0",
|
||||||
|
"npm:postgres@3.4.5",
|
||||||
|
"npm:prettier@3.5.3",
|
||||||
|
"npm:typescript-eslint@8.29.1"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -43,11 +43,14 @@ export class Container {
|
|||||||
*
|
*
|
||||||
* @see https://docs.docker.com/engine/api/v1.45/#tag/Container/operation/ContainerDelete
|
* @see https://docs.docker.com/engine/api/v1.45/#tag/Container/operation/ContainerDelete
|
||||||
*
|
*
|
||||||
* @param query.v - Remove the volumes associated with the container.
|
* @param query.v - Remove the volumes associated with the container. Default: true
|
||||||
* @param query.force - Kill the container if it is running.
|
* @param query.force - Kill the container if it is running.
|
||||||
* @param query.link - Remove the specified link and not the underlying container.
|
* @param query.link - Remove the specified link and not the underlying container.
|
||||||
*/
|
*/
|
||||||
async remove(query: { v?: boolean; force?: boolean; link?: boolean } = {}) {
|
async remove(query: { v?: boolean; force?: boolean; link?: boolean } = {}) {
|
||||||
|
if (query.v === undefined) {
|
||||||
|
query.v = true;
|
||||||
|
}
|
||||||
await modem.del({ path: `/containers/${this.id}`, query });
|
await modem.del({ path: `/containers/${this.id}`, query });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ export class Image {
|
|||||||
async inspect(image: string): Promise<InspectImageResponse | undefined> {
|
async inspect(image: string): Promise<InspectImageResponse | undefined> {
|
||||||
try {
|
try {
|
||||||
return await modem.get<InspectImageResponse>({ path: `/images/${image}/json` });
|
return await modem.get<InspectImageResponse>({ path: `/images/${image}/json` });
|
||||||
} catch (_) {
|
} catch {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,15 @@ export default [
|
|||||||
{
|
{
|
||||||
files: ["**/*.ts"],
|
files: ["**/*.ts"],
|
||||||
rules: {
|
rules: {
|
||||||
|
"@typescript-eslint/ban-ts-comment": ["error", {
|
||||||
|
"ts-expect-error": "allow-with-description",
|
||||||
|
minimumDescriptionLength: 10,
|
||||||
|
}],
|
||||||
|
"@typescript-eslint/ban-types": "off",
|
||||||
"@typescript-eslint/no-explicit-any": "off",
|
"@typescript-eslint/no-explicit-any": "off",
|
||||||
"@typescript-eslint/no-unused-vars": ["error", {
|
"@typescript-eslint/no-unused-vars": ["error", {
|
||||||
argsIgnorePattern: "^_",
|
argsIgnorePattern: "^_",
|
||||||
|
varsIgnorePattern: "^_",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { existsSync } from "@std/fs";
|
||||||
|
|
||||||
import { Request, type RequestMethod } from "./request.ts";
|
import { Request, type RequestMethod } from "./request.ts";
|
||||||
import type { Response } from "./response.ts";
|
import type { Response } from "./response.ts";
|
||||||
|
|
||||||
@@ -13,6 +15,10 @@ export class Client {
|
|||||||
*/
|
*/
|
||||||
get connection(): Promise<Deno.UnixConn> | Promise<Deno.TcpConn> {
|
get connection(): Promise<Deno.UnixConn> | Promise<Deno.TcpConn> {
|
||||||
if ("path" in this.options) {
|
if ("path" in this.options) {
|
||||||
|
const hasDockerSock = existsSync(this.options.path);
|
||||||
|
if (hasDockerSock === false) {
|
||||||
|
throw new Error(`Failed to resolve '${this.options.path}' unix connection path.`);
|
||||||
|
}
|
||||||
return Deno.connect(this.options);
|
return Deno.connect(this.options);
|
||||||
}
|
}
|
||||||
return Deno.connect(this.options);
|
return Deno.connect(this.options);
|
||||||
|
|||||||
17
package.json
Normal file
17
package.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"@std/assert": "npm:@jsr/std__assert@1.0.12",
|
||||||
|
"@std/async": "npm:@jsr/std__async@1.0.12",
|
||||||
|
"@std/fs": "npm:@jsr/std__fs@1.0.16",
|
||||||
|
"@std/net": "npm:@jsr/std__net@1.0.4",
|
||||||
|
"@std/testing": "npm:@jsr/std__testing@1.0.11"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint": "9.24.0",
|
||||||
|
"eslint-plugin-simple-import-sort": "12.1.1",
|
||||||
|
"mongodb": "6.15.0",
|
||||||
|
"postgres": "3.4.5",
|
||||||
|
"prettier": "3.5.3",
|
||||||
|
"typescript-eslint": "8.29.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
tests/mongo.test.ts
Normal file
17
tests/mongo.test.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import { assertEquals } from "@std/assert";
|
||||||
|
import { afterAll, describe, it } from "@std/testing/bdd";
|
||||||
|
|
||||||
|
import { MongoTestContainer } from "../containers/mongodb.ts";
|
||||||
|
|
||||||
|
const container = await MongoTestContainer.start();
|
||||||
|
|
||||||
|
describe("Mongo", () => {
|
||||||
|
afterAll(async () => {
|
||||||
|
await container.stop();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should spin up a mongodb container", async () => {
|
||||||
|
const res = await container.client.db("admin").command({ ping: 1 });
|
||||||
|
assertEquals(res.ok, 1);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user