prettier and eslint

This commit is contained in:
Sofía Aritz 2024-06-16 20:56:41 +02:00
parent abdf5c2229
commit 94b3cda887
Signed by: sofia
GPG key ID: 90B5116E3542B28F
10 changed files with 1779 additions and 216 deletions

4
asset-api/.prettierrc Normal file
View file

@ -0,0 +1,4 @@
{
"tabWidth": 4,
"printWidth": 120
}

View file

@ -0,0 +1,11 @@
import globals from "globals";
import pluginJs from "@eslint/js";
export default [
pluginJs.configs.recommended,
{ languageOptions: { globals: globals.node } },
{
// FIXME: Figure this out...
ignores: [".pnp.cjs", ".pnp.loader.mjs"],
},
];

View file

@ -1,64 +1,64 @@
import { readFile } from "node:fs/promises" import { readFile } from "node:fs/promises";
import { createWriteStream, readFileSync, writeFileSync } from "node:fs"; import { createWriteStream, readFileSync, writeFileSync } from "node:fs";
import { createSign, generateKeyPairSync, randomUUID } from "node:crypto"; import { createSign, generateKeyPairSync, randomUUID } from "node:crypto";
import Fastify from "fastify"; import Fastify from "fastify";
import multipart from '@fastify/multipart' import multipart from "@fastify/multipart";
import { join } from "node:path"; import { join } from "node:path";
import mime from "mime" import mime from "mime";
import { promisify } from "node:util"; import { promisify } from "node:util";
import { pipeline } from "node:stream"; import { pipeline } from "node:stream";
const M2M_ALGORITHM = "RSA-SHA512" const M2M_ALGORITHM = "RSA-SHA512";
const { private: M2M_PRIVATE_KEY, public: M2M_PUBLIC_KEY } = loadM2MKeys() const { private: M2M_PRIVATE_KEY, public: M2M_PUBLIC_KEY } = loadM2MKeys();
if (M2M_PRIVATE_KEY == null || M2M_PUBLIC_KEY == null) { if (M2M_PRIVATE_KEY == null || M2M_PUBLIC_KEY == null) {
console.error("Couldn't load keys") console.error("Couldn't load keys");
process.exit(1) process.exit(1);
} }
const ASSETS_FOLDER = "./.assets/" const ASSETS_FOLDER = "./.assets/";
const ASSET_API_LANDING_MESSAGE = "asset-api v1.0.0" const ASSET_API_LANDING_MESSAGE = "asset-api v1.0.0";
const IDENTITY_API_ENDPOINT = "http://localhost:3000" const IDENTITY_API_ENDPOINT = "http://localhost:3000";
const fastify = new Fastify({ const fastify = new Fastify({
logger: true, logger: true,
}) });
fastify.register(multipart) fastify.register(multipart);
fastify.get("/", async (request, reply) => { fastify.get("/", async () => {
return signString(ASSET_API_LANDING_MESSAGE) return signString(ASSET_API_LANDING_MESSAGE);
}) });
fastify.get("/crypto/cert", async (request, reply) => { fastify.get("/crypto/cert", async () => {
return M2M_PUBLIC_KEY return M2M_PUBLIC_KEY;
}) });
fastify.get("/crypto/algo", (request, reply) => { fastify.get("/crypto/algo", () => {
return M2M_ALGORITHM return M2M_ALGORITHM;
}) });
fastify.put("/asset", { fastify.put("/asset", {
async handler(request, reply) { async handler(request) {
await userFromSessionKey(request.query.session_key) await userFromSessionKey(request.query.session_key);
let file = await request.file() let file = await request.file();
let id = randomUUID().toString() let id = randomUUID().toString();
let extension = mime.getExtension(file.mimetype) || ".bin" let extension = mime.getExtension(file.mimetype) || ".bin";
let full_id = `${id}.${extension}` let full_id = `${id}.${extension}`;
let url = new URL(IDENTITY_API_ENDPOINT) let url = new URL(IDENTITY_API_ENDPOINT);
url.pathname = "/m2m/asset" url.pathname = "/m2m/asset";
await fetch(url, { await fetch(url, {
method: "PUT", method: "PUT",
body: signObject({ body: signObject({
session_key: request.query.session_key, session_key: request.query.session_key,
asset_id: full_id, asset_id: full_id,
}) }),
}) });
promisify(pipeline)(file.file, createWriteStream(`.assets/${full_id}`)) promisify(pipeline)(file.file, createWriteStream(`.assets/${full_id}`));
}, },
schema: { schema: {
query: { query: {
@ -69,19 +69,19 @@ fastify.put("/asset", {
required: ["session_key"], required: ["session_key"],
}, },
}, },
}) });
fastify.get("/asset", { fastify.get("/asset", {
async handler(request, reply) { async handler(request, reply) {
let user = await userFromSessionKey(request.query.session_key) let user = await userFromSessionKey(request.query.session_key);
if (user.assets.includes(request.query.asset_id)) { if (user.assets.includes(request.query.asset_id)) {
let path = join(ASSETS_FOLDER, request.query.asset_id) let path = join(ASSETS_FOLDER, request.query.asset_id);
reply.type(mime.getType(path)) reply.type(mime.getType(path));
reply.send(await readFile(path)) reply.send(await readFile(path));
} else { } else {
return "Not authorized" return "Not authorized";
} }
}, },
schema: { schema: {
@ -94,58 +94,58 @@ fastify.get("/asset", {
required: ["asset_id", "session_key"], required: ["asset_id", "session_key"],
}, },
}, },
}) });
fastify.listen({ port: 3001 }) fastify.listen({ port: 3001 });
function loadM2MKeys() { function loadM2MKeys() {
try { try {
return { return {
private: readFileSync("./.keys/m2m.pem").toString("ascii"), private: readFileSync("./.keys/m2m.pem").toString("ascii"),
public: readFileSync("./.keys/m2m.pub").toString("ascii"), public: readFileSync("./.keys/m2m.pub").toString("ascii"),
} };
} catch (e) { } catch {
console.warn("Generating M2M key pair!") console.warn("Generating M2M key pair!");
let { publicKey, privateKey } = generateKeyPairSync("rsa", { let { publicKey, privateKey } = generateKeyPairSync("rsa", {
modulusLength: 4096, modulusLength: 4096,
publicKeyEncoding: { publicKeyEncoding: {
type: 'spki', type: "spki",
format: 'pem', format: "pem",
}, },
privateKeyEncoding: { privateKeyEncoding: {
type: 'pkcs8', type: "pkcs8",
format: 'pem', format: "pem",
}, },
}) });
writeFileSync("./.keys/m2m.pem", privateKey) writeFileSync("./.keys/m2m.pem", privateKey);
writeFileSync("./.keys/m2m.pub", publicKey) writeFileSync("./.keys/m2m.pub", publicKey);
return loadM2MKeys() return loadM2MKeys();
} }
} }
function signString(content) { function signString(content) {
let sign = createSign(M2M_ALGORITHM) let sign = createSign(M2M_ALGORITHM);
sign.update(content) sign.update(content);
return `-----BEGIN SIGNED MESSAGE-----\n\n${content}\n\n-----BEGIN SIGNATURE-----\n\n${sign.sign(M2M_PRIVATE_KEY, "base64")}\n-----END SIGNATURE-----` return `-----BEGIN SIGNED MESSAGE-----\n\n${content}\n\n-----BEGIN SIGNATURE-----\n\n${sign.sign(M2M_PRIVATE_KEY, "base64")}\n-----END SIGNATURE-----`;
} }
function signObject(content) { function signObject(content) {
return signString(JSON.stringify(content)) return signString(JSON.stringify(content));
} }
async function userFromSessionKey(session_key) { async function userFromSessionKey(session_key) {
let url = new URL(IDENTITY_API_ENDPOINT) let url = new URL(IDENTITY_API_ENDPOINT);
url.pathname = "/m2m/account" url.pathname = "/m2m/account";
let res1 = await fetch(url, { let res1 = await fetch(url, {
method: "POST", method: "POST",
body: signObject({ body: signObject({
session_key, session_key,
}) }),
}) });
return await res1.json() return await res1.json();
} }

View file

@ -1,15 +1,23 @@
{ {
"name": "asset-api", "name": "asset-api",
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
"packageManager": "yarn@4.3.0", "packageManager": "yarn@4.3.0",
"dependencies": { "dependencies": {
"@fastify/multipart": "^8.3.0", "@fastify/multipart": "^8.3.0",
"fastify": "^4.28.0", "fastify": "^4.28.0",
"mime": "^4.0.3", "mime": "^4.0.3",
"uuid": "^10.0.0" "uuid": "^10.0.0"
}, },
"scripts": { "scripts": {
"start": "node index.js" "start": "node index.js",
} "lint:fix": "eslint --fix && prettier . --write",
"lint": "eslint && prettier . --check"
},
"devDependencies": {
"@eslint/js": "^9.5.0",
"eslint": "9.x",
"globals": "^15.5.0",
"prettier": "3.3.2"
}
} }

View file

@ -5,6 +5,66 @@ __metadata:
version: 8 version: 8
cacheKey: 10c0 cacheKey: 10c0
"@eslint-community/eslint-utils@npm:^4.2.0":
version: 4.4.0
resolution: "@eslint-community/eslint-utils@npm:4.4.0"
dependencies:
eslint-visitor-keys: "npm:^3.3.0"
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e
languageName: node
linkType: hard
"@eslint-community/regexpp@npm:^4.6.1":
version: 4.10.1
resolution: "@eslint-community/regexpp@npm:4.10.1"
checksum: 10c0/f59376025d0c91dd9fdf18d33941df499292a3ecba3e9889c360f3f6590197d30755604588786cdca0f9030be315a26b206014af4b65c0ff85b4ec49043de780
languageName: node
linkType: hard
"@eslint/config-array@npm:^0.16.0":
version: 0.16.0
resolution: "@eslint/config-array@npm:0.16.0"
dependencies:
"@eslint/object-schema": "npm:^2.1.4"
debug: "npm:^4.3.1"
minimatch: "npm:^3.0.5"
checksum: 10c0/b9d04409151dc95ec6b5e04e1e185a808d58e18cfc7340adc1e9420a5ff15843a0a308fb2cd9a2b354652885c2bebbcd5515814e93e9c9133f423891b6e53c70
languageName: node
linkType: hard
"@eslint/eslintrc@npm:^3.1.0":
version: 3.1.0
resolution: "@eslint/eslintrc@npm:3.1.0"
dependencies:
ajv: "npm:^6.12.4"
debug: "npm:^4.3.2"
espree: "npm:^10.0.1"
globals: "npm:^14.0.0"
ignore: "npm:^5.2.0"
import-fresh: "npm:^3.2.1"
js-yaml: "npm:^4.1.0"
minimatch: "npm:^3.1.2"
strip-json-comments: "npm:^3.1.1"
checksum: 10c0/5b7332ed781edcfc98caa8dedbbb843abfb9bda2e86538529c843473f580e40c69eb894410eddc6702f487e9ee8f8cfa8df83213d43a8fdb549f23ce06699167
languageName: node
linkType: hard
"@eslint/js@npm:9.5.0, @eslint/js@npm:^9.5.0":
version: 9.5.0
resolution: "@eslint/js@npm:9.5.0"
checksum: 10c0/dacf51ec2d5b4c8d1315d21a0ff761235d9e39b2391cb945138c58dc512a6c18949c40b644235f5c4fdf5b637ef8f881214acc496dddf46b718529bf22af42ac
languageName: node
linkType: hard
"@eslint/object-schema@npm:^2.1.4":
version: 2.1.4
resolution: "@eslint/object-schema@npm:2.1.4"
checksum: 10c0/e9885532ea70e483fb007bf1275968b05bb15ebaa506d98560c41a41220d33d342e19023d5f2939fed6eb59676c1bda5c847c284b4b55fce521d282004da4dda
languageName: node
linkType: hard
"@fastify/ajv-compiler@npm:^3.5.0": "@fastify/ajv-compiler@npm:^3.5.0":
version: 3.5.0 version: 3.5.0
resolution: "@fastify/ajv-compiler@npm:3.5.0" resolution: "@fastify/ajv-compiler@npm:3.5.0"
@ -69,6 +129,47 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@humanwhocodes/module-importer@npm:^1.0.1":
version: 1.0.1
resolution: "@humanwhocodes/module-importer@npm:1.0.1"
checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529
languageName: node
linkType: hard
"@humanwhocodes/retry@npm:^0.3.0":
version: 0.3.0
resolution: "@humanwhocodes/retry@npm:0.3.0"
checksum: 10c0/7111ec4e098b1a428459b4e3be5a5d2a13b02905f805a2468f4fa628d072f0de2da26a27d04f65ea2846f73ba51f4204661709f05bfccff645e3cedef8781bb6
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
dependencies:
"@nodelib/fs.stat": "npm:2.0.5"
run-parallel: "npm:^1.1.9"
checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb
languageName: node
linkType: hard
"@nodelib/fs.stat@npm:2.0.5":
version: 2.0.5
resolution: "@nodelib/fs.stat@npm:2.0.5"
checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d
languageName: node
linkType: hard
"@nodelib/fs.walk@npm:^1.2.8":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
"@nodelib/fs.scandir": "npm:2.1.5"
fastq: "npm:^1.6.0"
checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1
languageName: node
linkType: hard
"abort-controller@npm:^3.0.0": "abort-controller@npm:^3.0.0":
version: 3.0.0 version: 3.0.0
resolution: "abort-controller@npm:3.0.0" resolution: "abort-controller@npm:3.0.0"
@ -85,6 +186,24 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"acorn-jsx@npm:^5.3.2":
version: 5.3.2
resolution: "acorn-jsx@npm:5.3.2"
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1
languageName: node
linkType: hard
"acorn@npm:^8.11.3":
version: 8.12.0
resolution: "acorn@npm:8.12.0"
bin:
acorn: bin/acorn
checksum: 10c0/a19f9dead009d3b430fa3c253710b47778cdaace15b316de6de93a68c355507bc1072a9956372b6c990cbeeb167d4a929249d0faeb8ae4bb6911d68d53299549
languageName: node
linkType: hard
"ajv-formats@npm:^2.1.1": "ajv-formats@npm:^2.1.1":
version: 2.1.1 version: 2.1.1
resolution: "ajv-formats@npm:2.1.1" resolution: "ajv-formats@npm:2.1.1"
@ -113,6 +232,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ajv@npm:^6.12.4":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
fast-deep-equal: "npm:^3.1.1"
fast-json-stable-stringify: "npm:^2.0.0"
json-schema-traverse: "npm:^0.4.1"
uri-js: "npm:^4.2.2"
checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71
languageName: node
linkType: hard
"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0": "ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0":
version: 8.16.0 version: 8.16.0
resolution: "ajv@npm:8.16.0" resolution: "ajv@npm:8.16.0"
@ -125,13 +256,40 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ansi-regex@npm:^5.0.1":
version: 5.0.1
resolution: "ansi-regex@npm:5.0.1"
checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737
languageName: node
linkType: hard
"ansi-styles@npm:^4.1.0":
version: 4.3.0
resolution: "ansi-styles@npm:4.3.0"
dependencies:
color-convert: "npm:^2.0.1"
checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041
languageName: node
linkType: hard
"argparse@npm:^2.0.1":
version: 2.0.1
resolution: "argparse@npm:2.0.1"
checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e
languageName: node
linkType: hard
"asset-api@workspace:.": "asset-api@workspace:.":
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "asset-api@workspace:." resolution: "asset-api@workspace:."
dependencies: dependencies:
"@eslint/js": "npm:^9.5.0"
"@fastify/multipart": "npm:^8.3.0" "@fastify/multipart": "npm:^8.3.0"
eslint: "npm:9.x"
fastify: "npm:^4.28.0" fastify: "npm:^4.28.0"
globals: "npm:^15.5.0"
mime: "npm:^4.0.3" mime: "npm:^4.0.3"
prettier: "npm:3.3.2"
uuid: "npm:^10.0.0" uuid: "npm:^10.0.0"
languageName: unknown languageName: unknown
linkType: soft linkType: soft
@ -153,6 +311,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee
languageName: node
linkType: hard
"base64-js@npm:^1.3.1": "base64-js@npm:^1.3.1":
version: 1.5.1 version: 1.5.1
resolution: "base64-js@npm:1.5.1" resolution: "base64-js@npm:1.5.1"
@ -160,6 +325,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
dependencies:
balanced-match: "npm:^1.0.0"
concat-map: "npm:0.0.1"
checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668
languageName: node
linkType: hard
"buffer@npm:^6.0.3": "buffer@npm:^6.0.3":
version: 6.0.3 version: 6.0.3
resolution: "buffer@npm:6.0.3" resolution: "buffer@npm:6.0.3"
@ -170,6 +345,46 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"callsites@npm:^3.0.0":
version: 3.1.0
resolution: "callsites@npm:3.1.0"
checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301
languageName: node
linkType: hard
"chalk@npm:^4.0.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
ansi-styles: "npm:^4.1.0"
supports-color: "npm:^7.1.0"
checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880
languageName: node
linkType: hard
"color-convert@npm:^2.0.1":
version: 2.0.1
resolution: "color-convert@npm:2.0.1"
dependencies:
color-name: "npm:~1.1.4"
checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7
languageName: node
linkType: hard
"color-name@npm:~1.1.4":
version: 1.1.4
resolution: "color-name@npm:1.1.4"
checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
languageName: node
linkType: hard
"concat-map@npm:0.0.1":
version: 0.0.1
resolution: "concat-map@npm:0.0.1"
checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
languageName: node
linkType: hard
"cookie@npm:^0.6.0": "cookie@npm:^0.6.0":
version: 0.6.0 version: 0.6.0
resolution: "cookie@npm:0.6.0" resolution: "cookie@npm:0.6.0"
@ -177,6 +392,154 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cross-spawn@npm:^7.0.2":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
dependencies:
path-key: "npm:^3.1.0"
shebang-command: "npm:^2.0.0"
which: "npm:^2.0.1"
checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750
languageName: node
linkType: hard
"debug@npm:^4.3.1, debug@npm:^4.3.2":
version: 4.3.5
resolution: "debug@npm:4.3.5"
dependencies:
ms: "npm:2.1.2"
peerDependenciesMeta:
supports-color:
optional: true
checksum: 10c0/082c375a2bdc4f4469c99f325ff458adad62a3fc2c482d59923c260cb08152f34e2659f72b3767db8bb2f21ca81a60a42d1019605a412132d7b9f59363a005cc
languageName: node
linkType: hard
"deep-is@npm:^0.1.3":
version: 0.1.4
resolution: "deep-is@npm:0.1.4"
checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c
languageName: node
linkType: hard
"escape-string-regexp@npm:^4.0.0":
version: 4.0.0
resolution: "escape-string-regexp@npm:4.0.0"
checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9
languageName: node
linkType: hard
"eslint-scope@npm:^8.0.1":
version: 8.0.1
resolution: "eslint-scope@npm:8.0.1"
dependencies:
esrecurse: "npm:^4.3.0"
estraverse: "npm:^5.2.0"
checksum: 10c0/0ec40ab284e58ac7ef064ecd23c127e03d339fa57173c96852336c73afc70ce5631da21dc1c772415a37a421291845538dd69db83c68d611044c0fde1d1fa269
languageName: node
linkType: hard
"eslint-visitor-keys@npm:^3.3.0":
version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3"
checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820
languageName: node
linkType: hard
"eslint-visitor-keys@npm:^4.0.0":
version: 4.0.0
resolution: "eslint-visitor-keys@npm:4.0.0"
checksum: 10c0/76619f42cf162705a1515a6868e6fc7567e185c7063a05621a8ac4c3b850d022661262c21d9f1fc1d144ecf0d5d64d70a3f43c15c3fc969a61ace0fb25698cf5
languageName: node
linkType: hard
"eslint@npm:9.x":
version: 9.5.0
resolution: "eslint@npm:9.5.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.2.0"
"@eslint-community/regexpp": "npm:^4.6.1"
"@eslint/config-array": "npm:^0.16.0"
"@eslint/eslintrc": "npm:^3.1.0"
"@eslint/js": "npm:9.5.0"
"@humanwhocodes/module-importer": "npm:^1.0.1"
"@humanwhocodes/retry": "npm:^0.3.0"
"@nodelib/fs.walk": "npm:^1.2.8"
ajv: "npm:^6.12.4"
chalk: "npm:^4.0.0"
cross-spawn: "npm:^7.0.2"
debug: "npm:^4.3.2"
escape-string-regexp: "npm:^4.0.0"
eslint-scope: "npm:^8.0.1"
eslint-visitor-keys: "npm:^4.0.0"
espree: "npm:^10.0.1"
esquery: "npm:^1.5.0"
esutils: "npm:^2.0.2"
fast-deep-equal: "npm:^3.1.3"
file-entry-cache: "npm:^8.0.0"
find-up: "npm:^5.0.0"
glob-parent: "npm:^6.0.2"
ignore: "npm:^5.2.0"
imurmurhash: "npm:^0.1.4"
is-glob: "npm:^4.0.0"
is-path-inside: "npm:^3.0.3"
json-stable-stringify-without-jsonify: "npm:^1.0.1"
levn: "npm:^0.4.1"
lodash.merge: "npm:^4.6.2"
minimatch: "npm:^3.1.2"
natural-compare: "npm:^1.4.0"
optionator: "npm:^0.9.3"
strip-ansi: "npm:^6.0.1"
text-table: "npm:^0.2.0"
bin:
eslint: bin/eslint.js
checksum: 10c0/1c83d94ccfd6d97474aaaf463714eba7afa040639ad9191db430d34e9e2851ba14510651de69b52f26ee30611caf0fa4c66b3fb73bb71df6ab10cef5bb44bb32
languageName: node
linkType: hard
"espree@npm:^10.0.1":
version: 10.0.1
resolution: "espree@npm:10.0.1"
dependencies:
acorn: "npm:^8.11.3"
acorn-jsx: "npm:^5.3.2"
eslint-visitor-keys: "npm:^4.0.0"
checksum: 10c0/7c0f84afa0f9db7bb899619e6364ed832ef13fe8943691757ddde9a1805ae68b826ed66803323015f707a629a5507d0d290edda2276c25131fe0ad883b8b5636
languageName: node
linkType: hard
"esquery@npm:^1.5.0":
version: 1.5.0
resolution: "esquery@npm:1.5.0"
dependencies:
estraverse: "npm:^5.1.0"
checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213
languageName: node
linkType: hard
"esrecurse@npm:^4.3.0":
version: 4.3.0
resolution: "esrecurse@npm:4.3.0"
dependencies:
estraverse: "npm:^5.2.0"
checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5
languageName: node
linkType: hard
"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0":
version: 5.3.0
resolution: "estraverse@npm:5.3.0"
checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107
languageName: node
linkType: hard
"esutils@npm:^2.0.2":
version: 2.0.3
resolution: "esutils@npm:2.0.3"
checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7
languageName: node
linkType: hard
"event-target-shim@npm:^5.0.0": "event-target-shim@npm:^5.0.0":
version: 5.0.1 version: 5.0.1
resolution: "event-target-shim@npm:5.0.1" resolution: "event-target-shim@npm:5.0.1"
@ -205,13 +568,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fast-deep-equal@npm:^3.1.3": "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3 version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3" resolution: "fast-deep-equal@npm:3.1.3"
checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
languageName: node languageName: node
linkType: hard linkType: hard
"fast-json-stable-stringify@npm:^2.0.0":
version: 2.1.0
resolution: "fast-json-stable-stringify@npm:2.1.0"
checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b
languageName: node
linkType: hard
"fast-json-stringify@npm:^5.7.0, fast-json-stringify@npm:^5.8.0": "fast-json-stringify@npm:^5.7.0, fast-json-stringify@npm:^5.8.0":
version: 5.16.0 version: 5.16.0
resolution: "fast-json-stringify@npm:5.16.0" resolution: "fast-json-stringify@npm:5.16.0"
@ -227,6 +597,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fast-levenshtein@npm:^2.0.6":
version: 2.0.6
resolution: "fast-levenshtein@npm:2.0.6"
checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
languageName: node
linkType: hard
"fast-querystring@npm:^1.0.0": "fast-querystring@npm:^1.0.0":
version: 1.1.2 version: 1.1.2
resolution: "fast-querystring@npm:1.1.2" resolution: "fast-querystring@npm:1.1.2"
@ -281,7 +658,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fastq@npm:^1.17.1": "fastq@npm:^1.17.1, fastq@npm:^1.6.0":
version: 1.17.1 version: 1.17.1
resolution: "fastq@npm:1.17.1" resolution: "fastq@npm:1.17.1"
dependencies: dependencies:
@ -290,6 +667,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"file-entry-cache@npm:^8.0.0":
version: 8.0.0
resolution: "file-entry-cache@npm:8.0.0"
dependencies:
flat-cache: "npm:^4.0.0"
checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638
languageName: node
linkType: hard
"find-my-way@npm:^8.0.0": "find-my-way@npm:^8.0.0":
version: 8.2.0 version: 8.2.0
resolution: "find-my-way@npm:8.2.0" resolution: "find-my-way@npm:8.2.0"
@ -301,6 +687,33 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"find-up@npm:^5.0.0":
version: 5.0.0
resolution: "find-up@npm:5.0.0"
dependencies:
locate-path: "npm:^6.0.0"
path-exists: "npm:^4.0.0"
checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a
languageName: node
linkType: hard
"flat-cache@npm:^4.0.0":
version: 4.0.1
resolution: "flat-cache@npm:4.0.1"
dependencies:
flatted: "npm:^3.2.9"
keyv: "npm:^4.5.4"
checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc
languageName: node
linkType: hard
"flatted@npm:^3.2.9":
version: 3.3.1
resolution: "flatted@npm:3.3.1"
checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf
languageName: node
linkType: hard
"forwarded@npm:0.2.0": "forwarded@npm:0.2.0":
version: 0.2.0 version: 0.2.0
resolution: "forwarded@npm:0.2.0" resolution: "forwarded@npm:0.2.0"
@ -308,6 +721,36 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"glob-parent@npm:^6.0.2":
version: 6.0.2
resolution: "glob-parent@npm:6.0.2"
dependencies:
is-glob: "npm:^4.0.3"
checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8
languageName: node
linkType: hard
"globals@npm:^14.0.0":
version: 14.0.0
resolution: "globals@npm:14.0.0"
checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d
languageName: node
linkType: hard
"globals@npm:^15.5.0":
version: 15.5.0
resolution: "globals@npm:15.5.0"
checksum: 10c0/f13c3cb0c6d49b9d23e447b86e33ca6139753087060c3063863c0dd2b5d79f4a114c48d20e321916e6c3701adb3f6b67d6ac8d8ed2bae6da45482c968532d4e2
languageName: node
linkType: hard
"has-flag@npm:^4.0.0":
version: 4.0.0
resolution: "has-flag@npm:4.0.0"
checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1
languageName: node
linkType: hard
"ieee754@npm:^1.2.1": "ieee754@npm:^1.2.1":
version: 1.2.1 version: 1.2.1
resolution: "ieee754@npm:1.2.1" resolution: "ieee754@npm:1.2.1"
@ -315,6 +758,30 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ignore@npm:^5.2.0":
version: 5.3.1
resolution: "ignore@npm:5.3.1"
checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd
languageName: node
linkType: hard
"import-fresh@npm:^3.2.1":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
dependencies:
parent-module: "npm:^1.0.0"
resolve-from: "npm:^4.0.0"
checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3
languageName: node
linkType: hard
"imurmurhash@npm:^0.1.4":
version: 0.1.4
resolution: "imurmurhash@npm:0.1.4"
checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6
languageName: node
linkType: hard
"ipaddr.js@npm:1.9.1": "ipaddr.js@npm:1.9.1":
version: 1.9.1 version: 1.9.1
resolution: "ipaddr.js@npm:1.9.1" resolution: "ipaddr.js@npm:1.9.1"
@ -322,6 +789,54 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912
languageName: node
linkType: hard
"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
dependencies:
is-extglob: "npm:^2.1.1"
checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a
languageName: node
linkType: hard
"is-path-inside@npm:^3.0.3":
version: 3.0.3
resolution: "is-path-inside@npm:3.0.3"
checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05
languageName: node
linkType: hard
"isexe@npm:^2.0.0":
version: 2.0.0
resolution: "isexe@npm:2.0.0"
checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d
languageName: node
linkType: hard
"js-yaml@npm:^4.1.0":
version: 4.1.0
resolution: "js-yaml@npm:4.1.0"
dependencies:
argparse: "npm:^2.0.1"
bin:
js-yaml: bin/js-yaml.js
checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f
languageName: node
linkType: hard
"json-buffer@npm:3.0.1":
version: 3.0.1
resolution: "json-buffer@npm:3.0.1"
checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7
languageName: node
linkType: hard
"json-schema-ref-resolver@npm:^1.0.1": "json-schema-ref-resolver@npm:^1.0.1":
version: 1.0.1 version: 1.0.1
resolution: "json-schema-ref-resolver@npm:1.0.1" resolution: "json-schema-ref-resolver@npm:1.0.1"
@ -331,6 +846,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"json-schema-traverse@npm:^0.4.1":
version: 0.4.1
resolution: "json-schema-traverse@npm:0.4.1"
checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce
languageName: node
linkType: hard
"json-schema-traverse@npm:^1.0.0": "json-schema-traverse@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "json-schema-traverse@npm:1.0.0" resolution: "json-schema-traverse@npm:1.0.0"
@ -338,6 +860,32 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"json-stable-stringify-without-jsonify@npm:^1.0.1":
version: 1.0.1
resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5
languageName: node
linkType: hard
"keyv@npm:^4.5.4":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
dependencies:
json-buffer: "npm:3.0.1"
checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e
languageName: node
linkType: hard
"levn@npm:^0.4.1":
version: 0.4.1
resolution: "levn@npm:0.4.1"
dependencies:
prelude-ls: "npm:^1.2.1"
type-check: "npm:~0.4.0"
checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
languageName: node
linkType: hard
"light-my-request@npm:^5.11.0": "light-my-request@npm:^5.11.0":
version: 5.13.0 version: 5.13.0
resolution: "light-my-request@npm:5.13.0" resolution: "light-my-request@npm:5.13.0"
@ -349,6 +897,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"locate-path@npm:^6.0.0":
version: 6.0.0
resolution: "locate-path@npm:6.0.0"
dependencies:
p-locate: "npm:^5.0.0"
checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3
languageName: node
linkType: hard
"lodash.merge@npm:^4.6.2":
version: 4.6.2
resolution: "lodash.merge@npm:4.6.2"
checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506
languageName: node
linkType: hard
"mime@npm:^4.0.3": "mime@npm:^4.0.3":
version: 4.0.3 version: 4.0.3
resolution: "mime@npm:4.0.3" resolution: "mime@npm:4.0.3"
@ -358,6 +922,29 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"minimatch@npm:^3.0.5, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
brace-expansion: "npm:^1.1.7"
checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311
languageName: node
linkType: hard
"ms@npm:2.1.2":
version: 2.1.2
resolution: "ms@npm:2.1.2"
checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc
languageName: node
linkType: hard
"natural-compare@npm:^1.4.0":
version: 1.4.0
resolution: "natural-compare@npm:1.4.0"
checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447
languageName: node
linkType: hard
"on-exit-leak-free@npm:^2.1.0": "on-exit-leak-free@npm:^2.1.0":
version: 2.1.2 version: 2.1.2
resolution: "on-exit-leak-free@npm:2.1.2" resolution: "on-exit-leak-free@npm:2.1.2"
@ -365,6 +952,61 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"optionator@npm:^0.9.3":
version: 0.9.4
resolution: "optionator@npm:0.9.4"
dependencies:
deep-is: "npm:^0.1.3"
fast-levenshtein: "npm:^2.0.6"
levn: "npm:^0.4.1"
prelude-ls: "npm:^1.2.1"
type-check: "npm:^0.4.0"
word-wrap: "npm:^1.2.5"
checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675
languageName: node
linkType: hard
"p-limit@npm:^3.0.2":
version: 3.1.0
resolution: "p-limit@npm:3.1.0"
dependencies:
yocto-queue: "npm:^0.1.0"
checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a
languageName: node
linkType: hard
"p-locate@npm:^5.0.0":
version: 5.0.0
resolution: "p-locate@npm:5.0.0"
dependencies:
p-limit: "npm:^3.0.2"
checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a
languageName: node
linkType: hard
"parent-module@npm:^1.0.0":
version: 1.0.1
resolution: "parent-module@npm:1.0.1"
dependencies:
callsites: "npm:^3.0.0"
checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556
languageName: node
linkType: hard
"path-exists@npm:^4.0.0":
version: 4.0.0
resolution: "path-exists@npm:4.0.0"
checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
languageName: node
linkType: hard
"path-key@npm:^3.1.0":
version: 3.1.1
resolution: "path-key@npm:3.1.1"
checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c
languageName: node
linkType: hard
"pino-abstract-transport@npm:^1.2.0": "pino-abstract-transport@npm:^1.2.0":
version: 1.2.0 version: 1.2.0
resolution: "pino-abstract-transport@npm:1.2.0" resolution: "pino-abstract-transport@npm:1.2.0"
@ -403,6 +1045,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"prelude-ls@npm:^1.2.1":
version: 1.2.1
resolution: "prelude-ls@npm:1.2.1"
checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd
languageName: node
linkType: hard
"prettier@npm:3.3.2":
version: 3.3.2
resolution: "prettier@npm:3.3.2"
bin:
prettier: bin/prettier.cjs
checksum: 10c0/39ed27d17f0238da6dd6571d63026566bd790d3d0edac57c285fbab525982060c8f1e01955fe38134ab10f0951a6076da37f015db8173c02f14bc7f0803a384c
languageName: node
linkType: hard
"process-warning@npm:^3.0.0": "process-warning@npm:^3.0.0":
version: 3.0.0 version: 3.0.0
resolution: "process-warning@npm:3.0.0" resolution: "process-warning@npm:3.0.0"
@ -434,6 +1092,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"queue-microtask@npm:^1.2.2":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102
languageName: node
linkType: hard
"quick-format-unescaped@npm:^4.0.3": "quick-format-unescaped@npm:^4.0.3":
version: 4.0.4 version: 4.0.4
resolution: "quick-format-unescaped@npm:4.0.4" resolution: "quick-format-unescaped@npm:4.0.4"
@ -468,6 +1133,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"resolve-from@npm:^4.0.0":
version: 4.0.0
resolution: "resolve-from@npm:4.0.0"
checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190
languageName: node
linkType: hard
"ret@npm:~0.4.0": "ret@npm:~0.4.0":
version: 0.4.3 version: 0.4.3
resolution: "ret@npm:0.4.3" resolution: "ret@npm:0.4.3"
@ -489,6 +1161,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
dependencies:
queue-microtask: "npm:^1.2.2"
checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39
languageName: node
linkType: hard
"safe-buffer@npm:~5.2.0": "safe-buffer@npm:~5.2.0":
version: 5.2.1 version: 5.2.1
resolution: "safe-buffer@npm:5.2.1" resolution: "safe-buffer@npm:5.2.1"
@ -535,6 +1216,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
dependencies:
shebang-regex: "npm:^3.0.0"
checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e
languageName: node
linkType: hard
"shebang-regex@npm:^3.0.0":
version: 3.0.0
resolution: "shebang-regex@npm:3.0.0"
checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690
languageName: node
linkType: hard
"sonic-boom@npm:^4.0.1": "sonic-boom@npm:^4.0.1":
version: 4.0.1 version: 4.0.1
resolution: "sonic-boom@npm:4.0.1" resolution: "sonic-boom@npm:4.0.1"
@ -567,6 +1264,38 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"strip-ansi@npm:^6.0.1":
version: 6.0.1
resolution: "strip-ansi@npm:6.0.1"
dependencies:
ansi-regex: "npm:^5.0.1"
checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952
languageName: node
linkType: hard
"strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd
languageName: node
linkType: hard
"supports-color@npm:^7.1.0":
version: 7.2.0
resolution: "supports-color@npm:7.2.0"
dependencies:
has-flag: "npm:^4.0.0"
checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124
languageName: node
linkType: hard
"text-table@npm:^0.2.0":
version: 0.2.0
resolution: "text-table@npm:0.2.0"
checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c
languageName: node
linkType: hard
"thread-stream@npm:^3.0.0": "thread-stream@npm:^3.0.0":
version: 3.1.0 version: 3.1.0
resolution: "thread-stream@npm:3.1.0" resolution: "thread-stream@npm:3.1.0"
@ -583,7 +1312,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"uri-js@npm:^4.4.1": "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0
resolution: "type-check@npm:0.4.0"
dependencies:
prelude-ls: "npm:^1.2.1"
checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
languageName: node
linkType: hard
"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1":
version: 4.4.1 version: 4.4.1
resolution: "uri-js@npm:4.4.1" resolution: "uri-js@npm:4.4.1"
dependencies: dependencies:
@ -600,3 +1338,28 @@ __metadata:
checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe
languageName: node languageName: node
linkType: hard linkType: hard
"which@npm:^2.0.1":
version: 2.0.2
resolution: "which@npm:2.0.2"
dependencies:
isexe: "npm:^2.0.0"
bin:
node-which: ./bin/node-which
checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f
languageName: node
linkType: hard
"word-wrap@npm:^1.2.5":
version: 1.2.5
resolution: "word-wrap@npm:1.2.5"
checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20
languageName: node
linkType: hard
"yocto-queue@npm:^0.1.0":
version: 0.1.0
resolution: "yocto-queue@npm:0.1.0"
checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
languageName: node
linkType: hard

4
identity-api/.prettierrc Normal file
View file

@ -0,0 +1,4 @@
{
"tabWidth": 4,
"printWidth": 120
}

View file

@ -0,0 +1,4 @@
import globals from "globals";
import pluginJs from "@eslint/js";
export default [{ languageOptions: { globals: globals.node } }, pluginJs.configs.recommended];

View file

@ -1,145 +1,143 @@
import { createVerify } from "node:crypto" import { createVerify } from "node:crypto";
import Fastify from 'fastify'; import Fastify from "fastify";
import * as Jose from 'jose'; import * as Jose from "jose";
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from "uuid";
import assert from "node:assert"; import assert from "node:assert";
const IDENTITY_API_LANDING_MESSAGE = 'identity-api v1.0.0'; const IDENTITY_API_LANDING_MESSAGE = "identity-api v1.0.0";
const JWT_SECRET = new TextEncoder().encode( const JWT_SECRET = new TextEncoder().encode("cc7e0d44fd473002f1c42167459001140ec6389b7353f8088f4d9a95f2f596f2");
'cc7e0d44fd473002f1c42167459001140ec6389b7353f8088f4d9a95f2f596f2', const JWT_ALG = "HS256";
)
const JWT_ALG = 'HS256'
const ASSET_API_ENDPOINT = "http://localhost:3001/" const ASSET_API_ENDPOINT = "http://localhost:3001/";
let ASSET_API_PUBKEY = await loadAssetPubkey() let ASSET_API_PUBKEY = await loadAssetPubkey();
let ASSET_API_ALGORITHM = await loadAssetAlgo() let ASSET_API_ALGORITHM = await loadAssetAlgo();
setInterval(async () => { setInterval(async () => {
try { try {
let pubkey = await loadAssetPubkey() let pubkey = await loadAssetPubkey();
let algo = await loadAssetAlgo() let algo = await loadAssetAlgo();
if (pubkey != null && algo != null) { if (pubkey != null && algo != null) {
if (ASSET_API_PUBKEY !== pubkey) { if (ASSET_API_PUBKEY !== pubkey) {
console.warn("The M2M public key has changed!") console.warn("The M2M public key has changed!");
} }
if (ASSET_API_ALGORITHM !== algo) { if (ASSET_API_ALGORITHM !== algo) {
console.warn("The M2M algorith has changed!") console.warn("The M2M algorith has changed!");
} }
ASSET_API_PUBKEY = pubkey ASSET_API_PUBKEY = pubkey;
ASSET_API_ALGORITHM = algo ASSET_API_ALGORITHM = algo;
console.debug("Successfully updated the M2M public key and algorithm") console.debug("Successfully updated the M2M public key and algorithm");
} }
} catch (e) { } catch (e) {
console.warn("Failed to update the M2M public key", e) console.warn("Failed to update the M2M public key", e);
} }
}, 60 * 1000) }, 60 * 1000);
let session_keys = { let session_keys = {
'uid:005d6417-a23c-48bd-b348-eafeae649b94': 'e381ba8c-e18a-4bca-afce-b212b37bc26b', "uid:005d6417-a23c-48bd-b348-eafeae649b94": "e381ba8c-e18a-4bca-afce-b212b37bc26b",
'key:e381ba8c-e18a-4bca-afce-b212b37bc26b': '005d6417-a23c-48bd-b348-eafeae649b94' "key:e381ba8c-e18a-4bca-afce-b212b37bc26b": "005d6417-a23c-48bd-b348-eafeae649b94",
}; };
let users = { let users = {
'jane@identity.net': { "jane@identity.net": {
uid: '005d6417-a23c-48bd-b348-eafeae649b94', uid: "005d6417-a23c-48bd-b348-eafeae649b94",
email: 'jane@identity.net', email: "jane@identity.net",
password: '12345678901234567890', password: "12345678901234567890",
name: 'Jane Doe', name: "Jane Doe",
assets: ["f9d040d6-598c-4483-952f-08e7d35d5420.jpg"], assets: ["f9d040d6-598c-4483-952f-08e7d35d5420.jpg"],
} },
} };
const fastify = Fastify({ const fastify = Fastify({
logger: true, logger: true,
}) });
fastify.get('/', async (request, reply) => { fastify.get("/", async () => {
return IDENTITY_API_LANDING_MESSAGE; return IDENTITY_API_LANDING_MESSAGE;
}) });
fastify.put("/m2m/asset", { fastify.put("/m2m/asset", {
async handler(request, reply) { async handler(request, reply) {
if (!verifySignature(request.body, ASSET_API_PUBKEY)) { if (!verifySignature(request.body, ASSET_API_PUBKEY)) {
reply.statusCode(401) reply.statusCode(401);
return return;
} }
let body = JSON.parse(getContentFromSigned(request.body)) let body = JSON.parse(getContentFromSigned(request.body));
let uid = session_keys[`key:${body.session_key}`] let uid = session_keys[`key:${body.session_key}`];
let user = Object.values(users).filter(v => v.uid === uid) let user = Object.values(users).filter((v) => v.uid === uid);
assert(user.length === 1) assert(user.length === 1);
users[user[0].email].assets.push(body.asset_id) users[user[0].email].assets.push(body.asset_id);
console.log(users[user[0].email].assets) console.log(users[user[0].email].assets);
} },
}) });
fastify.post("/m2m/account", { fastify.post("/m2m/account", {
async handler(request, reply) { async handler(request, reply) {
if (!verifySignature(request.body, ASSET_API_PUBKEY)) { if (!verifySignature(request.body, ASSET_API_PUBKEY)) {
reply.statusCode(401) reply.statusCode(401);
return return;
} }
let body = JSON.parse(getContentFromSigned(request.body)) let body = JSON.parse(getContentFromSigned(request.body));
let uid = session_keys[`key:${body.session_key}`] let uid = session_keys[`key:${body.session_key}`];
let user = Object.values(users).filter(v => v.uid === uid) let user = Object.values(users).filter((v) => v.uid === uid);
assert(user.length === 1) assert(user.length === 1);
user[0].password = undefined user[0].password = undefined;
return user[0] return user[0];
} },
}) });
fastify.get('/auth/genkey', { fastify.get("/auth/genkey", {
async handler(request, reply) { async handler(request) {
let jwt = request.headers['authorization'].replace('Bearer', '').trim() let jwt = request.headers["authorization"].replace("Bearer", "").trim();
let { payload } = await Jose.jwtVerify(jwt, JWT_SECRET) let { payload } = await Jose.jwtVerify(jwt, JWT_SECRET);
let key = uuidv4() let key = uuidv4();
session_keys[`uid:${payload.uid}`] = key session_keys[`uid:${payload.uid}`] = key;
session_keys[`key:${key}`] = payload.uid session_keys[`key:${key}`] = payload.uid;
return { return {
session_key: session_keys[payload.uid] session_key: session_keys[payload.uid],
} };
}, },
schema: { schema: {
headers: { headers: {
type: 'object', type: "object",
properties: { properties: {
authorization: { type: 'string' }, authorization: { type: "string" },
}, },
}, },
}, },
}) });
fastify.get('/auth/account', { fastify.get("/auth/account", {
async handler(request, reply) { async handler(request) {
let jwt = request.headers['authorization'].replace('Bearer', '').trim() let jwt = request.headers["authorization"].replace("Bearer", "").trim();
let { payload } = await Jose.jwtVerify(jwt, JWT_SECRET) let { payload } = await Jose.jwtVerify(jwt, JWT_SECRET);
let user = users[payload.email] let user = users[payload.email];
user.password = undefined user.password = undefined;
return user return user;
}, },
schema: { schema: {
headers: { headers: {
type: 'object', type: "object",
properties: { properties: {
authorization: { type: 'string' }, authorization: { type: "string" },
}, },
}, },
}, },
}) });
fastify.post('/auth/login', { fastify.post("/auth/login", {
async handler(request, reply) { async handler(request, reply) {
let user = users[request.body.email]; let user = users[request.body.email];
if (user != null && user.password == request.body.password) { if (user != null && user.password == request.body.password) {
@ -150,31 +148,31 @@ fastify.post('/auth/login', {
}) })
.setProtectedHeader({ alg: JWT_ALG }) .setProtectedHeader({ alg: JWT_ALG })
.setIssuedAt() .setIssuedAt()
.setExpirationTime('4w') .setExpirationTime("4w")
.sign(JWT_SECRET); .sign(JWT_SECRET);
return { return {
token, token,
} };
} }
reply.code(400); reply.code(400);
return { return {
error: 'invalid credentials' error: "invalid credentials",
} };
}, },
schema: { schema: {
body: { body: {
type: 'object', type: "object",
properties: { properties: {
email: { type: 'string' }, email: { type: "string" },
password: { type: 'string' }, password: { type: "string" },
}, },
}, },
}, },
}) });
fastify.post('/auth/register', { fastify.post("/auth/register", {
async handler(request, reply) { async handler(request, reply) {
if (users[request.body.email] == null) { if (users[request.body.email] == null) {
users[request.body.email] = { users[request.body.email] = {
@ -183,9 +181,9 @@ fastify.post('/auth/register', {
password: request.body.password, password: request.body.password,
name: request.body.name, name: request.body.name,
assets: [], assets: [],
} };
let user = users[request.body.email] let user = users[request.body.email];
let token = await new Jose.SignJWT({ let token = await new Jose.SignJWT({
uid: user.uid, uid: user.uid,
email: request.body.email, email: request.body.email,
@ -193,45 +191,45 @@ fastify.post('/auth/register', {
}) })
.setProtectedHeader({ alg: JWT_ALG }) .setProtectedHeader({ alg: JWT_ALG })
.setIssuedAt() .setIssuedAt()
.setExpirationTime('4w') .setExpirationTime("4w")
.sign(JWT_SECRET); .sign(JWT_SECRET);
return { token } return { token };
} }
reply.code(400); reply.code(400);
return { return {
error: 'invalid data' error: "invalid data",
} };
}, },
schema: { schema: {
body: { body: {
type: 'object', type: "object",
properties: { properties: {
name: { type: 'string' }, name: { type: "string" },
email: { type: 'string' }, email: { type: "string" },
password: { type: 'string' }, password: { type: "string" },
}, },
}, },
}, },
}) });
fastify.listen({ port: 3000 }) fastify.listen({ port: 3000 });
async function loadAssetPubkey() { async function loadAssetPubkey() {
let url = new URL(ASSET_API_ENDPOINT) let url = new URL(ASSET_API_ENDPOINT);
url.pathname = "/crypto/cert" url.pathname = "/crypto/cert";
let res = await fetch(url) let res = await fetch(url);
return await res.text() return await res.text();
} }
async function loadAssetAlgo() { async function loadAssetAlgo() {
let url = new URL(ASSET_API_ENDPOINT) let url = new URL(ASSET_API_ENDPOINT);
url.pathname = "/crypto/algo" url.pathname = "/crypto/algo";
let res = await fetch(url) let res = await fetch(url);
return await res.text() return await res.text();
} }
/** /**
@ -243,26 +241,26 @@ function verifySignature(content, pubkeyText) {
let parts = content let parts = content
.replace("-----BEGIN SIGNED MESSAGE-----\n\n", "") .replace("-----BEGIN SIGNED MESSAGE-----\n\n", "")
.replace("\n-----END SIGNATURE-----", "") .replace("\n-----END SIGNATURE-----", "")
.split("\n\n-----BEGIN SIGNATURE-----\n\n") .split("\n\n-----BEGIN SIGNATURE-----\n\n");
assert(parts.length === 2); assert(parts.length === 2);
let verify = createVerify(ASSET_API_ALGORITHM) let verify = createVerify(ASSET_API_ALGORITHM);
verify.update(parts[0]) verify.update(parts[0]);
let pubkey = Buffer.from(pubkeyText, "ascii") let pubkey = Buffer.from(pubkeyText, "ascii");
let digest = Buffer.from(parts[1], "base64") let digest = Buffer.from(parts[1], "base64");
return verify.verify(pubkey, digest) return verify.verify(pubkey, digest);
} }
function getContentFromSigned(content) { function getContentFromSigned(content) {
let parts = content let parts = content
.replace("-----BEGIN SIGNED MESSAGE-----\n\n", "") .replace("-----BEGIN SIGNED MESSAGE-----\n\n", "")
.replace("\n-----END SIGNATURE-----", "") .replace("\n-----END SIGNATURE-----", "")
.split("\n\n-----BEGIN SIGNATURE-----\n\n") .split("\n\n-----BEGIN SIGNATURE-----\n\n");
assert(parts.length === 2); assert(parts.length === 2);
return parts[0] return parts[0];
} }

View file

@ -1,17 +1,25 @@
{ {
"name": "identity-api", "name": "identity-api",
"version": "1.0.0", "version": "1.0.0",
"main": "index.js", "main": "index.js",
"license": "MIT", "license": "MIT",
"private": true, "private": true,
"type": "module", "type": "module",
"packageManager": "yarn@4.3.0", "packageManager": "yarn@4.3.0",
"dependencies": { "dependencies": {
"fastify": "^4.27.0", "fastify": "^4.27.0",
"jose": "^5.4.0", "jose": "^5.4.0",
"uuid": "^10.0.0" "uuid": "^10.0.0"
}, },
"scripts": { "scripts": {
"start": "node index.js" "start": "node index.js",
} "lint:fix": "eslint --fix && prettier . --write",
"lint": "eslint && prettier . --check"
},
"devDependencies": {
"@eslint/js": "^9.5.0",
"eslint": "9.x",
"globals": "^15.5.0",
"prettier": "3.3.2"
}
} }

View file

@ -5,6 +5,66 @@ __metadata:
version: 8 version: 8
cacheKey: 10c0 cacheKey: 10c0
"@eslint-community/eslint-utils@npm:^4.2.0":
version: 4.4.0
resolution: "@eslint-community/eslint-utils@npm:4.4.0"
dependencies:
eslint-visitor-keys: "npm:^3.3.0"
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e
languageName: node
linkType: hard
"@eslint-community/regexpp@npm:^4.6.1":
version: 4.10.1
resolution: "@eslint-community/regexpp@npm:4.10.1"
checksum: 10c0/f59376025d0c91dd9fdf18d33941df499292a3ecba3e9889c360f3f6590197d30755604588786cdca0f9030be315a26b206014af4b65c0ff85b4ec49043de780
languageName: node
linkType: hard
"@eslint/config-array@npm:^0.16.0":
version: 0.16.0
resolution: "@eslint/config-array@npm:0.16.0"
dependencies:
"@eslint/object-schema": "npm:^2.1.4"
debug: "npm:^4.3.1"
minimatch: "npm:^3.0.5"
checksum: 10c0/b9d04409151dc95ec6b5e04e1e185a808d58e18cfc7340adc1e9420a5ff15843a0a308fb2cd9a2b354652885c2bebbcd5515814e93e9c9133f423891b6e53c70
languageName: node
linkType: hard
"@eslint/eslintrc@npm:^3.1.0":
version: 3.1.0
resolution: "@eslint/eslintrc@npm:3.1.0"
dependencies:
ajv: "npm:^6.12.4"
debug: "npm:^4.3.2"
espree: "npm:^10.0.1"
globals: "npm:^14.0.0"
ignore: "npm:^5.2.0"
import-fresh: "npm:^3.2.1"
js-yaml: "npm:^4.1.0"
minimatch: "npm:^3.1.2"
strip-json-comments: "npm:^3.1.1"
checksum: 10c0/5b7332ed781edcfc98caa8dedbbb843abfb9bda2e86538529c843473f580e40c69eb894410eddc6702f487e9ee8f8cfa8df83213d43a8fdb549f23ce06699167
languageName: node
linkType: hard
"@eslint/js@npm:9.5.0, @eslint/js@npm:^9.5.0":
version: 9.5.0
resolution: "@eslint/js@npm:9.5.0"
checksum: 10c0/dacf51ec2d5b4c8d1315d21a0ff761235d9e39b2391cb945138c58dc512a6c18949c40b644235f5c4fdf5b637ef8f881214acc496dddf46b718529bf22af42ac
languageName: node
linkType: hard
"@eslint/object-schema@npm:^2.1.4":
version: 2.1.4
resolution: "@eslint/object-schema@npm:2.1.4"
checksum: 10c0/e9885532ea70e483fb007bf1275968b05bb15ebaa506d98560c41a41220d33d342e19023d5f2939fed6eb59676c1bda5c847c284b4b55fce521d282004da4dda
languageName: node
linkType: hard
"@fastify/ajv-compiler@npm:^3.5.0": "@fastify/ajv-compiler@npm:^3.5.0":
version: 3.5.0 version: 3.5.0
resolution: "@fastify/ajv-compiler@npm:3.5.0" resolution: "@fastify/ajv-compiler@npm:3.5.0"
@ -41,6 +101,47 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@humanwhocodes/module-importer@npm:^1.0.1":
version: 1.0.1
resolution: "@humanwhocodes/module-importer@npm:1.0.1"
checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529
languageName: node
linkType: hard
"@humanwhocodes/retry@npm:^0.3.0":
version: 0.3.0
resolution: "@humanwhocodes/retry@npm:0.3.0"
checksum: 10c0/7111ec4e098b1a428459b4e3be5a5d2a13b02905f805a2468f4fa628d072f0de2da26a27d04f65ea2846f73ba51f4204661709f05bfccff645e3cedef8781bb6
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
dependencies:
"@nodelib/fs.stat": "npm:2.0.5"
run-parallel: "npm:^1.1.9"
checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb
languageName: node
linkType: hard
"@nodelib/fs.stat@npm:2.0.5":
version: 2.0.5
resolution: "@nodelib/fs.stat@npm:2.0.5"
checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d
languageName: node
linkType: hard
"@nodelib/fs.walk@npm:^1.2.8":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
"@nodelib/fs.scandir": "npm:2.1.5"
fastq: "npm:^1.6.0"
checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1
languageName: node
linkType: hard
"abort-controller@npm:^3.0.0": "abort-controller@npm:^3.0.0":
version: 3.0.0 version: 3.0.0
resolution: "abort-controller@npm:3.0.0" resolution: "abort-controller@npm:3.0.0"
@ -57,6 +158,24 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"acorn-jsx@npm:^5.3.2":
version: 5.3.2
resolution: "acorn-jsx@npm:5.3.2"
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1
languageName: node
linkType: hard
"acorn@npm:^8.11.3":
version: 8.12.0
resolution: "acorn@npm:8.12.0"
bin:
acorn: bin/acorn
checksum: 10c0/a19f9dead009d3b430fa3c253710b47778cdaace15b316de6de93a68c355507bc1072a9956372b6c990cbeeb167d4a929249d0faeb8ae4bb6911d68d53299549
languageName: node
linkType: hard
"ajv-formats@npm:^2.1.1": "ajv-formats@npm:^2.1.1":
version: 2.1.1 version: 2.1.1
resolution: "ajv-formats@npm:2.1.1" resolution: "ajv-formats@npm:2.1.1"
@ -85,6 +204,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ajv@npm:^6.12.4":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
fast-deep-equal: "npm:^3.1.1"
fast-json-stable-stringify: "npm:^2.0.0"
json-schema-traverse: "npm:^0.4.1"
uri-js: "npm:^4.2.2"
checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71
languageName: node
linkType: hard
"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0": "ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0":
version: 8.16.0 version: 8.16.0
resolution: "ajv@npm:8.16.0" resolution: "ajv@npm:8.16.0"
@ -97,6 +228,29 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ansi-regex@npm:^5.0.1":
version: 5.0.1
resolution: "ansi-regex@npm:5.0.1"
checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737
languageName: node
linkType: hard
"ansi-styles@npm:^4.1.0":
version: 4.3.0
resolution: "ansi-styles@npm:4.3.0"
dependencies:
color-convert: "npm:^2.0.1"
checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041
languageName: node
linkType: hard
"argparse@npm:^2.0.1":
version: 2.0.1
resolution: "argparse@npm:2.0.1"
checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e
languageName: node
linkType: hard
"atomic-sleep@npm:^1.0.0": "atomic-sleep@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "atomic-sleep@npm:1.0.0" resolution: "atomic-sleep@npm:1.0.0"
@ -114,6 +268,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee
languageName: node
linkType: hard
"base64-js@npm:^1.3.1": "base64-js@npm:^1.3.1":
version: 1.5.1 version: 1.5.1
resolution: "base64-js@npm:1.5.1" resolution: "base64-js@npm:1.5.1"
@ -121,6 +282,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
dependencies:
balanced-match: "npm:^1.0.0"
concat-map: "npm:0.0.1"
checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668
languageName: node
linkType: hard
"buffer@npm:^6.0.3": "buffer@npm:^6.0.3":
version: 6.0.3 version: 6.0.3
resolution: "buffer@npm:6.0.3" resolution: "buffer@npm:6.0.3"
@ -131,6 +302,46 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"callsites@npm:^3.0.0":
version: 3.1.0
resolution: "callsites@npm:3.1.0"
checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301
languageName: node
linkType: hard
"chalk@npm:^4.0.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
ansi-styles: "npm:^4.1.0"
supports-color: "npm:^7.1.0"
checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880
languageName: node
linkType: hard
"color-convert@npm:^2.0.1":
version: 2.0.1
resolution: "color-convert@npm:2.0.1"
dependencies:
color-name: "npm:~1.1.4"
checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7
languageName: node
linkType: hard
"color-name@npm:~1.1.4":
version: 1.1.4
resolution: "color-name@npm:1.1.4"
checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
languageName: node
linkType: hard
"concat-map@npm:0.0.1":
version: 0.0.1
resolution: "concat-map@npm:0.0.1"
checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
languageName: node
linkType: hard
"cookie@npm:^0.6.0": "cookie@npm:^0.6.0":
version: 0.6.0 version: 0.6.0
resolution: "cookie@npm:0.6.0" resolution: "cookie@npm:0.6.0"
@ -138,6 +349,154 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cross-spawn@npm:^7.0.2":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
dependencies:
path-key: "npm:^3.1.0"
shebang-command: "npm:^2.0.0"
which: "npm:^2.0.1"
checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750
languageName: node
linkType: hard
"debug@npm:^4.3.1, debug@npm:^4.3.2":
version: 4.3.5
resolution: "debug@npm:4.3.5"
dependencies:
ms: "npm:2.1.2"
peerDependenciesMeta:
supports-color:
optional: true
checksum: 10c0/082c375a2bdc4f4469c99f325ff458adad62a3fc2c482d59923c260cb08152f34e2659f72b3767db8bb2f21ca81a60a42d1019605a412132d7b9f59363a005cc
languageName: node
linkType: hard
"deep-is@npm:^0.1.3":
version: 0.1.4
resolution: "deep-is@npm:0.1.4"
checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c
languageName: node
linkType: hard
"escape-string-regexp@npm:^4.0.0":
version: 4.0.0
resolution: "escape-string-regexp@npm:4.0.0"
checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9
languageName: node
linkType: hard
"eslint-scope@npm:^8.0.1":
version: 8.0.1
resolution: "eslint-scope@npm:8.0.1"
dependencies:
esrecurse: "npm:^4.3.0"
estraverse: "npm:^5.2.0"
checksum: 10c0/0ec40ab284e58ac7ef064ecd23c127e03d339fa57173c96852336c73afc70ce5631da21dc1c772415a37a421291845538dd69db83c68d611044c0fde1d1fa269
languageName: node
linkType: hard
"eslint-visitor-keys@npm:^3.3.0":
version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3"
checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820
languageName: node
linkType: hard
"eslint-visitor-keys@npm:^4.0.0":
version: 4.0.0
resolution: "eslint-visitor-keys@npm:4.0.0"
checksum: 10c0/76619f42cf162705a1515a6868e6fc7567e185c7063a05621a8ac4c3b850d022661262c21d9f1fc1d144ecf0d5d64d70a3f43c15c3fc969a61ace0fb25698cf5
languageName: node
linkType: hard
"eslint@npm:9.x":
version: 9.5.0
resolution: "eslint@npm:9.5.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.2.0"
"@eslint-community/regexpp": "npm:^4.6.1"
"@eslint/config-array": "npm:^0.16.0"
"@eslint/eslintrc": "npm:^3.1.0"
"@eslint/js": "npm:9.5.0"
"@humanwhocodes/module-importer": "npm:^1.0.1"
"@humanwhocodes/retry": "npm:^0.3.0"
"@nodelib/fs.walk": "npm:^1.2.8"
ajv: "npm:^6.12.4"
chalk: "npm:^4.0.0"
cross-spawn: "npm:^7.0.2"
debug: "npm:^4.3.2"
escape-string-regexp: "npm:^4.0.0"
eslint-scope: "npm:^8.0.1"
eslint-visitor-keys: "npm:^4.0.0"
espree: "npm:^10.0.1"
esquery: "npm:^1.5.0"
esutils: "npm:^2.0.2"
fast-deep-equal: "npm:^3.1.3"
file-entry-cache: "npm:^8.0.0"
find-up: "npm:^5.0.0"
glob-parent: "npm:^6.0.2"
ignore: "npm:^5.2.0"
imurmurhash: "npm:^0.1.4"
is-glob: "npm:^4.0.0"
is-path-inside: "npm:^3.0.3"
json-stable-stringify-without-jsonify: "npm:^1.0.1"
levn: "npm:^0.4.1"
lodash.merge: "npm:^4.6.2"
minimatch: "npm:^3.1.2"
natural-compare: "npm:^1.4.0"
optionator: "npm:^0.9.3"
strip-ansi: "npm:^6.0.1"
text-table: "npm:^0.2.0"
bin:
eslint: bin/eslint.js
checksum: 10c0/1c83d94ccfd6d97474aaaf463714eba7afa040639ad9191db430d34e9e2851ba14510651de69b52f26ee30611caf0fa4c66b3fb73bb71df6ab10cef5bb44bb32
languageName: node
linkType: hard
"espree@npm:^10.0.1":
version: 10.0.1
resolution: "espree@npm:10.0.1"
dependencies:
acorn: "npm:^8.11.3"
acorn-jsx: "npm:^5.3.2"
eslint-visitor-keys: "npm:^4.0.0"
checksum: 10c0/7c0f84afa0f9db7bb899619e6364ed832ef13fe8943691757ddde9a1805ae68b826ed66803323015f707a629a5507d0d290edda2276c25131fe0ad883b8b5636
languageName: node
linkType: hard
"esquery@npm:^1.5.0":
version: 1.5.0
resolution: "esquery@npm:1.5.0"
dependencies:
estraverse: "npm:^5.1.0"
checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213
languageName: node
linkType: hard
"esrecurse@npm:^4.3.0":
version: 4.3.0
resolution: "esrecurse@npm:4.3.0"
dependencies:
estraverse: "npm:^5.2.0"
checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5
languageName: node
linkType: hard
"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0":
version: 5.3.0
resolution: "estraverse@npm:5.3.0"
checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107
languageName: node
linkType: hard
"esutils@npm:^2.0.2":
version: 2.0.3
resolution: "esutils@npm:2.0.3"
checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7
languageName: node
linkType: hard
"event-target-shim@npm:^5.0.0": "event-target-shim@npm:^5.0.0":
version: 5.0.1 version: 5.0.1
resolution: "event-target-shim@npm:5.0.1" resolution: "event-target-shim@npm:5.0.1"
@ -166,13 +525,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fast-deep-equal@npm:^3.1.3": "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3 version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3" resolution: "fast-deep-equal@npm:3.1.3"
checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
languageName: node languageName: node
linkType: hard linkType: hard
"fast-json-stable-stringify@npm:^2.0.0":
version: 2.1.0
resolution: "fast-json-stable-stringify@npm:2.1.0"
checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b
languageName: node
linkType: hard
"fast-json-stringify@npm:^5.7.0, fast-json-stringify@npm:^5.8.0": "fast-json-stringify@npm:^5.7.0, fast-json-stringify@npm:^5.8.0":
version: 5.16.0 version: 5.16.0
resolution: "fast-json-stringify@npm:5.16.0" resolution: "fast-json-stringify@npm:5.16.0"
@ -188,6 +554,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fast-levenshtein@npm:^2.0.6":
version: 2.0.6
resolution: "fast-levenshtein@npm:2.0.6"
checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
languageName: node
linkType: hard
"fast-querystring@npm:^1.0.0": "fast-querystring@npm:^1.0.0":
version: 1.1.2 version: 1.1.2
resolution: "fast-querystring@npm:1.1.2" resolution: "fast-querystring@npm:1.1.2"
@ -235,7 +608,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fastq@npm:^1.17.1": "fastq@npm:^1.17.1, fastq@npm:^1.6.0":
version: 1.17.1 version: 1.17.1
resolution: "fastq@npm:1.17.1" resolution: "fastq@npm:1.17.1"
dependencies: dependencies:
@ -244,6 +617,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"file-entry-cache@npm:^8.0.0":
version: 8.0.0
resolution: "file-entry-cache@npm:8.0.0"
dependencies:
flat-cache: "npm:^4.0.0"
checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638
languageName: node
linkType: hard
"find-my-way@npm:^8.0.0": "find-my-way@npm:^8.0.0":
version: 8.2.0 version: 8.2.0
resolution: "find-my-way@npm:8.2.0" resolution: "find-my-way@npm:8.2.0"
@ -255,6 +637,33 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"find-up@npm:^5.0.0":
version: 5.0.0
resolution: "find-up@npm:5.0.0"
dependencies:
locate-path: "npm:^6.0.0"
path-exists: "npm:^4.0.0"
checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a
languageName: node
linkType: hard
"flat-cache@npm:^4.0.0":
version: 4.0.1
resolution: "flat-cache@npm:4.0.1"
dependencies:
flatted: "npm:^3.2.9"
keyv: "npm:^4.5.4"
checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc
languageName: node
linkType: hard
"flatted@npm:^3.2.9":
version: 3.3.1
resolution: "flatted@npm:3.3.1"
checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf
languageName: node
linkType: hard
"forwarded@npm:0.2.0": "forwarded@npm:0.2.0":
version: 0.2.0 version: 0.2.0
resolution: "forwarded@npm:0.2.0" resolution: "forwarded@npm:0.2.0"
@ -262,12 +671,46 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"glob-parent@npm:^6.0.2":
version: 6.0.2
resolution: "glob-parent@npm:6.0.2"
dependencies:
is-glob: "npm:^4.0.3"
checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8
languageName: node
linkType: hard
"globals@npm:^14.0.0":
version: 14.0.0
resolution: "globals@npm:14.0.0"
checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d
languageName: node
linkType: hard
"globals@npm:^15.5.0":
version: 15.5.0
resolution: "globals@npm:15.5.0"
checksum: 10c0/f13c3cb0c6d49b9d23e447b86e33ca6139753087060c3063863c0dd2b5d79f4a114c48d20e321916e6c3701adb3f6b67d6ac8d8ed2bae6da45482c968532d4e2
languageName: node
linkType: hard
"has-flag@npm:^4.0.0":
version: 4.0.0
resolution: "has-flag@npm:4.0.0"
checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1
languageName: node
linkType: hard
"identity-api@workspace:.": "identity-api@workspace:.":
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "identity-api@workspace:." resolution: "identity-api@workspace:."
dependencies: dependencies:
"@eslint/js": "npm:^9.5.0"
eslint: "npm:9.x"
fastify: "npm:^4.27.0" fastify: "npm:^4.27.0"
globals: "npm:^15.5.0"
jose: "npm:^5.4.0" jose: "npm:^5.4.0"
prettier: "npm:3.3.2"
uuid: "npm:^10.0.0" uuid: "npm:^10.0.0"
languageName: unknown languageName: unknown
linkType: soft linkType: soft
@ -279,6 +722,30 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ignore@npm:^5.2.0":
version: 5.3.1
resolution: "ignore@npm:5.3.1"
checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd
languageName: node
linkType: hard
"import-fresh@npm:^3.2.1":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
dependencies:
parent-module: "npm:^1.0.0"
resolve-from: "npm:^4.0.0"
checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3
languageName: node
linkType: hard
"imurmurhash@npm:^0.1.4":
version: 0.1.4
resolution: "imurmurhash@npm:0.1.4"
checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6
languageName: node
linkType: hard
"ipaddr.js@npm:1.9.1": "ipaddr.js@npm:1.9.1":
version: 1.9.1 version: 1.9.1
resolution: "ipaddr.js@npm:1.9.1" resolution: "ipaddr.js@npm:1.9.1"
@ -286,6 +753,36 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912
languageName: node
linkType: hard
"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
dependencies:
is-extglob: "npm:^2.1.1"
checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a
languageName: node
linkType: hard
"is-path-inside@npm:^3.0.3":
version: 3.0.3
resolution: "is-path-inside@npm:3.0.3"
checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05
languageName: node
linkType: hard
"isexe@npm:^2.0.0":
version: 2.0.0
resolution: "isexe@npm:2.0.0"
checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d
languageName: node
linkType: hard
"jose@npm:^5.4.0": "jose@npm:^5.4.0":
version: 5.4.0 version: 5.4.0
resolution: "jose@npm:5.4.0" resolution: "jose@npm:5.4.0"
@ -293,6 +790,24 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"js-yaml@npm:^4.1.0":
version: 4.1.0
resolution: "js-yaml@npm:4.1.0"
dependencies:
argparse: "npm:^2.0.1"
bin:
js-yaml: bin/js-yaml.js
checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f
languageName: node
linkType: hard
"json-buffer@npm:3.0.1":
version: 3.0.1
resolution: "json-buffer@npm:3.0.1"
checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7
languageName: node
linkType: hard
"json-schema-ref-resolver@npm:^1.0.1": "json-schema-ref-resolver@npm:^1.0.1":
version: 1.0.1 version: 1.0.1
resolution: "json-schema-ref-resolver@npm:1.0.1" resolution: "json-schema-ref-resolver@npm:1.0.1"
@ -302,6 +817,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"json-schema-traverse@npm:^0.4.1":
version: 0.4.1
resolution: "json-schema-traverse@npm:0.4.1"
checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce
languageName: node
linkType: hard
"json-schema-traverse@npm:^1.0.0": "json-schema-traverse@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "json-schema-traverse@npm:1.0.0" resolution: "json-schema-traverse@npm:1.0.0"
@ -309,6 +831,32 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"json-stable-stringify-without-jsonify@npm:^1.0.1":
version: 1.0.1
resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5
languageName: node
linkType: hard
"keyv@npm:^4.5.4":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
dependencies:
json-buffer: "npm:3.0.1"
checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e
languageName: node
linkType: hard
"levn@npm:^0.4.1":
version: 0.4.1
resolution: "levn@npm:0.4.1"
dependencies:
prelude-ls: "npm:^1.2.1"
type-check: "npm:~0.4.0"
checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
languageName: node
linkType: hard
"light-my-request@npm:^5.11.0": "light-my-request@npm:^5.11.0":
version: 5.13.0 version: 5.13.0
resolution: "light-my-request@npm:5.13.0" resolution: "light-my-request@npm:5.13.0"
@ -320,6 +868,45 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"locate-path@npm:^6.0.0":
version: 6.0.0
resolution: "locate-path@npm:6.0.0"
dependencies:
p-locate: "npm:^5.0.0"
checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3
languageName: node
linkType: hard
"lodash.merge@npm:^4.6.2":
version: 4.6.2
resolution: "lodash.merge@npm:4.6.2"
checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506
languageName: node
linkType: hard
"minimatch@npm:^3.0.5, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
brace-expansion: "npm:^1.1.7"
checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311
languageName: node
linkType: hard
"ms@npm:2.1.2":
version: 2.1.2
resolution: "ms@npm:2.1.2"
checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc
languageName: node
linkType: hard
"natural-compare@npm:^1.4.0":
version: 1.4.0
resolution: "natural-compare@npm:1.4.0"
checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447
languageName: node
linkType: hard
"on-exit-leak-free@npm:^2.1.0": "on-exit-leak-free@npm:^2.1.0":
version: 2.1.2 version: 2.1.2
resolution: "on-exit-leak-free@npm:2.1.2" resolution: "on-exit-leak-free@npm:2.1.2"
@ -327,6 +914,61 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"optionator@npm:^0.9.3":
version: 0.9.4
resolution: "optionator@npm:0.9.4"
dependencies:
deep-is: "npm:^0.1.3"
fast-levenshtein: "npm:^2.0.6"
levn: "npm:^0.4.1"
prelude-ls: "npm:^1.2.1"
type-check: "npm:^0.4.0"
word-wrap: "npm:^1.2.5"
checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675
languageName: node
linkType: hard
"p-limit@npm:^3.0.2":
version: 3.1.0
resolution: "p-limit@npm:3.1.0"
dependencies:
yocto-queue: "npm:^0.1.0"
checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a
languageName: node
linkType: hard
"p-locate@npm:^5.0.0":
version: 5.0.0
resolution: "p-locate@npm:5.0.0"
dependencies:
p-limit: "npm:^3.0.2"
checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a
languageName: node
linkType: hard
"parent-module@npm:^1.0.0":
version: 1.0.1
resolution: "parent-module@npm:1.0.1"
dependencies:
callsites: "npm:^3.0.0"
checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556
languageName: node
linkType: hard
"path-exists@npm:^4.0.0":
version: 4.0.0
resolution: "path-exists@npm:4.0.0"
checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
languageName: node
linkType: hard
"path-key@npm:^3.1.0":
version: 3.1.1
resolution: "path-key@npm:3.1.1"
checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c
languageName: node
linkType: hard
"pino-abstract-transport@npm:^1.2.0": "pino-abstract-transport@npm:^1.2.0":
version: 1.2.0 version: 1.2.0
resolution: "pino-abstract-transport@npm:1.2.0" resolution: "pino-abstract-transport@npm:1.2.0"
@ -365,6 +1007,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"prelude-ls@npm:^1.2.1":
version: 1.2.1
resolution: "prelude-ls@npm:1.2.1"
checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd
languageName: node
linkType: hard
"prettier@npm:3.3.2":
version: 3.3.2
resolution: "prettier@npm:3.3.2"
bin:
prettier: bin/prettier.cjs
checksum: 10c0/39ed27d17f0238da6dd6571d63026566bd790d3d0edac57c285fbab525982060c8f1e01955fe38134ab10f0951a6076da37f015db8173c02f14bc7f0803a384c
languageName: node
linkType: hard
"process-warning@npm:^3.0.0": "process-warning@npm:^3.0.0":
version: 3.0.0 version: 3.0.0
resolution: "process-warning@npm:3.0.0" resolution: "process-warning@npm:3.0.0"
@ -396,6 +1054,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"queue-microtask@npm:^1.2.2":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102
languageName: node
linkType: hard
"quick-format-unescaped@npm:^4.0.3": "quick-format-unescaped@npm:^4.0.3":
version: 4.0.4 version: 4.0.4
resolution: "quick-format-unescaped@npm:4.0.4" resolution: "quick-format-unescaped@npm:4.0.4"
@ -430,6 +1095,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"resolve-from@npm:^4.0.0":
version: 4.0.0
resolution: "resolve-from@npm:4.0.0"
checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190
languageName: node
linkType: hard
"ret@npm:~0.4.0": "ret@npm:~0.4.0":
version: 0.4.3 version: 0.4.3
resolution: "ret@npm:0.4.3" resolution: "ret@npm:0.4.3"
@ -451,6 +1123,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
dependencies:
queue-microtask: "npm:^1.2.2"
checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39
languageName: node
linkType: hard
"safe-buffer@npm:~5.2.0": "safe-buffer@npm:~5.2.0":
version: 5.2.1 version: 5.2.1
resolution: "safe-buffer@npm:5.2.1" resolution: "safe-buffer@npm:5.2.1"
@ -497,6 +1178,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
dependencies:
shebang-regex: "npm:^3.0.0"
checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e
languageName: node
linkType: hard
"shebang-regex@npm:^3.0.0":
version: 3.0.0
resolution: "shebang-regex@npm:3.0.0"
checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690
languageName: node
linkType: hard
"sonic-boom@npm:^4.0.1": "sonic-boom@npm:^4.0.1":
version: 4.0.1 version: 4.0.1
resolution: "sonic-boom@npm:4.0.1" resolution: "sonic-boom@npm:4.0.1"
@ -522,6 +1219,38 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"strip-ansi@npm:^6.0.1":
version: 6.0.1
resolution: "strip-ansi@npm:6.0.1"
dependencies:
ansi-regex: "npm:^5.0.1"
checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952
languageName: node
linkType: hard
"strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd
languageName: node
linkType: hard
"supports-color@npm:^7.1.0":
version: 7.2.0
resolution: "supports-color@npm:7.2.0"
dependencies:
has-flag: "npm:^4.0.0"
checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124
languageName: node
linkType: hard
"text-table@npm:^0.2.0":
version: 0.2.0
resolution: "text-table@npm:0.2.0"
checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c
languageName: node
linkType: hard
"thread-stream@npm:^3.0.0": "thread-stream@npm:^3.0.0":
version: 3.0.2 version: 3.0.2
resolution: "thread-stream@npm:3.0.2" resolution: "thread-stream@npm:3.0.2"
@ -538,7 +1267,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"uri-js@npm:^4.4.1": "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0
resolution: "type-check@npm:0.4.0"
dependencies:
prelude-ls: "npm:^1.2.1"
checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
languageName: node
linkType: hard
"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1":
version: 4.4.1 version: 4.4.1
resolution: "uri-js@npm:4.4.1" resolution: "uri-js@npm:4.4.1"
dependencies: dependencies:
@ -555,3 +1293,28 @@ __metadata:
checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe
languageName: node languageName: node
linkType: hard linkType: hard
"which@npm:^2.0.1":
version: 2.0.2
resolution: "which@npm:2.0.2"
dependencies:
isexe: "npm:^2.0.0"
bin:
node-which: ./bin/node-which
checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f
languageName: node
linkType: hard
"word-wrap@npm:^1.2.5":
version: 1.2.5
resolution: "word-wrap@npm:1.2.5"
checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20
languageName: node
linkType: hard
"yocto-queue@npm:^0.1.0":
version: 0.1.0
resolution: "yocto-queue@npm:0.1.0"
checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
languageName: node
linkType: hard