atproto pastebin service: https://plonk.li

init

oppi.li b2b4b71f

+26
.gitignore
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + pnpm-debug.log* 8 + lerna-debug.log* 9 + 10 + coverage 11 + node_modules 12 + dist 13 + build 14 + dist-ssr 15 + *.local 16 + .env 17 + 18 + # Editor directories and files 19 + !.vscode/extensions.json 20 + .idea 21 + .DS_Store 22 + *.suo 23 + *.ntvs* 24 + *.njsproj 25 + *.sln 26 + *.sw?
+27
flake.lock
··· 1 + { 2 + "nodes": { 3 + "nixpkgs": { 4 + "locked": { 5 + "lastModified": 1733064805, 6 + "narHash": "sha256-7NbtSLfZO0q7MXPl5hzA0sbVJt6pWxxtGWbaVUDDmjs=", 7 + "owner": "nixos", 8 + "repo": "nixpkgs", 9 + "rev": "31d66ae40417bb13765b0ad75dd200400e98de84", 10 + "type": "github" 11 + }, 12 + "original": { 13 + "owner": "nixos", 14 + "ref": "nixpkgs-unstable", 15 + "repo": "nixpkgs", 16 + "type": "github" 17 + } 18 + }, 19 + "root": { 20 + "inputs": { 21 + "nixpkgs": "nixpkgs" 22 + } 23 + } 24 + }, 25 + "root": "root", 26 + "version": 7 27 + }
+30
flake.nix
··· 1 + { 2 + inputs = { 3 + nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 4 + }; 5 + 6 + outputs = { 7 + self, 8 + nixpkgs, 9 + }: let 10 + supportedSystems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin"]; 11 + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; 12 + nixpkgsFor = forAllSystems (system: 13 + import nixpkgs { inherit system; }); 14 + in { 15 + 16 + devShell = forAllSystems (system: let 17 + pkgs = nixpkgsFor."${system}"; 18 + in 19 + pkgs.mkShell { 20 + nativeBuildInputs = [ 21 + pkgs.nodejs 22 + pkgs.biome 23 + pkgs.typescript 24 + pkgs.nodePackages.typescript-language-server 25 + ]; 26 + }); 27 + 28 + formatter = forAllSystems (system: nixpkgsFor."${system}".alejandra); 29 + }; 30 + }
+156
lexicons/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.label.defs", 4 + "defs": { 5 + "label": { 6 + "type": "object", 7 + "description": "Metadata tag on an atproto resource (eg, repo or record).", 8 + "required": ["src", "uri", "val", "cts"], 9 + "properties": { 10 + "ver": { 11 + "type": "integer", 12 + "description": "The AT Protocol version of the label object." 13 + }, 14 + "src": { 15 + "type": "string", 16 + "format": "did", 17 + "description": "DID of the actor who created this label." 18 + }, 19 + "uri": { 20 + "type": "string", 21 + "format": "uri", 22 + "description": "AT URI of the record, repository (account), or other resource that this label applies to." 23 + }, 24 + "cid": { 25 + "type": "string", 26 + "format": "cid", 27 + "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to." 28 + }, 29 + "val": { 30 + "type": "string", 31 + "maxLength": 128, 32 + "description": "The short string name of the value or type of this label." 33 + }, 34 + "neg": { 35 + "type": "boolean", 36 + "description": "If true, this is a negation label, overwriting a previous label." 37 + }, 38 + "cts": { 39 + "type": "string", 40 + "format": "datetime", 41 + "description": "Timestamp when this label was created." 42 + }, 43 + "exp": { 44 + "type": "string", 45 + "format": "datetime", 46 + "description": "Timestamp at which this label expires (no longer applies)." 47 + }, 48 + "sig": { 49 + "type": "bytes", 50 + "description": "Signature of dag-cbor encoded label." 51 + } 52 + } 53 + }, 54 + "selfLabels": { 55 + "type": "object", 56 + "description": "Metadata tags on an atproto record, published by the author within the record.", 57 + "required": ["values"], 58 + "properties": { 59 + "values": { 60 + "type": "array", 61 + "items": { "type": "ref", "ref": "#selfLabel" }, 62 + "maxLength": 10 63 + } 64 + } 65 + }, 66 + "selfLabel": { 67 + "type": "object", 68 + "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.", 69 + "required": ["val"], 70 + "properties": { 71 + "val": { 72 + "type": "string", 73 + "maxLength": 128, 74 + "description": "The short string name of the value or type of this label." 75 + } 76 + } 77 + }, 78 + "labelValueDefinition": { 79 + "type": "object", 80 + "description": "Declares a label value and its expected interpretations and behaviors.", 81 + "required": ["identifier", "severity", "blurs", "locales"], 82 + "properties": { 83 + "identifier": { 84 + "type": "string", 85 + "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", 86 + "maxLength": 100, 87 + "maxGraphemes": 100 88 + }, 89 + "severity": { 90 + "type": "string", 91 + "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", 92 + "knownValues": ["inform", "alert", "none"] 93 + }, 94 + "blurs": { 95 + "type": "string", 96 + "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", 97 + "knownValues": ["content", "media", "none"] 98 + }, 99 + "defaultSetting": { 100 + "type": "string", 101 + "description": "The default setting for this label.", 102 + "knownValues": ["ignore", "warn", "hide"], 103 + "default": "warn" 104 + }, 105 + "adultOnly": { 106 + "type": "boolean", 107 + "description": "Does the user need to have adult content enabled in order to configure this label?" 108 + }, 109 + "locales": { 110 + "type": "array", 111 + "items": { "type": "ref", "ref": "#labelValueDefinitionStrings" } 112 + } 113 + } 114 + }, 115 + "labelValueDefinitionStrings": { 116 + "type": "object", 117 + "description": "Strings which describe the label in the UI, localized into a specific language.", 118 + "required": ["lang", "name", "description"], 119 + "properties": { 120 + "lang": { 121 + "type": "string", 122 + "description": "The code of the language these strings are written in.", 123 + "format": "language" 124 + }, 125 + "name": { 126 + "type": "string", 127 + "description": "A short human-readable name for the label.", 128 + "maxGraphemes": 64, 129 + "maxLength": 640 130 + }, 131 + "description": { 132 + "type": "string", 133 + "description": "A longer description of what the label means and why it might be applied.", 134 + "maxGraphemes": 10000, 135 + "maxLength": 100000 136 + } 137 + } 138 + }, 139 + "labelValue": { 140 + "type": "string", 141 + "knownValues": [ 142 + "!hide", 143 + "!no-promote", 144 + "!warn", 145 + "!no-unauthenticated", 146 + "dmca-violation", 147 + "doxxing", 148 + "porn", 149 + "sexual", 150 + "nudity", 151 + "nsfl", 152 + "gore" 153 + ] 154 + } 155 + } 156 + }
+35
lexicons/paste.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "ovh.plonk.paste", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "key": "tid", 8 + "record": { 9 + "type": "object", 10 + "required": ["code", "lang", "title", "createdAt"], 11 + "properties": { 12 + "code": { 13 + "type": "string", 14 + "minLength": 1, 15 + "maxGraphemes": 65536, 16 + "maxLength": 65536 17 + }, 18 + "lang": { 19 + "type": "string", 20 + "minLength": 1, 21 + "maxGraphemes": 20, 22 + "maxLength": 20 23 + }, 24 + "title": { 25 + "type": "string", 26 + "minLength": 1, 27 + "maxGraphemes": 100, 28 + "maxLength": 100 29 + }, 30 + "createdAt": { "type": "string", "format": "datetime" } 31 + } 32 + } 33 + } 34 + } 35 + }
+49
lexicons/profile.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.actor.profile", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "A declaration of a Bluesky account profile.", 8 + "key": "literal:self", 9 + "record": { 10 + "type": "object", 11 + "properties": { 12 + "displayName": { 13 + "type": "string", 14 + "maxGraphemes": 64, 15 + "maxLength": 640 16 + }, 17 + "description": { 18 + "type": "string", 19 + "description": "Free-form profile description text.", 20 + "maxGraphemes": 256, 21 + "maxLength": 2560 22 + }, 23 + "avatar": { 24 + "type": "blob", 25 + "description": "Small image to be displayed next to posts from account. AKA, 'profile picture'", 26 + "accept": ["image/png", "image/jpeg"], 27 + "maxSize": 1000000 28 + }, 29 + "banner": { 30 + "type": "blob", 31 + "description": "Larger horizontal image to display behind profile view.", 32 + "accept": ["image/png", "image/jpeg"], 33 + "maxSize": 1000000 34 + }, 35 + "labels": { 36 + "type": "union", 37 + "description": "Self-label values, specific to the Bluesky application, on the overall account.", 38 + "refs": ["com.atproto.label.defs#selfLabels"] 39 + }, 40 + "joinedViaStarterPack": { 41 + "type": "ref", 42 + "ref": "com.atproto.repo.strongRef" 43 + }, 44 + "createdAt": { "type": "string", "format": "datetime" } 45 + } 46 + } 47 + } 48 + } 49 + }
+15
lexicons/strongRef.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.repo.strongRef", 4 + "description": "A URI with a content-hash fingerprint.", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["uri", "cid"], 9 + "properties": { 10 + "uri": { "type": "string", "format": "at-uri" }, 11 + "cid": { "type": "string", "format": "cid" } 12 + } 13 + } 14 + } 15 + }
+6009
package-lock.json
··· 1 + { 2 + "name": "plonk", 3 + "version": "1.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "plonk", 9 + "version": "1.0.0", 10 + "license": "ISC", 11 + "dependencies": { 12 + "@atproto/api": "^0.13.4", 13 + "@atproto/common": "^0.4.1", 14 + "@atproto/identity": "^0.4.0", 15 + "@atproto/lexicon": "^0.4.2", 16 + "@atproto/oauth-client-node": "^0.1.0", 17 + "@atproto/sync": "^0.1.4", 18 + "@atproto/syntax": "^0.3.0", 19 + "@atproto/xrpc-server": "^0.6.3", 20 + "better-sqlite3": "^11.1.2", 21 + "dotenv": "^16.4.5", 22 + "envalid": "^8.0.0", 23 + "express": "^4.19.2", 24 + "iron-session": "^8.0.2", 25 + "kysely": "^0.27.4", 26 + "multiformats": "^9.9.0", 27 + "pino": "^9.3.2", 28 + "pug": "^3.0.3", 29 + "uhtml": "^4.5.9" 30 + }, 31 + "devDependencies": { 32 + "@atproto/lex-cli": "^0.4.1", 33 + "@types/better-sqlite3": "^7.6.11", 34 + "@types/express": "^4.17.21", 35 + "pino-pretty": "^11.0.0", 36 + "rimraf": "^5.0.0", 37 + "ts-node": "^10.9.2", 38 + "tsup": "^8.0.2", 39 + "tsx": "^4.7.2", 40 + "typescript": "^5.4.4" 41 + } 42 + }, 43 + "node_modules/@atproto-labs/did-resolver": { 44 + "version": "0.1.4", 45 + "resolved": "https://registry.npmjs.org/@atproto-labs/did-resolver/-/did-resolver-0.1.4.tgz", 46 + "integrity": "sha512-5d+LHScS2ueYsFRjMOC3c1EwM2ui1yBVbBA0yY3MH7aydbljm5D28scsOVuymIhHwPFwcGvZbMON4PVSfpBbbQ==", 47 + "license": "MIT", 48 + "dependencies": { 49 + "@atproto-labs/fetch": "0.1.1", 50 + "@atproto-labs/pipe": "0.1.0", 51 + "@atproto-labs/simple-store": "0.1.1", 52 + "@atproto-labs/simple-store-memory": "0.1.1", 53 + "@atproto/did": "0.1.2", 54 + "zod": "^3.23.8" 55 + } 56 + }, 57 + "node_modules/@atproto-labs/fetch": { 58 + "version": "0.1.1", 59 + "resolved": "https://registry.npmjs.org/@atproto-labs/fetch/-/fetch-0.1.1.tgz", 60 + "integrity": "sha512-X1zO1MDoJzEurbWXMAe1H8EZ995Xam/aXdxhGVrXmOMyPDuvBa1oxwh/kQNZRCKcMQUbiwkk+Jfq6ZkTuvGbww==", 61 + "license": "MIT", 62 + "dependencies": { 63 + "@atproto-labs/pipe": "0.1.0" 64 + }, 65 + "optionalDependencies": { 66 + "zod": "^3.23.8" 67 + } 68 + }, 69 + "node_modules/@atproto-labs/fetch-node": { 70 + "version": "0.1.3", 71 + "resolved": "https://registry.npmjs.org/@atproto-labs/fetch-node/-/fetch-node-0.1.3.tgz", 72 + "integrity": "sha512-KX3ogPJt6dXNppWImQ9omfhrc8t73WrJaxHMphRAqQL8jXxKW5NBCTjSuwroBkJ1pj1aValBrc5NpdYu+H/9Qg==", 73 + "license": "MIT", 74 + "dependencies": { 75 + "@atproto-labs/fetch": "0.1.1", 76 + "@atproto-labs/pipe": "0.1.0", 77 + "ipaddr.js": "^2.1.0", 78 + "psl": "^1.9.0", 79 + "undici": "^6.14.1" 80 + } 81 + }, 82 + "node_modules/@atproto-labs/handle-resolver": { 83 + "version": "0.1.3", 84 + "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver/-/handle-resolver-0.1.3.tgz", 85 + "integrity": "sha512-pUn8uqQNqMpecQjO0UWmdKhKX1NnXdLBXHRgID2g4kmhpz3hkbbec+h34uSk6wLfZnwPFaVQnGdEkyMq/tNToQ==", 86 + "license": "MIT", 87 + "dependencies": { 88 + "@atproto-labs/simple-store": "0.1.1", 89 + "@atproto-labs/simple-store-memory": "0.1.1", 90 + "@atproto/did": "0.1.2", 91 + "zod": "^3.23.8" 92 + } 93 + }, 94 + "node_modules/@atproto-labs/handle-resolver-node": { 95 + "version": "0.1.6", 96 + "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver-node/-/handle-resolver-node-0.1.6.tgz", 97 + "integrity": "sha512-fJfPtqvo+EQ9ZNjdicQB4nuo+l8a7KvUlzW+tpTFkMQsdB017Dl0qHD7rv9SFlXMrswX5A3Dpwi/UDfGTtiltA==", 98 + "license": "MIT", 99 + "dependencies": { 100 + "@atproto-labs/fetch-node": "0.1.3", 101 + "@atproto-labs/handle-resolver": "0.1.3", 102 + "@atproto/did": "0.1.2" 103 + } 104 + }, 105 + "node_modules/@atproto-labs/identity-resolver": { 106 + "version": "0.1.4", 107 + "resolved": "https://registry.npmjs.org/@atproto-labs/identity-resolver/-/identity-resolver-0.1.4.tgz", 108 + "integrity": "sha512-uaRJsYFCRZQcw0c7S+RuziSVm5qHcK3N6uqsXz8NzYoJAE55Ah4DkQMj0rfapZmb0jyBau04RC/WoI4PSim+Aw==", 109 + "license": "MIT", 110 + "dependencies": { 111 + "@atproto-labs/did-resolver": "0.1.4", 112 + "@atproto-labs/handle-resolver": "0.1.3", 113 + "@atproto/syntax": "0.3.0" 114 + } 115 + }, 116 + "node_modules/@atproto-labs/identity-resolver/node_modules/@atproto/syntax": { 117 + "version": "0.3.0", 118 + "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.3.0.tgz", 119 + "integrity": "sha512-Weq0ZBxffGHDXHl9U7BQc2BFJi/e23AL+k+i5+D9hUq/bzT4yjGsrCejkjq0xt82xXDjmhhvQSZ0LqxyZ5woxA==", 120 + "license": "MIT" 121 + }, 122 + "node_modules/@atproto-labs/pipe": { 123 + "version": "0.1.0", 124 + "resolved": "https://registry.npmjs.org/@atproto-labs/pipe/-/pipe-0.1.0.tgz", 125 + "integrity": "sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==", 126 + "license": "MIT" 127 + }, 128 + "node_modules/@atproto-labs/simple-store": { 129 + "version": "0.1.1", 130 + "resolved": "https://registry.npmjs.org/@atproto-labs/simple-store/-/simple-store-0.1.1.tgz", 131 + "integrity": "sha512-WKILW2b3QbAYKh+w5U2x6p5FqqLl0nAeLwGeDY+KjX01K4Dq3vQTR9b/qNp0jZm48CabPQVrqCv0PPU9LgRRRg==", 132 + "license": "MIT" 133 + }, 134 + "node_modules/@atproto-labs/simple-store-memory": { 135 + "version": "0.1.1", 136 + "resolved": "https://registry.npmjs.org/@atproto-labs/simple-store-memory/-/simple-store-memory-0.1.1.tgz", 137 + "integrity": "sha512-PCRqhnZ8NBNBvLku53O56T0lsVOtclfIrQU/rwLCc4+p45/SBPrRYNBi6YFq5rxZbK6Njos9MCmILV/KLQxrWA==", 138 + "license": "MIT", 139 + "dependencies": { 140 + "@atproto-labs/simple-store": "0.1.1", 141 + "lru-cache": "^10.2.0" 142 + } 143 + }, 144 + "node_modules/@atproto/api": { 145 + "version": "0.13.18", 146 + "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.13.18.tgz", 147 + "integrity": "sha512-rrl5HhzGYWZ7fiC965TPBUOVItq9M4dxMb6qz8IvAVQliSkrJrKc7UD0QWL89QiiXaOBuX8w+4i5r4wrfBGddg==", 148 + "license": "MIT", 149 + "dependencies": { 150 + "@atproto/common-web": "^0.3.1", 151 + "@atproto/lexicon": "^0.4.3", 152 + "@atproto/syntax": "^0.3.1", 153 + "@atproto/xrpc": "^0.6.4", 154 + "await-lock": "^2.2.2", 155 + "multiformats": "^9.9.0", 156 + "tlds": "^1.234.0", 157 + "zod": "^3.23.8" 158 + } 159 + }, 160 + "node_modules/@atproto/common": { 161 + "version": "0.4.4", 162 + "resolved": "https://registry.npmjs.org/@atproto/common/-/common-0.4.4.tgz", 163 + "integrity": "sha512-58tMbn6A1Zu296s/l3uIj8z9d7IRHpZvLOfsFRikaQaYrzhJpL2aPY4uFQ8GJcxnsxeUnxBCrQz9we5jVVJI5Q==", 164 + "license": "MIT", 165 + "dependencies": { 166 + "@atproto/common-web": "^0.3.1", 167 + "@ipld/dag-cbor": "^7.0.3", 168 + "cbor-x": "^1.5.1", 169 + "iso-datestring-validator": "^2.2.2", 170 + "multiformats": "^9.9.0", 171 + "pino": "^8.21.0" 172 + } 173 + }, 174 + "node_modules/@atproto/common-web": { 175 + "version": "0.3.1", 176 + "resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.3.1.tgz", 177 + "integrity": "sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q==", 178 + "license": "MIT", 179 + "dependencies": { 180 + "graphemer": "^1.4.0", 181 + "multiformats": "^9.9.0", 182 + "uint8arrays": "3.0.0", 183 + "zod": "^3.23.8" 184 + } 185 + }, 186 + "node_modules/@atproto/common/node_modules/pino": { 187 + "version": "8.21.0", 188 + "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", 189 + "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", 190 + "license": "MIT", 191 + "dependencies": { 192 + "atomic-sleep": "^1.0.0", 193 + "fast-redact": "^3.1.1", 194 + "on-exit-leak-free": "^2.1.0", 195 + "pino-abstract-transport": "^1.2.0", 196 + "pino-std-serializers": "^6.0.0", 197 + "process-warning": "^3.0.0", 198 + "quick-format-unescaped": "^4.0.3", 199 + "real-require": "^0.2.0", 200 + "safe-stable-stringify": "^2.3.1", 201 + "sonic-boom": "^3.7.0", 202 + "thread-stream": "^2.6.0" 203 + }, 204 + "bin": { 205 + "pino": "bin.js" 206 + } 207 + }, 208 + "node_modules/@atproto/common/node_modules/pino-abstract-transport": { 209 + "version": "1.2.0", 210 + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", 211 + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", 212 + "license": "MIT", 213 + "dependencies": { 214 + "readable-stream": "^4.0.0", 215 + "split2": "^4.0.0" 216 + } 217 + }, 218 + "node_modules/@atproto/common/node_modules/pino-std-serializers": { 219 + "version": "6.2.2", 220 + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", 221 + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", 222 + "license": "MIT" 223 + }, 224 + "node_modules/@atproto/common/node_modules/process-warning": { 225 + "version": "3.0.0", 226 + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", 227 + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", 228 + "license": "MIT" 229 + }, 230 + "node_modules/@atproto/common/node_modules/sonic-boom": { 231 + "version": "3.8.1", 232 + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", 233 + "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", 234 + "license": "MIT", 235 + "dependencies": { 236 + "atomic-sleep": "^1.0.0" 237 + } 238 + }, 239 + "node_modules/@atproto/common/node_modules/thread-stream": { 240 + "version": "2.7.0", 241 + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", 242 + "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", 243 + "license": "MIT", 244 + "dependencies": { 245 + "real-require": "^0.2.0" 246 + } 247 + }, 248 + "node_modules/@atproto/crypto": { 249 + "version": "0.4.2", 250 + "resolved": "https://registry.npmjs.org/@atproto/crypto/-/crypto-0.4.2.tgz", 251 + "integrity": "sha512-aeOfPQYCDbhn2hV06oBF2KXrWjf/BK4yL8lfANJKSmKl3tKWCkiW/moi643rUXXxSE72KtWtQeqvNFYnnFJ0ig==", 252 + "license": "MIT", 253 + "dependencies": { 254 + "@noble/curves": "^1.1.0", 255 + "@noble/hashes": "^1.3.1", 256 + "uint8arrays": "3.0.0" 257 + } 258 + }, 259 + "node_modules/@atproto/did": { 260 + "version": "0.1.2", 261 + "resolved": "https://registry.npmjs.org/@atproto/did/-/did-0.1.2.tgz", 262 + "integrity": "sha512-gmY1SyAuqfmsFbIXkUIScfnULqn39FoUNz4oE0fUuMu9in6PEyoxlmD2lAo7Q3KMy3X/hvTn2u5f8W/2KuDg1w==", 263 + "license": "MIT", 264 + "dependencies": { 265 + "zod": "^3.23.8" 266 + } 267 + }, 268 + "node_modules/@atproto/identity": { 269 + "version": "0.4.3", 270 + "resolved": "https://registry.npmjs.org/@atproto/identity/-/identity-0.4.3.tgz", 271 + "integrity": "sha512-DLXMWh57dHvIeBl+IvC+q20z0IdDZT1awOn84vDyxacL9DfhbiTy/zCUPFEzHyvfrilNG1tDA4zQzURubdFqNg==", 272 + "license": "MIT", 273 + "dependencies": { 274 + "@atproto/common-web": "^0.3.1", 275 + "@atproto/crypto": "^0.4.2", 276 + "axios": "^0.27.2" 277 + } 278 + }, 279 + "node_modules/@atproto/jwk": { 280 + "version": "0.1.1", 281 + "resolved": "https://registry.npmjs.org/@atproto/jwk/-/jwk-0.1.1.tgz", 282 + "integrity": "sha512-6h/bj1APUk7QcV9t/oA6+9DB5NZx9SZru9x+/pV5oHFI9Xz4ZuM5+dq1PfsJV54pZyqdnZ6W6M717cxoC7q7og==", 283 + "license": "MIT", 284 + "dependencies": { 285 + "multiformats": "^9.9.0", 286 + "zod": "^3.23.8" 287 + } 288 + }, 289 + "node_modules/@atproto/jwk-jose": { 290 + "version": "0.1.2", 291 + "resolved": "https://registry.npmjs.org/@atproto/jwk-jose/-/jwk-jose-0.1.2.tgz", 292 + "integrity": "sha512-lDwc/6lLn2aZ/JpyyggyjLFsJPMntrVzryyGUx5aNpuTS8SIuc4Ky0REhxqfLopQXJJZCuRRjagHG3uP05/moQ==", 293 + "license": "MIT", 294 + "dependencies": { 295 + "@atproto/jwk": "0.1.1", 296 + "jose": "^5.2.0" 297 + } 298 + }, 299 + "node_modules/@atproto/jwk-webcrypto": { 300 + "version": "0.1.2", 301 + "resolved": "https://registry.npmjs.org/@atproto/jwk-webcrypto/-/jwk-webcrypto-0.1.2.tgz", 302 + "integrity": "sha512-vTBUbUZXh0GI+6KJiPGukmI4BQEHFAij8fJJ4WnReF/hefAs3ISZtrWZHGBebz+q2EcExYlnhhlmxvDzV7veGw==", 303 + "license": "MIT", 304 + "dependencies": { 305 + "@atproto/jwk": "0.1.1", 306 + "@atproto/jwk-jose": "0.1.2" 307 + } 308 + }, 309 + "node_modules/@atproto/lex-cli": { 310 + "version": "0.4.1", 311 + "resolved": "https://registry.npmjs.org/@atproto/lex-cli/-/lex-cli-0.4.1.tgz", 312 + "integrity": "sha512-QP9mE8MYzXR2ydhCBb/mtGqKZjqpffqcpZCr7JM4mFOZPvXV8k7OqVP1h+T94JB/tGcGPhB750S6tqUH9VRLVg==", 313 + "dev": true, 314 + "license": "MIT", 315 + "dependencies": { 316 + "@atproto/lexicon": "^0.4.0", 317 + "@atproto/syntax": "^0.3.0", 318 + "chalk": "^4.1.2", 319 + "commander": "^9.4.0", 320 + "prettier": "^3.2.5", 321 + "ts-morph": "^16.0.0", 322 + "yesno": "^0.4.0", 323 + "zod": "^3.23.8" 324 + }, 325 + "bin": { 326 + "lex": "dist/index.js" 327 + } 328 + }, 329 + "node_modules/@atproto/lexicon": { 330 + "version": "0.4.3", 331 + "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.4.3.tgz", 332 + "integrity": "sha512-lFVZXe1S1pJP0dcxvJuHP3r/a+EAIBwwU7jUK+r8iLhIja+ml6NmYv8KeFHmIJATh03spEQ9s02duDmFVdCoXg==", 333 + "license": "MIT", 334 + "dependencies": { 335 + "@atproto/common-web": "^0.3.1", 336 + "@atproto/syntax": "^0.3.1", 337 + "iso-datestring-validator": "^2.2.2", 338 + "multiformats": "^9.9.0", 339 + "zod": "^3.23.8" 340 + } 341 + }, 342 + "node_modules/@atproto/oauth-client": { 343 + "version": "0.2.2", 344 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client/-/oauth-client-0.2.2.tgz", 345 + "integrity": "sha512-hYL7Hx2h52zeC1WZeFjV9FFfqt8PZnURKofz0VJVeiPqB9wySJ46MgFVxsZ3t08c03WSDugujEz2JlhtQpS7Zg==", 346 + "license": "MIT", 347 + "dependencies": { 348 + "@atproto-labs/did-resolver": "0.1.4", 349 + "@atproto-labs/fetch": "0.1.1", 350 + "@atproto-labs/handle-resolver": "0.1.3", 351 + "@atproto-labs/identity-resolver": "0.1.4", 352 + "@atproto-labs/simple-store": "0.1.1", 353 + "@atproto-labs/simple-store-memory": "0.1.1", 354 + "@atproto/did": "0.1.2", 355 + "@atproto/jwk": "0.1.1", 356 + "@atproto/oauth-types": "0.1.5", 357 + "@atproto/xrpc": "0.6.3", 358 + "multiformats": "^9.9.0", 359 + "zod": "^3.23.8" 360 + } 361 + }, 362 + "node_modules/@atproto/oauth-client-node": { 363 + "version": "0.1.4", 364 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client-node/-/oauth-client-node-0.1.4.tgz", 365 + "integrity": "sha512-LKLBrvJL6gd6YqbeZsm9BZ1gqrMDKtz/77TNNjPBP+RBIV6e6Oj5uJmFMshzyJj87Rwd7Menb0niz6LhlKv/rg==", 366 + "license": "MIT", 367 + "dependencies": { 368 + "@atproto-labs/did-resolver": "0.1.4", 369 + "@atproto-labs/handle-resolver-node": "0.1.6", 370 + "@atproto-labs/simple-store": "0.1.1", 371 + "@atproto/did": "0.1.2", 372 + "@atproto/jwk": "0.1.1", 373 + "@atproto/jwk-jose": "0.1.2", 374 + "@atproto/jwk-webcrypto": "0.1.2", 375 + "@atproto/oauth-client": "0.2.2", 376 + "@atproto/oauth-types": "0.1.5" 377 + } 378 + }, 379 + "node_modules/@atproto/oauth-client/node_modules/@atproto/xrpc": { 380 + "version": "0.6.3", 381 + "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.6.3.tgz", 382 + "integrity": "sha512-S3tRvOdA9amPkKLll3rc4vphlDitLrkN5TwWh5Tu/jzk7mnobVVE3akYgICV9XCNHKjWM+IAPxFFI2qi+VW6nQ==", 383 + "license": "MIT", 384 + "dependencies": { 385 + "@atproto/lexicon": "^0.4.2", 386 + "zod": "^3.23.8" 387 + } 388 + }, 389 + "node_modules/@atproto/oauth-types": { 390 + "version": "0.1.5", 391 + "resolved": "https://registry.npmjs.org/@atproto/oauth-types/-/oauth-types-0.1.5.tgz", 392 + "integrity": "sha512-vNab/6BYUQCfmfhGc3G61EcatQxvh2d41FDWqR8CAYsblNXO6nOEVXn7cXdQUkb3K49LU0vy5Jf1+wFNcpY3IQ==", 393 + "license": "MIT", 394 + "dependencies": { 395 + "@atproto/jwk": "0.1.1", 396 + "zod": "^3.23.8" 397 + } 398 + }, 399 + "node_modules/@atproto/repo": { 400 + "version": "0.5.5", 401 + "resolved": "https://registry.npmjs.org/@atproto/repo/-/repo-0.5.5.tgz", 402 + "integrity": "sha512-Zu1tw42KBVyFzIh1XYSIvm8V+V9oEKWJR7NnHBgeSMwCc9QwM32jO7uqgvEjZYEXgdYKanGhv/YHLyxtZa5Ckg==", 403 + "license": "MIT", 404 + "dependencies": { 405 + "@atproto/common": "^0.4.4", 406 + "@atproto/common-web": "^0.3.1", 407 + "@atproto/crypto": "^0.4.2", 408 + "@atproto/lexicon": "^0.4.3", 409 + "@ipld/car": "^3.2.3", 410 + "@ipld/dag-cbor": "^7.0.0", 411 + "multiformats": "^9.9.0", 412 + "uint8arrays": "3.0.0", 413 + "zod": "^3.23.8" 414 + } 415 + }, 416 + "node_modules/@atproto/sync": { 417 + "version": "0.1.6", 418 + "resolved": "https://registry.npmjs.org/@atproto/sync/-/sync-0.1.6.tgz", 419 + "integrity": "sha512-9lqe6E6fIns28TJyQufLCVefMxmK3bvEfQBhmXJBGZMHuKlH8+F5P9DfnHv6vs6ygfmHIUIjYDWqJu/rpt8pzw==", 420 + "license": "MIT", 421 + "dependencies": { 422 + "@atproto/common": "^0.4.4", 423 + "@atproto/identity": "^0.4.3", 424 + "@atproto/lexicon": "^0.4.3", 425 + "@atproto/repo": "^0.5.5", 426 + "@atproto/syntax": "^0.3.1", 427 + "@atproto/xrpc-server": "^0.7.3", 428 + "multiformats": "^9.9.0", 429 + "p-queue": "^6.6.2" 430 + } 431 + }, 432 + "node_modules/@atproto/sync/node_modules/@atproto/xrpc-server": { 433 + "version": "0.7.3", 434 + "resolved": "https://registry.npmjs.org/@atproto/xrpc-server/-/xrpc-server-0.7.3.tgz", 435 + "integrity": "sha512-x0qegkN6snrbXJO3v9h2kuh9e90g6ZZkDXv3COiraGS3yRTzIm6i4bMvDSfCI50+0xCNtPKOkpn8taRoRgkyiw==", 436 + "license": "MIT", 437 + "dependencies": { 438 + "@atproto/common": "^0.4.4", 439 + "@atproto/crypto": "^0.4.2", 440 + "@atproto/lexicon": "^0.4.3", 441 + "@atproto/xrpc": "^0.6.4", 442 + "cbor-x": "^1.5.1", 443 + "express": "^4.17.2", 444 + "http-errors": "^2.0.0", 445 + "mime-types": "^2.1.35", 446 + "rate-limiter-flexible": "^2.4.1", 447 + "uint8arrays": "3.0.0", 448 + "ws": "^8.12.0", 449 + "zod": "^3.23.8" 450 + } 451 + }, 452 + "node_modules/@atproto/syntax": { 453 + "version": "0.3.1", 454 + "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.3.1.tgz", 455 + "integrity": "sha512-fzW0Mg1QUOVCWUD3RgEsDt6d1OZ6DdFmbKcDdbzUfh0t4rhtRAC05KbZYmxuMPWDAiJ4BbbQ5dkAc/mNypMXkw==", 456 + "license": "MIT" 457 + }, 458 + "node_modules/@atproto/xrpc": { 459 + "version": "0.6.4", 460 + "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.6.4.tgz", 461 + "integrity": "sha512-9ZAJ8nsXTqC4XFyS0E1Wlg7bAvonhXQNQ3Ocs1L1LIwFLXvsw/4fNpIHXxvXvqTCVeyHLbImOnE9UiO1c/qIYA==", 462 + "license": "MIT", 463 + "dependencies": { 464 + "@atproto/lexicon": "^0.4.3", 465 + "zod": "^3.23.8" 466 + } 467 + }, 468 + "node_modules/@atproto/xrpc-server": { 469 + "version": "0.6.4", 470 + "resolved": "https://registry.npmjs.org/@atproto/xrpc-server/-/xrpc-server-0.6.4.tgz", 471 + "integrity": "sha512-AL9okOTpJpxh3wJjT27RiPkp2IWIxDPCyyvuO1SJu0E9URGfWZL26SlT7/IR/tadZTJezr5+ZNuxhV0uhI+s1A==", 472 + "license": "MIT", 473 + "dependencies": { 474 + "@atproto/common": "^0.4.2", 475 + "@atproto/crypto": "^0.4.1", 476 + "@atproto/lexicon": "^0.4.1", 477 + "@atproto/xrpc": "^0.6.2", 478 + "cbor-x": "^1.5.1", 479 + "express": "^4.17.2", 480 + "http-errors": "^2.0.0", 481 + "mime-types": "^2.1.35", 482 + "rate-limiter-flexible": "^2.4.1", 483 + "uint8arrays": "3.0.0", 484 + "ws": "^8.12.0", 485 + "zod": "^3.23.8" 486 + } 487 + }, 488 + "node_modules/@babel/helper-string-parser": { 489 + "version": "7.25.9", 490 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", 491 + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", 492 + "license": "MIT", 493 + "engines": { 494 + "node": ">=6.9.0" 495 + } 496 + }, 497 + "node_modules/@babel/helper-validator-identifier": { 498 + "version": "7.25.9", 499 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 500 + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 501 + "license": "MIT", 502 + "engines": { 503 + "node": ">=6.9.0" 504 + } 505 + }, 506 + "node_modules/@babel/parser": { 507 + "version": "7.26.3", 508 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", 509 + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", 510 + "license": "MIT", 511 + "dependencies": { 512 + "@babel/types": "^7.26.3" 513 + }, 514 + "bin": { 515 + "parser": "bin/babel-parser.js" 516 + }, 517 + "engines": { 518 + "node": ">=6.0.0" 519 + } 520 + }, 521 + "node_modules/@babel/types": { 522 + "version": "7.26.3", 523 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", 524 + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", 525 + "license": "MIT", 526 + "dependencies": { 527 + "@babel/helper-string-parser": "^7.25.9", 528 + "@babel/helper-validator-identifier": "^7.25.9" 529 + }, 530 + "engines": { 531 + "node": ">=6.9.0" 532 + } 533 + }, 534 + "node_modules/@cbor-extract/cbor-extract-darwin-arm64": { 535 + "version": "2.2.0", 536 + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz", 537 + "integrity": "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==", 538 + "cpu": [ 539 + "arm64" 540 + ], 541 + "license": "MIT", 542 + "optional": true, 543 + "os": [ 544 + "darwin" 545 + ] 546 + }, 547 + "node_modules/@cbor-extract/cbor-extract-darwin-x64": { 548 + "version": "2.2.0", 549 + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz", 550 + "integrity": "sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==", 551 + "cpu": [ 552 + "x64" 553 + ], 554 + "license": "MIT", 555 + "optional": true, 556 + "os": [ 557 + "darwin" 558 + ] 559 + }, 560 + "node_modules/@cbor-extract/cbor-extract-linux-arm": { 561 + "version": "2.2.0", 562 + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz", 563 + "integrity": "sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==", 564 + "cpu": [ 565 + "arm" 566 + ], 567 + "license": "MIT", 568 + "optional": true, 569 + "os": [ 570 + "linux" 571 + ] 572 + }, 573 + "node_modules/@cbor-extract/cbor-extract-linux-arm64": { 574 + "version": "2.2.0", 575 + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz", 576 + "integrity": "sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==", 577 + "cpu": [ 578 + "arm64" 579 + ], 580 + "license": "MIT", 581 + "optional": true, 582 + "os": [ 583 + "linux" 584 + ] 585 + }, 586 + "node_modules/@cbor-extract/cbor-extract-linux-x64": { 587 + "version": "2.2.0", 588 + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz", 589 + "integrity": "sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==", 590 + "cpu": [ 591 + "x64" 592 + ], 593 + "license": "MIT", 594 + "optional": true, 595 + "os": [ 596 + "linux" 597 + ] 598 + }, 599 + "node_modules/@cbor-extract/cbor-extract-win32-x64": { 600 + "version": "2.2.0", 601 + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz", 602 + "integrity": "sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==", 603 + "cpu": [ 604 + "x64" 605 + ], 606 + "license": "MIT", 607 + "optional": true, 608 + "os": [ 609 + "win32" 610 + ] 611 + }, 612 + "node_modules/@cspotcode/source-map-support": { 613 + "version": "0.8.1", 614 + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 615 + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 616 + "dev": true, 617 + "license": "MIT", 618 + "dependencies": { 619 + "@jridgewell/trace-mapping": "0.3.9" 620 + }, 621 + "engines": { 622 + "node": ">=12" 623 + } 624 + }, 625 + "node_modules/@esbuild/aix-ppc64": { 626 + "version": "0.24.0", 627 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", 628 + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", 629 + "cpu": [ 630 + "ppc64" 631 + ], 632 + "dev": true, 633 + "license": "MIT", 634 + "optional": true, 635 + "os": [ 636 + "aix" 637 + ], 638 + "engines": { 639 + "node": ">=18" 640 + } 641 + }, 642 + "node_modules/@esbuild/android-arm": { 643 + "version": "0.24.0", 644 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", 645 + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", 646 + "cpu": [ 647 + "arm" 648 + ], 649 + "dev": true, 650 + "license": "MIT", 651 + "optional": true, 652 + "os": [ 653 + "android" 654 + ], 655 + "engines": { 656 + "node": ">=18" 657 + } 658 + }, 659 + "node_modules/@esbuild/android-arm64": { 660 + "version": "0.24.0", 661 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", 662 + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", 663 + "cpu": [ 664 + "arm64" 665 + ], 666 + "dev": true, 667 + "license": "MIT", 668 + "optional": true, 669 + "os": [ 670 + "android" 671 + ], 672 + "engines": { 673 + "node": ">=18" 674 + } 675 + }, 676 + "node_modules/@esbuild/android-x64": { 677 + "version": "0.24.0", 678 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", 679 + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", 680 + "cpu": [ 681 + "x64" 682 + ], 683 + "dev": true, 684 + "license": "MIT", 685 + "optional": true, 686 + "os": [ 687 + "android" 688 + ], 689 + "engines": { 690 + "node": ">=18" 691 + } 692 + }, 693 + "node_modules/@esbuild/darwin-arm64": { 694 + "version": "0.24.0", 695 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", 696 + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", 697 + "cpu": [ 698 + "arm64" 699 + ], 700 + "dev": true, 701 + "license": "MIT", 702 + "optional": true, 703 + "os": [ 704 + "darwin" 705 + ], 706 + "engines": { 707 + "node": ">=18" 708 + } 709 + }, 710 + "node_modules/@esbuild/darwin-x64": { 711 + "version": "0.24.0", 712 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", 713 + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", 714 + "cpu": [ 715 + "x64" 716 + ], 717 + "dev": true, 718 + "license": "MIT", 719 + "optional": true, 720 + "os": [ 721 + "darwin" 722 + ], 723 + "engines": { 724 + "node": ">=18" 725 + } 726 + }, 727 + "node_modules/@esbuild/freebsd-arm64": { 728 + "version": "0.24.0", 729 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", 730 + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", 731 + "cpu": [ 732 + "arm64" 733 + ], 734 + "dev": true, 735 + "license": "MIT", 736 + "optional": true, 737 + "os": [ 738 + "freebsd" 739 + ], 740 + "engines": { 741 + "node": ">=18" 742 + } 743 + }, 744 + "node_modules/@esbuild/freebsd-x64": { 745 + "version": "0.24.0", 746 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", 747 + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", 748 + "cpu": [ 749 + "x64" 750 + ], 751 + "dev": true, 752 + "license": "MIT", 753 + "optional": true, 754 + "os": [ 755 + "freebsd" 756 + ], 757 + "engines": { 758 + "node": ">=18" 759 + } 760 + }, 761 + "node_modules/@esbuild/linux-arm": { 762 + "version": "0.24.0", 763 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", 764 + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", 765 + "cpu": [ 766 + "arm" 767 + ], 768 + "dev": true, 769 + "license": "MIT", 770 + "optional": true, 771 + "os": [ 772 + "linux" 773 + ], 774 + "engines": { 775 + "node": ">=18" 776 + } 777 + }, 778 + "node_modules/@esbuild/linux-arm64": { 779 + "version": "0.24.0", 780 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", 781 + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", 782 + "cpu": [ 783 + "arm64" 784 + ], 785 + "dev": true, 786 + "license": "MIT", 787 + "optional": true, 788 + "os": [ 789 + "linux" 790 + ], 791 + "engines": { 792 + "node": ">=18" 793 + } 794 + }, 795 + "node_modules/@esbuild/linux-ia32": { 796 + "version": "0.24.0", 797 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", 798 + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", 799 + "cpu": [ 800 + "ia32" 801 + ], 802 + "dev": true, 803 + "license": "MIT", 804 + "optional": true, 805 + "os": [ 806 + "linux" 807 + ], 808 + "engines": { 809 + "node": ">=18" 810 + } 811 + }, 812 + "node_modules/@esbuild/linux-loong64": { 813 + "version": "0.24.0", 814 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", 815 + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", 816 + "cpu": [ 817 + "loong64" 818 + ], 819 + "dev": true, 820 + "license": "MIT", 821 + "optional": true, 822 + "os": [ 823 + "linux" 824 + ], 825 + "engines": { 826 + "node": ">=18" 827 + } 828 + }, 829 + "node_modules/@esbuild/linux-mips64el": { 830 + "version": "0.24.0", 831 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", 832 + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", 833 + "cpu": [ 834 + "mips64el" 835 + ], 836 + "dev": true, 837 + "license": "MIT", 838 + "optional": true, 839 + "os": [ 840 + "linux" 841 + ], 842 + "engines": { 843 + "node": ">=18" 844 + } 845 + }, 846 + "node_modules/@esbuild/linux-ppc64": { 847 + "version": "0.24.0", 848 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", 849 + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", 850 + "cpu": [ 851 + "ppc64" 852 + ], 853 + "dev": true, 854 + "license": "MIT", 855 + "optional": true, 856 + "os": [ 857 + "linux" 858 + ], 859 + "engines": { 860 + "node": ">=18" 861 + } 862 + }, 863 + "node_modules/@esbuild/linux-riscv64": { 864 + "version": "0.24.0", 865 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", 866 + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", 867 + "cpu": [ 868 + "riscv64" 869 + ], 870 + "dev": true, 871 + "license": "MIT", 872 + "optional": true, 873 + "os": [ 874 + "linux" 875 + ], 876 + "engines": { 877 + "node": ">=18" 878 + } 879 + }, 880 + "node_modules/@esbuild/linux-s390x": { 881 + "version": "0.24.0", 882 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", 883 + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", 884 + "cpu": [ 885 + "s390x" 886 + ], 887 + "dev": true, 888 + "license": "MIT", 889 + "optional": true, 890 + "os": [ 891 + "linux" 892 + ], 893 + "engines": { 894 + "node": ">=18" 895 + } 896 + }, 897 + "node_modules/@esbuild/linux-x64": { 898 + "version": "0.24.0", 899 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", 900 + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", 901 + "cpu": [ 902 + "x64" 903 + ], 904 + "dev": true, 905 + "license": "MIT", 906 + "optional": true, 907 + "os": [ 908 + "linux" 909 + ], 910 + "engines": { 911 + "node": ">=18" 912 + } 913 + }, 914 + "node_modules/@esbuild/netbsd-x64": { 915 + "version": "0.24.0", 916 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", 917 + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", 918 + "cpu": [ 919 + "x64" 920 + ], 921 + "dev": true, 922 + "license": "MIT", 923 + "optional": true, 924 + "os": [ 925 + "netbsd" 926 + ], 927 + "engines": { 928 + "node": ">=18" 929 + } 930 + }, 931 + "node_modules/@esbuild/openbsd-arm64": { 932 + "version": "0.24.0", 933 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", 934 + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", 935 + "cpu": [ 936 + "arm64" 937 + ], 938 + "dev": true, 939 + "license": "MIT", 940 + "optional": true, 941 + "os": [ 942 + "openbsd" 943 + ], 944 + "engines": { 945 + "node": ">=18" 946 + } 947 + }, 948 + "node_modules/@esbuild/openbsd-x64": { 949 + "version": "0.24.0", 950 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", 951 + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", 952 + "cpu": [ 953 + "x64" 954 + ], 955 + "dev": true, 956 + "license": "MIT", 957 + "optional": true, 958 + "os": [ 959 + "openbsd" 960 + ], 961 + "engines": { 962 + "node": ">=18" 963 + } 964 + }, 965 + "node_modules/@esbuild/sunos-x64": { 966 + "version": "0.24.0", 967 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", 968 + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", 969 + "cpu": [ 970 + "x64" 971 + ], 972 + "dev": true, 973 + "license": "MIT", 974 + "optional": true, 975 + "os": [ 976 + "sunos" 977 + ], 978 + "engines": { 979 + "node": ">=18" 980 + } 981 + }, 982 + "node_modules/@esbuild/win32-arm64": { 983 + "version": "0.24.0", 984 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", 985 + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", 986 + "cpu": [ 987 + "arm64" 988 + ], 989 + "dev": true, 990 + "license": "MIT", 991 + "optional": true, 992 + "os": [ 993 + "win32" 994 + ], 995 + "engines": { 996 + "node": ">=18" 997 + } 998 + }, 999 + "node_modules/@esbuild/win32-ia32": { 1000 + "version": "0.24.0", 1001 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", 1002 + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", 1003 + "cpu": [ 1004 + "ia32" 1005 + ], 1006 + "dev": true, 1007 + "license": "MIT", 1008 + "optional": true, 1009 + "os": [ 1010 + "win32" 1011 + ], 1012 + "engines": { 1013 + "node": ">=18" 1014 + } 1015 + }, 1016 + "node_modules/@esbuild/win32-x64": { 1017 + "version": "0.24.0", 1018 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", 1019 + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", 1020 + "cpu": [ 1021 + "x64" 1022 + ], 1023 + "dev": true, 1024 + "license": "MIT", 1025 + "optional": true, 1026 + "os": [ 1027 + "win32" 1028 + ], 1029 + "engines": { 1030 + "node": ">=18" 1031 + } 1032 + }, 1033 + "node_modules/@ipld/car": { 1034 + "version": "3.2.4", 1035 + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.2.4.tgz", 1036 + "integrity": "sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==", 1037 + "license": "(Apache-2.0 AND MIT)", 1038 + "dependencies": { 1039 + "@ipld/dag-cbor": "^7.0.0", 1040 + "multiformats": "^9.5.4", 1041 + "varint": "^6.0.0" 1042 + } 1043 + }, 1044 + "node_modules/@ipld/dag-cbor": { 1045 + "version": "7.0.3", 1046 + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz", 1047 + "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", 1048 + "license": "(Apache-2.0 AND MIT)", 1049 + "dependencies": { 1050 + "cborg": "^1.6.0", 1051 + "multiformats": "^9.5.4" 1052 + } 1053 + }, 1054 + "node_modules/@isaacs/cliui": { 1055 + "version": "8.0.2", 1056 + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 1057 + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 1058 + "dev": true, 1059 + "license": "ISC", 1060 + "dependencies": { 1061 + "string-width": "^5.1.2", 1062 + "string-width-cjs": "npm:string-width@^4.2.0", 1063 + "strip-ansi": "^7.0.1", 1064 + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 1065 + "wrap-ansi": "^8.1.0", 1066 + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 1067 + }, 1068 + "engines": { 1069 + "node": ">=12" 1070 + } 1071 + }, 1072 + "node_modules/@jridgewell/gen-mapping": { 1073 + "version": "0.3.5", 1074 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 1075 + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 1076 + "dev": true, 1077 + "license": "MIT", 1078 + "dependencies": { 1079 + "@jridgewell/set-array": "^1.2.1", 1080 + "@jridgewell/sourcemap-codec": "^1.4.10", 1081 + "@jridgewell/trace-mapping": "^0.3.24" 1082 + }, 1083 + "engines": { 1084 + "node": ">=6.0.0" 1085 + } 1086 + }, 1087 + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { 1088 + "version": "0.3.25", 1089 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 1090 + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 1091 + "dev": true, 1092 + "license": "MIT", 1093 + "dependencies": { 1094 + "@jridgewell/resolve-uri": "^3.1.0", 1095 + "@jridgewell/sourcemap-codec": "^1.4.14" 1096 + } 1097 + }, 1098 + "node_modules/@jridgewell/resolve-uri": { 1099 + "version": "3.1.2", 1100 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 1101 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 1102 + "dev": true, 1103 + "license": "MIT", 1104 + "engines": { 1105 + "node": ">=6.0.0" 1106 + } 1107 + }, 1108 + "node_modules/@jridgewell/set-array": { 1109 + "version": "1.2.1", 1110 + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 1111 + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 1112 + "dev": true, 1113 + "license": "MIT", 1114 + "engines": { 1115 + "node": ">=6.0.0" 1116 + } 1117 + }, 1118 + "node_modules/@jridgewell/sourcemap-codec": { 1119 + "version": "1.5.0", 1120 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 1121 + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 1122 + "dev": true, 1123 + "license": "MIT" 1124 + }, 1125 + "node_modules/@jridgewell/trace-mapping": { 1126 + "version": "0.3.9", 1127 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 1128 + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 1129 + "dev": true, 1130 + "license": "MIT", 1131 + "dependencies": { 1132 + "@jridgewell/resolve-uri": "^3.0.3", 1133 + "@jridgewell/sourcemap-codec": "^1.4.10" 1134 + } 1135 + }, 1136 + "node_modules/@noble/curves": { 1137 + "version": "1.7.0", 1138 + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", 1139 + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", 1140 + "license": "MIT", 1141 + "dependencies": { 1142 + "@noble/hashes": "1.6.0" 1143 + }, 1144 + "engines": { 1145 + "node": "^14.21.3 || >=16" 1146 + }, 1147 + "funding": { 1148 + "url": "https://paulmillr.com/funding/" 1149 + } 1150 + }, 1151 + "node_modules/@noble/curves/node_modules/@noble/hashes": { 1152 + "version": "1.6.0", 1153 + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", 1154 + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", 1155 + "license": "MIT", 1156 + "engines": { 1157 + "node": "^14.21.3 || >=16" 1158 + }, 1159 + "funding": { 1160 + "url": "https://paulmillr.com/funding/" 1161 + } 1162 + }, 1163 + "node_modules/@noble/hashes": { 1164 + "version": "1.6.1", 1165 + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", 1166 + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", 1167 + "license": "MIT", 1168 + "engines": { 1169 + "node": "^14.21.3 || >=16" 1170 + }, 1171 + "funding": { 1172 + "url": "https://paulmillr.com/funding/" 1173 + } 1174 + }, 1175 + "node_modules/@nodelib/fs.scandir": { 1176 + "version": "2.1.5", 1177 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1178 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1179 + "dev": true, 1180 + "license": "MIT", 1181 + "dependencies": { 1182 + "@nodelib/fs.stat": "2.0.5", 1183 + "run-parallel": "^1.1.9" 1184 + }, 1185 + "engines": { 1186 + "node": ">= 8" 1187 + } 1188 + }, 1189 + "node_modules/@nodelib/fs.stat": { 1190 + "version": "2.0.5", 1191 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1192 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 1193 + "dev": true, 1194 + "license": "MIT", 1195 + "engines": { 1196 + "node": ">= 8" 1197 + } 1198 + }, 1199 + "node_modules/@nodelib/fs.walk": { 1200 + "version": "1.2.8", 1201 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1202 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1203 + "dev": true, 1204 + "license": "MIT", 1205 + "dependencies": { 1206 + "@nodelib/fs.scandir": "2.1.5", 1207 + "fastq": "^1.6.0" 1208 + }, 1209 + "engines": { 1210 + "node": ">= 8" 1211 + } 1212 + }, 1213 + "node_modules/@pkgjs/parseargs": { 1214 + "version": "0.11.0", 1215 + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 1216 + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 1217 + "dev": true, 1218 + "license": "MIT", 1219 + "optional": true, 1220 + "engines": { 1221 + "node": ">=14" 1222 + } 1223 + }, 1224 + "node_modules/@preact/signals-core": { 1225 + "version": "1.8.0", 1226 + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.8.0.tgz", 1227 + "integrity": "sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==", 1228 + "license": "MIT", 1229 + "optional": true, 1230 + "funding": { 1231 + "type": "opencollective", 1232 + "url": "https://opencollective.com/preact" 1233 + } 1234 + }, 1235 + "node_modules/@rollup/rollup-android-arm-eabi": { 1236 + "version": "4.28.0", 1237 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.0.tgz", 1238 + "integrity": "sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==", 1239 + "cpu": [ 1240 + "arm" 1241 + ], 1242 + "dev": true, 1243 + "license": "MIT", 1244 + "optional": true, 1245 + "os": [ 1246 + "android" 1247 + ] 1248 + }, 1249 + "node_modules/@rollup/rollup-android-arm64": { 1250 + "version": "4.28.0", 1251 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.0.tgz", 1252 + "integrity": "sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==", 1253 + "cpu": [ 1254 + "arm64" 1255 + ], 1256 + "dev": true, 1257 + "license": "MIT", 1258 + "optional": true, 1259 + "os": [ 1260 + "android" 1261 + ] 1262 + }, 1263 + "node_modules/@rollup/rollup-darwin-arm64": { 1264 + "version": "4.28.0", 1265 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.0.tgz", 1266 + "integrity": "sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==", 1267 + "cpu": [ 1268 + "arm64" 1269 + ], 1270 + "dev": true, 1271 + "license": "MIT", 1272 + "optional": true, 1273 + "os": [ 1274 + "darwin" 1275 + ] 1276 + }, 1277 + "node_modules/@rollup/rollup-darwin-x64": { 1278 + "version": "4.28.0", 1279 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.0.tgz", 1280 + "integrity": "sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==", 1281 + "cpu": [ 1282 + "x64" 1283 + ], 1284 + "dev": true, 1285 + "license": "MIT", 1286 + "optional": true, 1287 + "os": [ 1288 + "darwin" 1289 + ] 1290 + }, 1291 + "node_modules/@rollup/rollup-freebsd-arm64": { 1292 + "version": "4.28.0", 1293 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.0.tgz", 1294 + "integrity": "sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==", 1295 + "cpu": [ 1296 + "arm64" 1297 + ], 1298 + "dev": true, 1299 + "license": "MIT", 1300 + "optional": true, 1301 + "os": [ 1302 + "freebsd" 1303 + ] 1304 + }, 1305 + "node_modules/@rollup/rollup-freebsd-x64": { 1306 + "version": "4.28.0", 1307 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.0.tgz", 1308 + "integrity": "sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==", 1309 + "cpu": [ 1310 + "x64" 1311 + ], 1312 + "dev": true, 1313 + "license": "MIT", 1314 + "optional": true, 1315 + "os": [ 1316 + "freebsd" 1317 + ] 1318 + }, 1319 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1320 + "version": "4.28.0", 1321 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.0.tgz", 1322 + "integrity": "sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==", 1323 + "cpu": [ 1324 + "arm" 1325 + ], 1326 + "dev": true, 1327 + "license": "MIT", 1328 + "optional": true, 1329 + "os": [ 1330 + "linux" 1331 + ] 1332 + }, 1333 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1334 + "version": "4.28.0", 1335 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.0.tgz", 1336 + "integrity": "sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==", 1337 + "cpu": [ 1338 + "arm" 1339 + ], 1340 + "dev": true, 1341 + "license": "MIT", 1342 + "optional": true, 1343 + "os": [ 1344 + "linux" 1345 + ] 1346 + }, 1347 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 1348 + "version": "4.28.0", 1349 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.0.tgz", 1350 + "integrity": "sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==", 1351 + "cpu": [ 1352 + "arm64" 1353 + ], 1354 + "dev": true, 1355 + "license": "MIT", 1356 + "optional": true, 1357 + "os": [ 1358 + "linux" 1359 + ] 1360 + }, 1361 + "node_modules/@rollup/rollup-linux-arm64-musl": { 1362 + "version": "4.28.0", 1363 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.0.tgz", 1364 + "integrity": "sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==", 1365 + "cpu": [ 1366 + "arm64" 1367 + ], 1368 + "dev": true, 1369 + "license": "MIT", 1370 + "optional": true, 1371 + "os": [ 1372 + "linux" 1373 + ] 1374 + }, 1375 + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1376 + "version": "4.28.0", 1377 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.0.tgz", 1378 + "integrity": "sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==", 1379 + "cpu": [ 1380 + "ppc64" 1381 + ], 1382 + "dev": true, 1383 + "license": "MIT", 1384 + "optional": true, 1385 + "os": [ 1386 + "linux" 1387 + ] 1388 + }, 1389 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1390 + "version": "4.28.0", 1391 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.0.tgz", 1392 + "integrity": "sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==", 1393 + "cpu": [ 1394 + "riscv64" 1395 + ], 1396 + "dev": true, 1397 + "license": "MIT", 1398 + "optional": true, 1399 + "os": [ 1400 + "linux" 1401 + ] 1402 + }, 1403 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 1404 + "version": "4.28.0", 1405 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.0.tgz", 1406 + "integrity": "sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==", 1407 + "cpu": [ 1408 + "s390x" 1409 + ], 1410 + "dev": true, 1411 + "license": "MIT", 1412 + "optional": true, 1413 + "os": [ 1414 + "linux" 1415 + ] 1416 + }, 1417 + "node_modules/@rollup/rollup-linux-x64-gnu": { 1418 + "version": "4.28.0", 1419 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.0.tgz", 1420 + "integrity": "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==", 1421 + "cpu": [ 1422 + "x64" 1423 + ], 1424 + "dev": true, 1425 + "license": "MIT", 1426 + "optional": true, 1427 + "os": [ 1428 + "linux" 1429 + ] 1430 + }, 1431 + "node_modules/@rollup/rollup-linux-x64-musl": { 1432 + "version": "4.28.0", 1433 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.0.tgz", 1434 + "integrity": "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==", 1435 + "cpu": [ 1436 + "x64" 1437 + ], 1438 + "dev": true, 1439 + "license": "MIT", 1440 + "optional": true, 1441 + "os": [ 1442 + "linux" 1443 + ] 1444 + }, 1445 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1446 + "version": "4.28.0", 1447 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.0.tgz", 1448 + "integrity": "sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==", 1449 + "cpu": [ 1450 + "arm64" 1451 + ], 1452 + "dev": true, 1453 + "license": "MIT", 1454 + "optional": true, 1455 + "os": [ 1456 + "win32" 1457 + ] 1458 + }, 1459 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1460 + "version": "4.28.0", 1461 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.0.tgz", 1462 + "integrity": "sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==", 1463 + "cpu": [ 1464 + "ia32" 1465 + ], 1466 + "dev": true, 1467 + "license": "MIT", 1468 + "optional": true, 1469 + "os": [ 1470 + "win32" 1471 + ] 1472 + }, 1473 + "node_modules/@rollup/rollup-win32-x64-msvc": { 1474 + "version": "4.28.0", 1475 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz", 1476 + "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==", 1477 + "cpu": [ 1478 + "x64" 1479 + ], 1480 + "dev": true, 1481 + "license": "MIT", 1482 + "optional": true, 1483 + "os": [ 1484 + "win32" 1485 + ] 1486 + }, 1487 + "node_modules/@ts-morph/common": { 1488 + "version": "0.17.0", 1489 + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", 1490 + "integrity": "sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==", 1491 + "dev": true, 1492 + "license": "MIT", 1493 + "dependencies": { 1494 + "fast-glob": "^3.2.11", 1495 + "minimatch": "^5.1.0", 1496 + "mkdirp": "^1.0.4", 1497 + "path-browserify": "^1.0.1" 1498 + } 1499 + }, 1500 + "node_modules/@ts-morph/common/node_modules/minimatch": { 1501 + "version": "5.1.6", 1502 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1503 + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1504 + "dev": true, 1505 + "license": "ISC", 1506 + "dependencies": { 1507 + "brace-expansion": "^2.0.1" 1508 + }, 1509 + "engines": { 1510 + "node": ">=10" 1511 + } 1512 + }, 1513 + "node_modules/@tsconfig/node10": { 1514 + "version": "1.0.11", 1515 + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", 1516 + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", 1517 + "dev": true, 1518 + "license": "MIT" 1519 + }, 1520 + "node_modules/@tsconfig/node12": { 1521 + "version": "1.0.11", 1522 + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 1523 + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", 1524 + "dev": true, 1525 + "license": "MIT" 1526 + }, 1527 + "node_modules/@tsconfig/node14": { 1528 + "version": "1.0.3", 1529 + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 1530 + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", 1531 + "dev": true, 1532 + "license": "MIT" 1533 + }, 1534 + "node_modules/@tsconfig/node16": { 1535 + "version": "1.0.4", 1536 + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", 1537 + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", 1538 + "dev": true, 1539 + "license": "MIT" 1540 + }, 1541 + "node_modules/@types/better-sqlite3": { 1542 + "version": "7.6.12", 1543 + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.12.tgz", 1544 + "integrity": "sha512-fnQmj8lELIj7BSrZQAdBMHEHX8OZLYIHXqAKT1O7tDfLxaINzf00PMjw22r3N/xXh0w/sGHlO6SVaCQ2mj78lg==", 1545 + "dev": true, 1546 + "license": "MIT", 1547 + "dependencies": { 1548 + "@types/node": "*" 1549 + } 1550 + }, 1551 + "node_modules/@types/body-parser": { 1552 + "version": "1.19.5", 1553 + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", 1554 + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", 1555 + "dev": true, 1556 + "license": "MIT", 1557 + "dependencies": { 1558 + "@types/connect": "*", 1559 + "@types/node": "*" 1560 + } 1561 + }, 1562 + "node_modules/@types/connect": { 1563 + "version": "3.4.38", 1564 + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", 1565 + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 1566 + "dev": true, 1567 + "license": "MIT", 1568 + "dependencies": { 1569 + "@types/node": "*" 1570 + } 1571 + }, 1572 + "node_modules/@types/estree": { 1573 + "version": "1.0.6", 1574 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 1575 + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 1576 + "dev": true, 1577 + "license": "MIT" 1578 + }, 1579 + "node_modules/@types/express": { 1580 + "version": "4.17.21", 1581 + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", 1582 + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", 1583 + "dev": true, 1584 + "license": "MIT", 1585 + "dependencies": { 1586 + "@types/body-parser": "*", 1587 + "@types/express-serve-static-core": "^4.17.33", 1588 + "@types/qs": "*", 1589 + "@types/serve-static": "*" 1590 + } 1591 + }, 1592 + "node_modules/@types/express-serve-static-core": { 1593 + "version": "4.19.6", 1594 + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", 1595 + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", 1596 + "dev": true, 1597 + "license": "MIT", 1598 + "dependencies": { 1599 + "@types/node": "*", 1600 + "@types/qs": "*", 1601 + "@types/range-parser": "*", 1602 + "@types/send": "*" 1603 + } 1604 + }, 1605 + "node_modules/@types/http-errors": { 1606 + "version": "2.0.4", 1607 + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", 1608 + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", 1609 + "dev": true, 1610 + "license": "MIT" 1611 + }, 1612 + "node_modules/@types/mime": { 1613 + "version": "1.3.5", 1614 + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", 1615 + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", 1616 + "dev": true, 1617 + "license": "MIT" 1618 + }, 1619 + "node_modules/@types/node": { 1620 + "version": "22.10.1", 1621 + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", 1622 + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", 1623 + "dev": true, 1624 + "license": "MIT", 1625 + "dependencies": { 1626 + "undici-types": "~6.20.0" 1627 + } 1628 + }, 1629 + "node_modules/@types/qs": { 1630 + "version": "6.9.17", 1631 + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", 1632 + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", 1633 + "dev": true, 1634 + "license": "MIT" 1635 + }, 1636 + "node_modules/@types/range-parser": { 1637 + "version": "1.2.7", 1638 + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", 1639 + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", 1640 + "dev": true, 1641 + "license": "MIT" 1642 + }, 1643 + "node_modules/@types/send": { 1644 + "version": "0.17.4", 1645 + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", 1646 + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", 1647 + "dev": true, 1648 + "license": "MIT", 1649 + "dependencies": { 1650 + "@types/mime": "^1", 1651 + "@types/node": "*" 1652 + } 1653 + }, 1654 + "node_modules/@types/serve-static": { 1655 + "version": "1.15.7", 1656 + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", 1657 + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", 1658 + "dev": true, 1659 + "license": "MIT", 1660 + "dependencies": { 1661 + "@types/http-errors": "*", 1662 + "@types/node": "*", 1663 + "@types/send": "*" 1664 + } 1665 + }, 1666 + "node_modules/@webreflection/signal": { 1667 + "version": "2.1.2", 1668 + "resolved": "https://registry.npmjs.org/@webreflection/signal/-/signal-2.1.2.tgz", 1669 + "integrity": "sha512-0dW0fstQQkIt588JwhDiPS4xgeeQcQnBHn6MVInrBzmFlnLtzoSJL9G7JqdAlZVVi19tfb8R1QisZIT31cgiug==", 1670 + "license": "ISC", 1671 + "optional": true 1672 + }, 1673 + "node_modules/@webreflection/uparser": { 1674 + "version": "0.4.0", 1675 + "resolved": "https://registry.npmjs.org/@webreflection/uparser/-/uparser-0.4.0.tgz", 1676 + "integrity": "sha512-kAFWUEw5eool295y01VDr+DOsyog6lURX9l288JCJAD2gxc0tFk34dYaAi6O3BbJyfSoncVEV+nw87bsssdppQ==", 1677 + "license": "MIT", 1678 + "dependencies": { 1679 + "domconstants": "^1.1.6" 1680 + } 1681 + }, 1682 + "node_modules/abort-controller": { 1683 + "version": "3.0.0", 1684 + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 1685 + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 1686 + "license": "MIT", 1687 + "dependencies": { 1688 + "event-target-shim": "^5.0.0" 1689 + }, 1690 + "engines": { 1691 + "node": ">=6.5" 1692 + } 1693 + }, 1694 + "node_modules/accepts": { 1695 + "version": "1.3.8", 1696 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1697 + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1698 + "license": "MIT", 1699 + "dependencies": { 1700 + "mime-types": "~2.1.34", 1701 + "negotiator": "0.6.3" 1702 + }, 1703 + "engines": { 1704 + "node": ">= 0.6" 1705 + } 1706 + }, 1707 + "node_modules/acorn": { 1708 + "version": "8.14.0", 1709 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 1710 + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 1711 + "dev": true, 1712 + "license": "MIT", 1713 + "bin": { 1714 + "acorn": "bin/acorn" 1715 + }, 1716 + "engines": { 1717 + "node": ">=0.4.0" 1718 + } 1719 + }, 1720 + "node_modules/acorn-walk": { 1721 + "version": "8.3.4", 1722 + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", 1723 + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", 1724 + "dev": true, 1725 + "license": "MIT", 1726 + "dependencies": { 1727 + "acorn": "^8.11.0" 1728 + }, 1729 + "engines": { 1730 + "node": ">=0.4.0" 1731 + } 1732 + }, 1733 + "node_modules/ansi-regex": { 1734 + "version": "6.1.0", 1735 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 1736 + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 1737 + "dev": true, 1738 + "license": "MIT", 1739 + "engines": { 1740 + "node": ">=12" 1741 + }, 1742 + "funding": { 1743 + "url": "https://github.com/chalk/ansi-regex?sponsor=1" 1744 + } 1745 + }, 1746 + "node_modules/ansi-styles": { 1747 + "version": "4.3.0", 1748 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1749 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1750 + "dev": true, 1751 + "license": "MIT", 1752 + "dependencies": { 1753 + "color-convert": "^2.0.1" 1754 + }, 1755 + "engines": { 1756 + "node": ">=8" 1757 + }, 1758 + "funding": { 1759 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1760 + } 1761 + }, 1762 + "node_modules/any-promise": { 1763 + "version": "1.3.0", 1764 + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 1765 + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 1766 + "dev": true, 1767 + "license": "MIT" 1768 + }, 1769 + "node_modules/arg": { 1770 + "version": "4.1.3", 1771 + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 1772 + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 1773 + "dev": true, 1774 + "license": "MIT" 1775 + }, 1776 + "node_modules/array-flatten": { 1777 + "version": "1.1.1", 1778 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1779 + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", 1780 + "license": "MIT" 1781 + }, 1782 + "node_modules/asap": { 1783 + "version": "2.0.6", 1784 + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 1785 + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", 1786 + "license": "MIT" 1787 + }, 1788 + "node_modules/assert-never": { 1789 + "version": "1.3.0", 1790 + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.3.0.tgz", 1791 + "integrity": "sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ==", 1792 + "license": "MIT" 1793 + }, 1794 + "node_modules/asynckit": { 1795 + "version": "0.4.0", 1796 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1797 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 1798 + "license": "MIT" 1799 + }, 1800 + "node_modules/atomic-sleep": { 1801 + "version": "1.0.0", 1802 + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", 1803 + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", 1804 + "license": "MIT", 1805 + "engines": { 1806 + "node": ">=8.0.0" 1807 + } 1808 + }, 1809 + "node_modules/await-lock": { 1810 + "version": "2.2.2", 1811 + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", 1812 + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", 1813 + "license": "MIT" 1814 + }, 1815 + "node_modules/axios": { 1816 + "version": "0.27.2", 1817 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 1818 + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 1819 + "license": "MIT", 1820 + "dependencies": { 1821 + "follow-redirects": "^1.14.9", 1822 + "form-data": "^4.0.0" 1823 + } 1824 + }, 1825 + "node_modules/babel-walk": { 1826 + "version": "3.0.0-canary-5", 1827 + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", 1828 + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", 1829 + "license": "MIT", 1830 + "dependencies": { 1831 + "@babel/types": "^7.9.6" 1832 + }, 1833 + "engines": { 1834 + "node": ">= 10.0.0" 1835 + } 1836 + }, 1837 + "node_modules/balanced-match": { 1838 + "version": "1.0.2", 1839 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1840 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1841 + "dev": true, 1842 + "license": "MIT" 1843 + }, 1844 + "node_modules/base64-js": { 1845 + "version": "1.5.1", 1846 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1847 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1848 + "funding": [ 1849 + { 1850 + "type": "github", 1851 + "url": "https://github.com/sponsors/feross" 1852 + }, 1853 + { 1854 + "type": "patreon", 1855 + "url": "https://www.patreon.com/feross" 1856 + }, 1857 + { 1858 + "type": "consulting", 1859 + "url": "https://feross.org/support" 1860 + } 1861 + ], 1862 + "license": "MIT" 1863 + }, 1864 + "node_modules/better-sqlite3": { 1865 + "version": "11.6.0", 1866 + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.6.0.tgz", 1867 + "integrity": "sha512-2J6k/eVxcFYY2SsTxsXrj6XylzHWPxveCn4fKPKZFv/Vqn/Cd7lOuX4d7rGQXT5zL+97MkNL3nSbCrIoe3LkgA==", 1868 + "hasInstallScript": true, 1869 + "license": "MIT", 1870 + "dependencies": { 1871 + "bindings": "^1.5.0", 1872 + "prebuild-install": "^7.1.1" 1873 + } 1874 + }, 1875 + "node_modules/bindings": { 1876 + "version": "1.5.0", 1877 + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 1878 + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 1879 + "license": "MIT", 1880 + "dependencies": { 1881 + "file-uri-to-path": "1.0.0" 1882 + } 1883 + }, 1884 + "node_modules/bl": { 1885 + "version": "4.1.0", 1886 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 1887 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 1888 + "license": "MIT", 1889 + "dependencies": { 1890 + "buffer": "^5.5.0", 1891 + "inherits": "^2.0.4", 1892 + "readable-stream": "^3.4.0" 1893 + } 1894 + }, 1895 + "node_modules/bl/node_modules/buffer": { 1896 + "version": "5.7.1", 1897 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1898 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1899 + "funding": [ 1900 + { 1901 + "type": "github", 1902 + "url": "https://github.com/sponsors/feross" 1903 + }, 1904 + { 1905 + "type": "patreon", 1906 + "url": "https://www.patreon.com/feross" 1907 + }, 1908 + { 1909 + "type": "consulting", 1910 + "url": "https://feross.org/support" 1911 + } 1912 + ], 1913 + "license": "MIT", 1914 + "dependencies": { 1915 + "base64-js": "^1.3.1", 1916 + "ieee754": "^1.1.13" 1917 + } 1918 + }, 1919 + "node_modules/bl/node_modules/readable-stream": { 1920 + "version": "3.6.2", 1921 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1922 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1923 + "license": "MIT", 1924 + "dependencies": { 1925 + "inherits": "^2.0.3", 1926 + "string_decoder": "^1.1.1", 1927 + "util-deprecate": "^1.0.1" 1928 + }, 1929 + "engines": { 1930 + "node": ">= 6" 1931 + } 1932 + }, 1933 + "node_modules/body-parser": { 1934 + "version": "1.20.3", 1935 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", 1936 + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", 1937 + "license": "MIT", 1938 + "dependencies": { 1939 + "bytes": "3.1.2", 1940 + "content-type": "~1.0.5", 1941 + "debug": "2.6.9", 1942 + "depd": "2.0.0", 1943 + "destroy": "1.2.0", 1944 + "http-errors": "2.0.0", 1945 + "iconv-lite": "0.4.24", 1946 + "on-finished": "2.4.1", 1947 + "qs": "6.13.0", 1948 + "raw-body": "2.5.2", 1949 + "type-is": "~1.6.18", 1950 + "unpipe": "1.0.0" 1951 + }, 1952 + "engines": { 1953 + "node": ">= 0.8", 1954 + "npm": "1.2.8000 || >= 1.4.16" 1955 + } 1956 + }, 1957 + "node_modules/brace-expansion": { 1958 + "version": "2.0.1", 1959 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1960 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1961 + "dev": true, 1962 + "license": "MIT", 1963 + "dependencies": { 1964 + "balanced-match": "^1.0.0" 1965 + } 1966 + }, 1967 + "node_modules/braces": { 1968 + "version": "3.0.3", 1969 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1970 + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1971 + "dev": true, 1972 + "license": "MIT", 1973 + "dependencies": { 1974 + "fill-range": "^7.1.1" 1975 + }, 1976 + "engines": { 1977 + "node": ">=8" 1978 + } 1979 + }, 1980 + "node_modules/buffer": { 1981 + "version": "6.0.3", 1982 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 1983 + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 1984 + "funding": [ 1985 + { 1986 + "type": "github", 1987 + "url": "https://github.com/sponsors/feross" 1988 + }, 1989 + { 1990 + "type": "patreon", 1991 + "url": "https://www.patreon.com/feross" 1992 + }, 1993 + { 1994 + "type": "consulting", 1995 + "url": "https://feross.org/support" 1996 + } 1997 + ], 1998 + "license": "MIT", 1999 + "dependencies": { 2000 + "base64-js": "^1.3.1", 2001 + "ieee754": "^1.2.1" 2002 + } 2003 + }, 2004 + "node_modules/bundle-require": { 2005 + "version": "5.0.0", 2006 + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz", 2007 + "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==", 2008 + "dev": true, 2009 + "license": "MIT", 2010 + "dependencies": { 2011 + "load-tsconfig": "^0.2.3" 2012 + }, 2013 + "engines": { 2014 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2015 + }, 2016 + "peerDependencies": { 2017 + "esbuild": ">=0.18" 2018 + } 2019 + }, 2020 + "node_modules/bytes": { 2021 + "version": "3.1.2", 2022 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 2023 + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 2024 + "license": "MIT", 2025 + "engines": { 2026 + "node": ">= 0.8" 2027 + } 2028 + }, 2029 + "node_modules/cac": { 2030 + "version": "6.7.14", 2031 + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 2032 + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 2033 + "dev": true, 2034 + "license": "MIT", 2035 + "engines": { 2036 + "node": ">=8" 2037 + } 2038 + }, 2039 + "node_modules/call-bind": { 2040 + "version": "1.0.7", 2041 + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", 2042 + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", 2043 + "license": "MIT", 2044 + "dependencies": { 2045 + "es-define-property": "^1.0.0", 2046 + "es-errors": "^1.3.0", 2047 + "function-bind": "^1.1.2", 2048 + "get-intrinsic": "^1.2.4", 2049 + "set-function-length": "^1.2.1" 2050 + }, 2051 + "engines": { 2052 + "node": ">= 0.4" 2053 + }, 2054 + "funding": { 2055 + "url": "https://github.com/sponsors/ljharb" 2056 + } 2057 + }, 2058 + "node_modules/cbor-extract": { 2059 + "version": "2.2.0", 2060 + "resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz", 2061 + "integrity": "sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==", 2062 + "hasInstallScript": true, 2063 + "license": "MIT", 2064 + "optional": true, 2065 + "dependencies": { 2066 + "node-gyp-build-optional-packages": "5.1.1" 2067 + }, 2068 + "bin": { 2069 + "download-cbor-prebuilds": "bin/download-prebuilds.js" 2070 + }, 2071 + "optionalDependencies": { 2072 + "@cbor-extract/cbor-extract-darwin-arm64": "2.2.0", 2073 + "@cbor-extract/cbor-extract-darwin-x64": "2.2.0", 2074 + "@cbor-extract/cbor-extract-linux-arm": "2.2.0", 2075 + "@cbor-extract/cbor-extract-linux-arm64": "2.2.0", 2076 + "@cbor-extract/cbor-extract-linux-x64": "2.2.0", 2077 + "@cbor-extract/cbor-extract-win32-x64": "2.2.0" 2078 + } 2079 + }, 2080 + "node_modules/cbor-x": { 2081 + "version": "1.6.0", 2082 + "resolved": "https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz", 2083 + "integrity": "sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==", 2084 + "license": "MIT", 2085 + "optionalDependencies": { 2086 + "cbor-extract": "^2.2.0" 2087 + } 2088 + }, 2089 + "node_modules/cborg": { 2090 + "version": "1.10.2", 2091 + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz", 2092 + "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==", 2093 + "license": "Apache-2.0", 2094 + "bin": { 2095 + "cborg": "cli.js" 2096 + } 2097 + }, 2098 + "node_modules/chalk": { 2099 + "version": "4.1.2", 2100 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2101 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2102 + "dev": true, 2103 + "license": "MIT", 2104 + "dependencies": { 2105 + "ansi-styles": "^4.1.0", 2106 + "supports-color": "^7.1.0" 2107 + }, 2108 + "engines": { 2109 + "node": ">=10" 2110 + }, 2111 + "funding": { 2112 + "url": "https://github.com/chalk/chalk?sponsor=1" 2113 + } 2114 + }, 2115 + "node_modules/character-parser": { 2116 + "version": "2.2.0", 2117 + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", 2118 + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", 2119 + "license": "MIT", 2120 + "dependencies": { 2121 + "is-regex": "^1.0.3" 2122 + } 2123 + }, 2124 + "node_modules/chokidar": { 2125 + "version": "4.0.1", 2126 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", 2127 + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", 2128 + "dev": true, 2129 + "license": "MIT", 2130 + "dependencies": { 2131 + "readdirp": "^4.0.1" 2132 + }, 2133 + "engines": { 2134 + "node": ">= 14.16.0" 2135 + }, 2136 + "funding": { 2137 + "url": "https://paulmillr.com/funding/" 2138 + } 2139 + }, 2140 + "node_modules/chownr": { 2141 + "version": "1.1.4", 2142 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 2143 + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 2144 + "license": "ISC" 2145 + }, 2146 + "node_modules/code-block-writer": { 2147 + "version": "11.0.3", 2148 + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", 2149 + "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", 2150 + "dev": true, 2151 + "license": "MIT" 2152 + }, 2153 + "node_modules/color-convert": { 2154 + "version": "2.0.1", 2155 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2156 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2157 + "dev": true, 2158 + "license": "MIT", 2159 + "dependencies": { 2160 + "color-name": "~1.1.4" 2161 + }, 2162 + "engines": { 2163 + "node": ">=7.0.0" 2164 + } 2165 + }, 2166 + "node_modules/color-name": { 2167 + "version": "1.1.4", 2168 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2169 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2170 + "dev": true, 2171 + "license": "MIT" 2172 + }, 2173 + "node_modules/colorette": { 2174 + "version": "2.0.20", 2175 + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", 2176 + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", 2177 + "dev": true, 2178 + "license": "MIT" 2179 + }, 2180 + "node_modules/combined-stream": { 2181 + "version": "1.0.8", 2182 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 2183 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 2184 + "license": "MIT", 2185 + "dependencies": { 2186 + "delayed-stream": "~1.0.0" 2187 + }, 2188 + "engines": { 2189 + "node": ">= 0.8" 2190 + } 2191 + }, 2192 + "node_modules/commander": { 2193 + "version": "9.5.0", 2194 + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", 2195 + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", 2196 + "dev": true, 2197 + "license": "MIT", 2198 + "engines": { 2199 + "node": "^12.20.0 || >=14" 2200 + } 2201 + }, 2202 + "node_modules/consola": { 2203 + "version": "3.2.3", 2204 + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", 2205 + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", 2206 + "dev": true, 2207 + "license": "MIT", 2208 + "engines": { 2209 + "node": "^14.18.0 || >=16.10.0" 2210 + } 2211 + }, 2212 + "node_modules/constantinople": { 2213 + "version": "4.0.1", 2214 + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", 2215 + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", 2216 + "license": "MIT", 2217 + "dependencies": { 2218 + "@babel/parser": "^7.6.0", 2219 + "@babel/types": "^7.6.1" 2220 + } 2221 + }, 2222 + "node_modules/content-disposition": { 2223 + "version": "0.5.4", 2224 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 2225 + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 2226 + "license": "MIT", 2227 + "dependencies": { 2228 + "safe-buffer": "5.2.1" 2229 + }, 2230 + "engines": { 2231 + "node": ">= 0.6" 2232 + } 2233 + }, 2234 + "node_modules/content-type": { 2235 + "version": "1.0.5", 2236 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 2237 + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 2238 + "license": "MIT", 2239 + "engines": { 2240 + "node": ">= 0.6" 2241 + } 2242 + }, 2243 + "node_modules/cookie": { 2244 + "version": "0.7.1", 2245 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", 2246 + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", 2247 + "license": "MIT", 2248 + "engines": { 2249 + "node": ">= 0.6" 2250 + } 2251 + }, 2252 + "node_modules/cookie-signature": { 2253 + "version": "1.0.6", 2254 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 2255 + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", 2256 + "license": "MIT" 2257 + }, 2258 + "node_modules/create-require": { 2259 + "version": "1.1.1", 2260 + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 2261 + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 2262 + "dev": true, 2263 + "license": "MIT" 2264 + }, 2265 + "node_modules/cross-spawn": { 2266 + "version": "7.0.6", 2267 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 2268 + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 2269 + "dev": true, 2270 + "license": "MIT", 2271 + "dependencies": { 2272 + "path-key": "^3.1.0", 2273 + "shebang-command": "^2.0.0", 2274 + "which": "^2.0.1" 2275 + }, 2276 + "engines": { 2277 + "node": ">= 8" 2278 + } 2279 + }, 2280 + "node_modules/custom-function": { 2281 + "version": "2.0.0", 2282 + "resolved": "https://registry.npmjs.org/custom-function/-/custom-function-2.0.0.tgz", 2283 + "integrity": "sha512-2OPHkZzq3mK1nWpJqWWkGD6Z+0AajNeIxmXl+MRVL8Vysjjf5tf9B5mo713/X2khEwBn/3BKQ7NphpP1vpVKug==", 2284 + "license": "MIT" 2285 + }, 2286 + "node_modules/dateformat": { 2287 + "version": "4.6.3", 2288 + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", 2289 + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", 2290 + "dev": true, 2291 + "license": "MIT", 2292 + "engines": { 2293 + "node": "*" 2294 + } 2295 + }, 2296 + "node_modules/debug": { 2297 + "version": "2.6.9", 2298 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2299 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2300 + "license": "MIT", 2301 + "dependencies": { 2302 + "ms": "2.0.0" 2303 + } 2304 + }, 2305 + "node_modules/decompress-response": { 2306 + "version": "6.0.0", 2307 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 2308 + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 2309 + "license": "MIT", 2310 + "dependencies": { 2311 + "mimic-response": "^3.1.0" 2312 + }, 2313 + "engines": { 2314 + "node": ">=10" 2315 + }, 2316 + "funding": { 2317 + "url": "https://github.com/sponsors/sindresorhus" 2318 + } 2319 + }, 2320 + "node_modules/deep-extend": { 2321 + "version": "0.6.0", 2322 + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 2323 + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 2324 + "license": "MIT", 2325 + "engines": { 2326 + "node": ">=4.0.0" 2327 + } 2328 + }, 2329 + "node_modules/define-data-property": { 2330 + "version": "1.1.4", 2331 + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 2332 + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 2333 + "license": "MIT", 2334 + "dependencies": { 2335 + "es-define-property": "^1.0.0", 2336 + "es-errors": "^1.3.0", 2337 + "gopd": "^1.0.1" 2338 + }, 2339 + "engines": { 2340 + "node": ">= 0.4" 2341 + }, 2342 + "funding": { 2343 + "url": "https://github.com/sponsors/ljharb" 2344 + } 2345 + }, 2346 + "node_modules/delayed-stream": { 2347 + "version": "1.0.0", 2348 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 2349 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 2350 + "license": "MIT", 2351 + "engines": { 2352 + "node": ">=0.4.0" 2353 + } 2354 + }, 2355 + "node_modules/depd": { 2356 + "version": "2.0.0", 2357 + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 2358 + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 2359 + "license": "MIT", 2360 + "engines": { 2361 + "node": ">= 0.8" 2362 + } 2363 + }, 2364 + "node_modules/destroy": { 2365 + "version": "1.2.0", 2366 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 2367 + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 2368 + "license": "MIT", 2369 + "engines": { 2370 + "node": ">= 0.8", 2371 + "npm": "1.2.8000 || >= 1.4.16" 2372 + } 2373 + }, 2374 + "node_modules/detect-libc": { 2375 + "version": "2.0.3", 2376 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", 2377 + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", 2378 + "license": "Apache-2.0", 2379 + "engines": { 2380 + "node": ">=8" 2381 + } 2382 + }, 2383 + "node_modules/diff": { 2384 + "version": "4.0.2", 2385 + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 2386 + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 2387 + "dev": true, 2388 + "license": "BSD-3-Clause", 2389 + "engines": { 2390 + "node": ">=0.3.1" 2391 + } 2392 + }, 2393 + "node_modules/doctypes": { 2394 + "version": "1.1.0", 2395 + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", 2396 + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", 2397 + "license": "MIT" 2398 + }, 2399 + "node_modules/dom-serializer": { 2400 + "version": "2.0.0", 2401 + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 2402 + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 2403 + "license": "MIT", 2404 + "dependencies": { 2405 + "domelementtype": "^2.3.0", 2406 + "domhandler": "^5.0.2", 2407 + "entities": "^4.2.0" 2408 + }, 2409 + "funding": { 2410 + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 2411 + } 2412 + }, 2413 + "node_modules/domconstants": { 2414 + "version": "1.1.6", 2415 + "resolved": "https://registry.npmjs.org/domconstants/-/domconstants-1.1.6.tgz", 2416 + "integrity": "sha512-CuaDrThJ4VM+LyZ4ax8n52k0KbLJZtffyGkuj1WhpTRRcSfcy/9DfOBa68jenhX96oNUTunblSJEUNC4baFdmQ==", 2417 + "license": "ISC" 2418 + }, 2419 + "node_modules/domelementtype": { 2420 + "version": "2.3.0", 2421 + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 2422 + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 2423 + "funding": [ 2424 + { 2425 + "type": "github", 2426 + "url": "https://github.com/sponsors/fb55" 2427 + } 2428 + ], 2429 + "license": "BSD-2-Clause" 2430 + }, 2431 + "node_modules/domhandler": { 2432 + "version": "5.0.3", 2433 + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 2434 + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 2435 + "license": "BSD-2-Clause", 2436 + "dependencies": { 2437 + "domelementtype": "^2.3.0" 2438 + }, 2439 + "engines": { 2440 + "node": ">= 4" 2441 + }, 2442 + "funding": { 2443 + "url": "https://github.com/fb55/domhandler?sponsor=1" 2444 + } 2445 + }, 2446 + "node_modules/domutils": { 2447 + "version": "3.1.0", 2448 + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", 2449 + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", 2450 + "license": "BSD-2-Clause", 2451 + "dependencies": { 2452 + "dom-serializer": "^2.0.0", 2453 + "domelementtype": "^2.3.0", 2454 + "domhandler": "^5.0.3" 2455 + }, 2456 + "funding": { 2457 + "url": "https://github.com/fb55/domutils?sponsor=1" 2458 + } 2459 + }, 2460 + "node_modules/dotenv": { 2461 + "version": "16.4.5", 2462 + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", 2463 + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", 2464 + "license": "BSD-2-Clause", 2465 + "engines": { 2466 + "node": ">=12" 2467 + }, 2468 + "funding": { 2469 + "url": "https://dotenvx.com" 2470 + } 2471 + }, 2472 + "node_modules/eastasianwidth": { 2473 + "version": "0.2.0", 2474 + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 2475 + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 2476 + "dev": true, 2477 + "license": "MIT" 2478 + }, 2479 + "node_modules/ee-first": { 2480 + "version": "1.1.1", 2481 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 2482 + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 2483 + "license": "MIT" 2484 + }, 2485 + "node_modules/emoji-regex": { 2486 + "version": "9.2.2", 2487 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 2488 + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 2489 + "dev": true, 2490 + "license": "MIT" 2491 + }, 2492 + "node_modules/encodeurl": { 2493 + "version": "2.0.0", 2494 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", 2495 + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", 2496 + "license": "MIT", 2497 + "engines": { 2498 + "node": ">= 0.8" 2499 + } 2500 + }, 2501 + "node_modules/end-of-stream": { 2502 + "version": "1.4.4", 2503 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 2504 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 2505 + "license": "MIT", 2506 + "dependencies": { 2507 + "once": "^1.4.0" 2508 + } 2509 + }, 2510 + "node_modules/entities": { 2511 + "version": "4.5.0", 2512 + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 2513 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 2514 + "license": "BSD-2-Clause", 2515 + "engines": { 2516 + "node": ">=0.12" 2517 + }, 2518 + "funding": { 2519 + "url": "https://github.com/fb55/entities?sponsor=1" 2520 + } 2521 + }, 2522 + "node_modules/envalid": { 2523 + "version": "8.0.0", 2524 + "resolved": "https://registry.npmjs.org/envalid/-/envalid-8.0.0.tgz", 2525 + "integrity": "sha512-PGeYJnJB5naN0ME6SH8nFcDj9HVbLpYIfg1p5lAyM9T4cH2lwtu2fLbozC/bq+HUUOIFxhX/LP0/GmlqPHT4tQ==", 2526 + "license": "MIT", 2527 + "dependencies": { 2528 + "tslib": "2.6.2" 2529 + }, 2530 + "engines": { 2531 + "node": ">=8.12" 2532 + } 2533 + }, 2534 + "node_modules/es-define-property": { 2535 + "version": "1.0.0", 2536 + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", 2537 + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", 2538 + "license": "MIT", 2539 + "dependencies": { 2540 + "get-intrinsic": "^1.2.4" 2541 + }, 2542 + "engines": { 2543 + "node": ">= 0.4" 2544 + } 2545 + }, 2546 + "node_modules/es-errors": { 2547 + "version": "1.3.0", 2548 + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 2549 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 2550 + "license": "MIT", 2551 + "engines": { 2552 + "node": ">= 0.4" 2553 + } 2554 + }, 2555 + "node_modules/esbuild": { 2556 + "version": "0.24.0", 2557 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", 2558 + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", 2559 + "dev": true, 2560 + "hasInstallScript": true, 2561 + "license": "MIT", 2562 + "bin": { 2563 + "esbuild": "bin/esbuild" 2564 + }, 2565 + "engines": { 2566 + "node": ">=18" 2567 + }, 2568 + "optionalDependencies": { 2569 + "@esbuild/aix-ppc64": "0.24.0", 2570 + "@esbuild/android-arm": "0.24.0", 2571 + "@esbuild/android-arm64": "0.24.0", 2572 + "@esbuild/android-x64": "0.24.0", 2573 + "@esbuild/darwin-arm64": "0.24.0", 2574 + "@esbuild/darwin-x64": "0.24.0", 2575 + "@esbuild/freebsd-arm64": "0.24.0", 2576 + "@esbuild/freebsd-x64": "0.24.0", 2577 + "@esbuild/linux-arm": "0.24.0", 2578 + "@esbuild/linux-arm64": "0.24.0", 2579 + "@esbuild/linux-ia32": "0.24.0", 2580 + "@esbuild/linux-loong64": "0.24.0", 2581 + "@esbuild/linux-mips64el": "0.24.0", 2582 + "@esbuild/linux-ppc64": "0.24.0", 2583 + "@esbuild/linux-riscv64": "0.24.0", 2584 + "@esbuild/linux-s390x": "0.24.0", 2585 + "@esbuild/linux-x64": "0.24.0", 2586 + "@esbuild/netbsd-x64": "0.24.0", 2587 + "@esbuild/openbsd-arm64": "0.24.0", 2588 + "@esbuild/openbsd-x64": "0.24.0", 2589 + "@esbuild/sunos-x64": "0.24.0", 2590 + "@esbuild/win32-arm64": "0.24.0", 2591 + "@esbuild/win32-ia32": "0.24.0", 2592 + "@esbuild/win32-x64": "0.24.0" 2593 + } 2594 + }, 2595 + "node_modules/escape-html": { 2596 + "version": "1.0.3", 2597 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 2598 + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 2599 + "license": "MIT" 2600 + }, 2601 + "node_modules/etag": { 2602 + "version": "1.8.1", 2603 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 2604 + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 2605 + "license": "MIT", 2606 + "engines": { 2607 + "node": ">= 0.6" 2608 + } 2609 + }, 2610 + "node_modules/event-target-shim": { 2611 + "version": "5.0.1", 2612 + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 2613 + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 2614 + "license": "MIT", 2615 + "engines": { 2616 + "node": ">=6" 2617 + } 2618 + }, 2619 + "node_modules/eventemitter3": { 2620 + "version": "4.0.7", 2621 + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 2622 + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 2623 + "license": "MIT" 2624 + }, 2625 + "node_modules/events": { 2626 + "version": "3.3.0", 2627 + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 2628 + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 2629 + "license": "MIT", 2630 + "engines": { 2631 + "node": ">=0.8.x" 2632 + } 2633 + }, 2634 + "node_modules/expand-template": { 2635 + "version": "2.0.3", 2636 + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 2637 + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 2638 + "license": "(MIT OR WTFPL)", 2639 + "engines": { 2640 + "node": ">=6" 2641 + } 2642 + }, 2643 + "node_modules/express": { 2644 + "version": "4.21.1", 2645 + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", 2646 + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", 2647 + "license": "MIT", 2648 + "dependencies": { 2649 + "accepts": "~1.3.8", 2650 + "array-flatten": "1.1.1", 2651 + "body-parser": "1.20.3", 2652 + "content-disposition": "0.5.4", 2653 + "content-type": "~1.0.4", 2654 + "cookie": "0.7.1", 2655 + "cookie-signature": "1.0.6", 2656 + "debug": "2.6.9", 2657 + "depd": "2.0.0", 2658 + "encodeurl": "~2.0.0", 2659 + "escape-html": "~1.0.3", 2660 + "etag": "~1.8.1", 2661 + "finalhandler": "1.3.1", 2662 + "fresh": "0.5.2", 2663 + "http-errors": "2.0.0", 2664 + "merge-descriptors": "1.0.3", 2665 + "methods": "~1.1.2", 2666 + "on-finished": "2.4.1", 2667 + "parseurl": "~1.3.3", 2668 + "path-to-regexp": "0.1.10", 2669 + "proxy-addr": "~2.0.7", 2670 + "qs": "6.13.0", 2671 + "range-parser": "~1.2.1", 2672 + "safe-buffer": "5.2.1", 2673 + "send": "0.19.0", 2674 + "serve-static": "1.16.2", 2675 + "setprototypeof": "1.2.0", 2676 + "statuses": "2.0.1", 2677 + "type-is": "~1.6.18", 2678 + "utils-merge": "1.0.1", 2679 + "vary": "~1.1.2" 2680 + }, 2681 + "engines": { 2682 + "node": ">= 0.10.0" 2683 + } 2684 + }, 2685 + "node_modules/fast-copy": { 2686 + "version": "3.0.2", 2687 + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", 2688 + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", 2689 + "dev": true, 2690 + "license": "MIT" 2691 + }, 2692 + "node_modules/fast-glob": { 2693 + "version": "3.3.2", 2694 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 2695 + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 2696 + "dev": true, 2697 + "license": "MIT", 2698 + "dependencies": { 2699 + "@nodelib/fs.stat": "^2.0.2", 2700 + "@nodelib/fs.walk": "^1.2.3", 2701 + "glob-parent": "^5.1.2", 2702 + "merge2": "^1.3.0", 2703 + "micromatch": "^4.0.4" 2704 + }, 2705 + "engines": { 2706 + "node": ">=8.6.0" 2707 + } 2708 + }, 2709 + "node_modules/fast-redact": { 2710 + "version": "3.5.0", 2711 + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", 2712 + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", 2713 + "license": "MIT", 2714 + "engines": { 2715 + "node": ">=6" 2716 + } 2717 + }, 2718 + "node_modules/fast-safe-stringify": { 2719 + "version": "2.1.1", 2720 + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", 2721 + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", 2722 + "dev": true, 2723 + "license": "MIT" 2724 + }, 2725 + "node_modules/fastq": { 2726 + "version": "1.17.1", 2727 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 2728 + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 2729 + "dev": true, 2730 + "license": "ISC", 2731 + "dependencies": { 2732 + "reusify": "^1.0.4" 2733 + } 2734 + }, 2735 + "node_modules/file-uri-to-path": { 2736 + "version": "1.0.0", 2737 + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 2738 + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 2739 + "license": "MIT" 2740 + }, 2741 + "node_modules/fill-range": { 2742 + "version": "7.1.1", 2743 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2744 + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2745 + "dev": true, 2746 + "license": "MIT", 2747 + "dependencies": { 2748 + "to-regex-range": "^5.0.1" 2749 + }, 2750 + "engines": { 2751 + "node": ">=8" 2752 + } 2753 + }, 2754 + "node_modules/finalhandler": { 2755 + "version": "1.3.1", 2756 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", 2757 + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", 2758 + "license": "MIT", 2759 + "dependencies": { 2760 + "debug": "2.6.9", 2761 + "encodeurl": "~2.0.0", 2762 + "escape-html": "~1.0.3", 2763 + "on-finished": "2.4.1", 2764 + "parseurl": "~1.3.3", 2765 + "statuses": "2.0.1", 2766 + "unpipe": "~1.0.0" 2767 + }, 2768 + "engines": { 2769 + "node": ">= 0.8" 2770 + } 2771 + }, 2772 + "node_modules/follow-redirects": { 2773 + "version": "1.15.9", 2774 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", 2775 + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", 2776 + "funding": [ 2777 + { 2778 + "type": "individual", 2779 + "url": "https://github.com/sponsors/RubenVerborgh" 2780 + } 2781 + ], 2782 + "license": "MIT", 2783 + "engines": { 2784 + "node": ">=4.0" 2785 + }, 2786 + "peerDependenciesMeta": { 2787 + "debug": { 2788 + "optional": true 2789 + } 2790 + } 2791 + }, 2792 + "node_modules/foreground-child": { 2793 + "version": "3.3.0", 2794 + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 2795 + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 2796 + "dev": true, 2797 + "license": "ISC", 2798 + "dependencies": { 2799 + "cross-spawn": "^7.0.0", 2800 + "signal-exit": "^4.0.1" 2801 + }, 2802 + "engines": { 2803 + "node": ">=14" 2804 + }, 2805 + "funding": { 2806 + "url": "https://github.com/sponsors/isaacs" 2807 + } 2808 + }, 2809 + "node_modules/form-data": { 2810 + "version": "4.0.1", 2811 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", 2812 + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", 2813 + "license": "MIT", 2814 + "dependencies": { 2815 + "asynckit": "^0.4.0", 2816 + "combined-stream": "^1.0.8", 2817 + "mime-types": "^2.1.12" 2818 + }, 2819 + "engines": { 2820 + "node": ">= 6" 2821 + } 2822 + }, 2823 + "node_modules/forwarded": { 2824 + "version": "0.2.0", 2825 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 2826 + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 2827 + "license": "MIT", 2828 + "engines": { 2829 + "node": ">= 0.6" 2830 + } 2831 + }, 2832 + "node_modules/fresh": { 2833 + "version": "0.5.2", 2834 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 2835 + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 2836 + "license": "MIT", 2837 + "engines": { 2838 + "node": ">= 0.6" 2839 + } 2840 + }, 2841 + "node_modules/fs-constants": { 2842 + "version": "1.0.0", 2843 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 2844 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 2845 + "license": "MIT" 2846 + }, 2847 + "node_modules/fsevents": { 2848 + "version": "2.3.3", 2849 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2850 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2851 + "dev": true, 2852 + "hasInstallScript": true, 2853 + "license": "MIT", 2854 + "optional": true, 2855 + "os": [ 2856 + "darwin" 2857 + ], 2858 + "engines": { 2859 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2860 + } 2861 + }, 2862 + "node_modules/function-bind": { 2863 + "version": "1.1.2", 2864 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2865 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2866 + "license": "MIT", 2867 + "funding": { 2868 + "url": "https://github.com/sponsors/ljharb" 2869 + } 2870 + }, 2871 + "node_modules/gc-hook": { 2872 + "version": "0.4.1", 2873 + "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.4.1.tgz", 2874 + "integrity": "sha512-uiF+uUftDVLr+VRdudsdsT3/LQYnv2ntwhRH964O7xXDI57Smrek5olv75Wb8Nnz6U+7iVTRXsBlxKcsaDTJTQ==", 2875 + "license": "ISC" 2876 + }, 2877 + "node_modules/get-intrinsic": { 2878 + "version": "1.2.4", 2879 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", 2880 + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", 2881 + "license": "MIT", 2882 + "dependencies": { 2883 + "es-errors": "^1.3.0", 2884 + "function-bind": "^1.1.2", 2885 + "has-proto": "^1.0.1", 2886 + "has-symbols": "^1.0.3", 2887 + "hasown": "^2.0.0" 2888 + }, 2889 + "engines": { 2890 + "node": ">= 0.4" 2891 + }, 2892 + "funding": { 2893 + "url": "https://github.com/sponsors/ljharb" 2894 + } 2895 + }, 2896 + "node_modules/get-tsconfig": { 2897 + "version": "4.8.1", 2898 + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", 2899 + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", 2900 + "dev": true, 2901 + "license": "MIT", 2902 + "dependencies": { 2903 + "resolve-pkg-maps": "^1.0.0" 2904 + }, 2905 + "funding": { 2906 + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 2907 + } 2908 + }, 2909 + "node_modules/github-from-package": { 2910 + "version": "0.0.0", 2911 + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 2912 + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 2913 + "license": "MIT" 2914 + }, 2915 + "node_modules/glob": { 2916 + "version": "10.4.5", 2917 + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 2918 + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 2919 + "dev": true, 2920 + "license": "ISC", 2921 + "dependencies": { 2922 + "foreground-child": "^3.1.0", 2923 + "jackspeak": "^3.1.2", 2924 + "minimatch": "^9.0.4", 2925 + "minipass": "^7.1.2", 2926 + "package-json-from-dist": "^1.0.0", 2927 + "path-scurry": "^1.11.1" 2928 + }, 2929 + "bin": { 2930 + "glob": "dist/esm/bin.mjs" 2931 + }, 2932 + "funding": { 2933 + "url": "https://github.com/sponsors/isaacs" 2934 + } 2935 + }, 2936 + "node_modules/glob-parent": { 2937 + "version": "5.1.2", 2938 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2939 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2940 + "dev": true, 2941 + "license": "ISC", 2942 + "dependencies": { 2943 + "is-glob": "^4.0.1" 2944 + }, 2945 + "engines": { 2946 + "node": ">= 6" 2947 + } 2948 + }, 2949 + "node_modules/gopd": { 2950 + "version": "1.1.0", 2951 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.1.0.tgz", 2952 + "integrity": "sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==", 2953 + "license": "MIT", 2954 + "dependencies": { 2955 + "get-intrinsic": "^1.2.4" 2956 + }, 2957 + "engines": { 2958 + "node": ">= 0.4" 2959 + }, 2960 + "funding": { 2961 + "url": "https://github.com/sponsors/ljharb" 2962 + } 2963 + }, 2964 + "node_modules/graphemer": { 2965 + "version": "1.4.0", 2966 + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 2967 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 2968 + "license": "MIT" 2969 + }, 2970 + "node_modules/has-flag": { 2971 + "version": "4.0.0", 2972 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2973 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2974 + "dev": true, 2975 + "license": "MIT", 2976 + "engines": { 2977 + "node": ">=8" 2978 + } 2979 + }, 2980 + "node_modules/has-property-descriptors": { 2981 + "version": "1.0.2", 2982 + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 2983 + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 2984 + "license": "MIT", 2985 + "dependencies": { 2986 + "es-define-property": "^1.0.0" 2987 + }, 2988 + "funding": { 2989 + "url": "https://github.com/sponsors/ljharb" 2990 + } 2991 + }, 2992 + "node_modules/has-proto": { 2993 + "version": "1.1.0", 2994 + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", 2995 + "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", 2996 + "license": "MIT", 2997 + "dependencies": { 2998 + "call-bind": "^1.0.7" 2999 + }, 3000 + "engines": { 3001 + "node": ">= 0.4" 3002 + }, 3003 + "funding": { 3004 + "url": "https://github.com/sponsors/ljharb" 3005 + } 3006 + }, 3007 + "node_modules/has-symbols": { 3008 + "version": "1.1.0", 3009 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 3010 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 3011 + "license": "MIT", 3012 + "engines": { 3013 + "node": ">= 0.4" 3014 + }, 3015 + "funding": { 3016 + "url": "https://github.com/sponsors/ljharb" 3017 + } 3018 + }, 3019 + "node_modules/has-tostringtag": { 3020 + "version": "1.0.2", 3021 + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", 3022 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 3023 + "license": "MIT", 3024 + "dependencies": { 3025 + "has-symbols": "^1.0.3" 3026 + }, 3027 + "engines": { 3028 + "node": ">= 0.4" 3029 + }, 3030 + "funding": { 3031 + "url": "https://github.com/sponsors/ljharb" 3032 + } 3033 + }, 3034 + "node_modules/hasown": { 3035 + "version": "2.0.2", 3036 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 3037 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 3038 + "license": "MIT", 3039 + "dependencies": { 3040 + "function-bind": "^1.1.2" 3041 + }, 3042 + "engines": { 3043 + "node": ">= 0.4" 3044 + } 3045 + }, 3046 + "node_modules/help-me": { 3047 + "version": "5.0.0", 3048 + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", 3049 + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", 3050 + "dev": true, 3051 + "license": "MIT" 3052 + }, 3053 + "node_modules/html-escaper": { 3054 + "version": "3.0.3", 3055 + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", 3056 + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", 3057 + "license": "MIT" 3058 + }, 3059 + "node_modules/htmlparser2": { 3060 + "version": "9.1.0", 3061 + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", 3062 + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", 3063 + "funding": [ 3064 + "https://github.com/fb55/htmlparser2?sponsor=1", 3065 + { 3066 + "type": "github", 3067 + "url": "https://github.com/sponsors/fb55" 3068 + } 3069 + ], 3070 + "license": "MIT", 3071 + "dependencies": { 3072 + "domelementtype": "^2.3.0", 3073 + "domhandler": "^5.0.3", 3074 + "domutils": "^3.1.0", 3075 + "entities": "^4.5.0" 3076 + } 3077 + }, 3078 + "node_modules/http-errors": { 3079 + "version": "2.0.0", 3080 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 3081 + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 3082 + "license": "MIT", 3083 + "dependencies": { 3084 + "depd": "2.0.0", 3085 + "inherits": "2.0.4", 3086 + "setprototypeof": "1.2.0", 3087 + "statuses": "2.0.1", 3088 + "toidentifier": "1.0.1" 3089 + }, 3090 + "engines": { 3091 + "node": ">= 0.8" 3092 + } 3093 + }, 3094 + "node_modules/iconv-lite": { 3095 + "version": "0.4.24", 3096 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 3097 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 3098 + "license": "MIT", 3099 + "dependencies": { 3100 + "safer-buffer": ">= 2.1.2 < 3" 3101 + }, 3102 + "engines": { 3103 + "node": ">=0.10.0" 3104 + } 3105 + }, 3106 + "node_modules/ieee754": { 3107 + "version": "1.2.1", 3108 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 3109 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 3110 + "funding": [ 3111 + { 3112 + "type": "github", 3113 + "url": "https://github.com/sponsors/feross" 3114 + }, 3115 + { 3116 + "type": "patreon", 3117 + "url": "https://www.patreon.com/feross" 3118 + }, 3119 + { 3120 + "type": "consulting", 3121 + "url": "https://feross.org/support" 3122 + } 3123 + ], 3124 + "license": "BSD-3-Clause" 3125 + }, 3126 + "node_modules/inherits": { 3127 + "version": "2.0.4", 3128 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3129 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3130 + "license": "ISC" 3131 + }, 3132 + "node_modules/ini": { 3133 + "version": "1.3.8", 3134 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 3135 + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 3136 + "license": "ISC" 3137 + }, 3138 + "node_modules/ipaddr.js": { 3139 + "version": "2.2.0", 3140 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", 3141 + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", 3142 + "license": "MIT", 3143 + "engines": { 3144 + "node": ">= 10" 3145 + } 3146 + }, 3147 + "node_modules/iron-session": { 3148 + "version": "8.0.4", 3149 + "resolved": "https://registry.npmjs.org/iron-session/-/iron-session-8.0.4.tgz", 3150 + "integrity": "sha512-9ivNnaKOd08osD0lJ3i6If23GFS2LsxyMU8Gf/uBUEgm8/8CC1hrrCHFDpMo3IFbpBgwoo/eairRsaD3c5itxA==", 3151 + "funding": [ 3152 + "https://github.com/sponsors/vvo", 3153 + "https://github.com/sponsors/brc-dd" 3154 + ], 3155 + "license": "MIT", 3156 + "dependencies": { 3157 + "cookie": "^0.7.2", 3158 + "iron-webcrypto": "^1.2.1", 3159 + "uncrypto": "^0.1.3" 3160 + } 3161 + }, 3162 + "node_modules/iron-session/node_modules/cookie": { 3163 + "version": "0.7.2", 3164 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", 3165 + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", 3166 + "license": "MIT", 3167 + "engines": { 3168 + "node": ">= 0.6" 3169 + } 3170 + }, 3171 + "node_modules/iron-webcrypto": { 3172 + "version": "1.2.1", 3173 + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", 3174 + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", 3175 + "license": "MIT", 3176 + "funding": { 3177 + "url": "https://github.com/sponsors/brc-dd" 3178 + } 3179 + }, 3180 + "node_modules/is-core-module": { 3181 + "version": "2.15.1", 3182 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", 3183 + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", 3184 + "license": "MIT", 3185 + "dependencies": { 3186 + "hasown": "^2.0.2" 3187 + }, 3188 + "engines": { 3189 + "node": ">= 0.4" 3190 + }, 3191 + "funding": { 3192 + "url": "https://github.com/sponsors/ljharb" 3193 + } 3194 + }, 3195 + "node_modules/is-expression": { 3196 + "version": "4.0.0", 3197 + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", 3198 + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", 3199 + "license": "MIT", 3200 + "dependencies": { 3201 + "acorn": "^7.1.1", 3202 + "object-assign": "^4.1.1" 3203 + } 3204 + }, 3205 + "node_modules/is-expression/node_modules/acorn": { 3206 + "version": "7.4.1", 3207 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 3208 + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 3209 + "license": "MIT", 3210 + "bin": { 3211 + "acorn": "bin/acorn" 3212 + }, 3213 + "engines": { 3214 + "node": ">=0.4.0" 3215 + } 3216 + }, 3217 + "node_modules/is-extglob": { 3218 + "version": "2.1.1", 3219 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3220 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3221 + "dev": true, 3222 + "license": "MIT", 3223 + "engines": { 3224 + "node": ">=0.10.0" 3225 + } 3226 + }, 3227 + "node_modules/is-fullwidth-code-point": { 3228 + "version": "3.0.0", 3229 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3230 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3231 + "dev": true, 3232 + "license": "MIT", 3233 + "engines": { 3234 + "node": ">=8" 3235 + } 3236 + }, 3237 + "node_modules/is-glob": { 3238 + "version": "4.0.3", 3239 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3240 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3241 + "dev": true, 3242 + "license": "MIT", 3243 + "dependencies": { 3244 + "is-extglob": "^2.1.1" 3245 + }, 3246 + "engines": { 3247 + "node": ">=0.10.0" 3248 + } 3249 + }, 3250 + "node_modules/is-number": { 3251 + "version": "7.0.0", 3252 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3253 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3254 + "dev": true, 3255 + "license": "MIT", 3256 + "engines": { 3257 + "node": ">=0.12.0" 3258 + } 3259 + }, 3260 + "node_modules/is-promise": { 3261 + "version": "2.2.2", 3262 + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", 3263 + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", 3264 + "license": "MIT" 3265 + }, 3266 + "node_modules/is-regex": { 3267 + "version": "1.2.0", 3268 + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", 3269 + "integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==", 3270 + "license": "MIT", 3271 + "dependencies": { 3272 + "call-bind": "^1.0.7", 3273 + "gopd": "^1.1.0", 3274 + "has-tostringtag": "^1.0.2", 3275 + "hasown": "^2.0.2" 3276 + }, 3277 + "engines": { 3278 + "node": ">= 0.4" 3279 + }, 3280 + "funding": { 3281 + "url": "https://github.com/sponsors/ljharb" 3282 + } 3283 + }, 3284 + "node_modules/isexe": { 3285 + "version": "2.0.0", 3286 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3287 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3288 + "dev": true, 3289 + "license": "ISC" 3290 + }, 3291 + "node_modules/iso-datestring-validator": { 3292 + "version": "2.2.2", 3293 + "resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz", 3294 + "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==", 3295 + "license": "MIT" 3296 + }, 3297 + "node_modules/jackspeak": { 3298 + "version": "3.4.3", 3299 + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 3300 + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 3301 + "dev": true, 3302 + "license": "BlueOak-1.0.0", 3303 + "dependencies": { 3304 + "@isaacs/cliui": "^8.0.2" 3305 + }, 3306 + "funding": { 3307 + "url": "https://github.com/sponsors/isaacs" 3308 + }, 3309 + "optionalDependencies": { 3310 + "@pkgjs/parseargs": "^0.11.0" 3311 + } 3312 + }, 3313 + "node_modules/jose": { 3314 + "version": "5.9.6", 3315 + "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", 3316 + "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", 3317 + "license": "MIT", 3318 + "funding": { 3319 + "url": "https://github.com/sponsors/panva" 3320 + } 3321 + }, 3322 + "node_modules/joycon": { 3323 + "version": "3.1.1", 3324 + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", 3325 + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", 3326 + "dev": true, 3327 + "license": "MIT", 3328 + "engines": { 3329 + "node": ">=10" 3330 + } 3331 + }, 3332 + "node_modules/js-stringify": { 3333 + "version": "1.0.2", 3334 + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", 3335 + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", 3336 + "license": "MIT" 3337 + }, 3338 + "node_modules/jstransformer": { 3339 + "version": "1.0.0", 3340 + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", 3341 + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", 3342 + "license": "MIT", 3343 + "dependencies": { 3344 + "is-promise": "^2.0.0", 3345 + "promise": "^7.0.1" 3346 + } 3347 + }, 3348 + "node_modules/kysely": { 3349 + "version": "0.27.4", 3350 + "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.27.4.tgz", 3351 + "integrity": "sha512-dyNKv2KRvYOQPLCAOCjjQuCk4YFd33BvGdf/o5bC7FiW+BB6snA81Zt+2wT9QDFzKqxKa5rrOmvlK/anehCcgA==", 3352 + "license": "MIT", 3353 + "engines": { 3354 + "node": ">=14.0.0" 3355 + } 3356 + }, 3357 + "node_modules/lilconfig": { 3358 + "version": "3.1.2", 3359 + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", 3360 + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", 3361 + "dev": true, 3362 + "license": "MIT", 3363 + "engines": { 3364 + "node": ">=14" 3365 + }, 3366 + "funding": { 3367 + "url": "https://github.com/sponsors/antonk52" 3368 + } 3369 + }, 3370 + "node_modules/lines-and-columns": { 3371 + "version": "1.2.4", 3372 + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 3373 + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 3374 + "dev": true, 3375 + "license": "MIT" 3376 + }, 3377 + "node_modules/load-tsconfig": { 3378 + "version": "0.2.5", 3379 + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", 3380 + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", 3381 + "dev": true, 3382 + "license": "MIT", 3383 + "engines": { 3384 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 3385 + } 3386 + }, 3387 + "node_modules/lodash.sortby": { 3388 + "version": "4.7.0", 3389 + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 3390 + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", 3391 + "dev": true, 3392 + "license": "MIT" 3393 + }, 3394 + "node_modules/lru-cache": { 3395 + "version": "10.4.3", 3396 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 3397 + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 3398 + "license": "ISC" 3399 + }, 3400 + "node_modules/make-error": { 3401 + "version": "1.3.6", 3402 + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 3403 + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 3404 + "dev": true, 3405 + "license": "ISC" 3406 + }, 3407 + "node_modules/media-typer": { 3408 + "version": "0.3.0", 3409 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 3410 + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 3411 + "license": "MIT", 3412 + "engines": { 3413 + "node": ">= 0.6" 3414 + } 3415 + }, 3416 + "node_modules/merge-descriptors": { 3417 + "version": "1.0.3", 3418 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", 3419 + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", 3420 + "license": "MIT", 3421 + "funding": { 3422 + "url": "https://github.com/sponsors/sindresorhus" 3423 + } 3424 + }, 3425 + "node_modules/merge2": { 3426 + "version": "1.4.1", 3427 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 3428 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 3429 + "dev": true, 3430 + "license": "MIT", 3431 + "engines": { 3432 + "node": ">= 8" 3433 + } 3434 + }, 3435 + "node_modules/methods": { 3436 + "version": "1.1.2", 3437 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 3438 + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 3439 + "license": "MIT", 3440 + "engines": { 3441 + "node": ">= 0.6" 3442 + } 3443 + }, 3444 + "node_modules/micromatch": { 3445 + "version": "4.0.8", 3446 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 3447 + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 3448 + "dev": true, 3449 + "license": "MIT", 3450 + "dependencies": { 3451 + "braces": "^3.0.3", 3452 + "picomatch": "^2.3.1" 3453 + }, 3454 + "engines": { 3455 + "node": ">=8.6" 3456 + } 3457 + }, 3458 + "node_modules/mime": { 3459 + "version": "1.6.0", 3460 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 3461 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 3462 + "license": "MIT", 3463 + "bin": { 3464 + "mime": "cli.js" 3465 + }, 3466 + "engines": { 3467 + "node": ">=4" 3468 + } 3469 + }, 3470 + "node_modules/mime-db": { 3471 + "version": "1.52.0", 3472 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 3473 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 3474 + "license": "MIT", 3475 + "engines": { 3476 + "node": ">= 0.6" 3477 + } 3478 + }, 3479 + "node_modules/mime-types": { 3480 + "version": "2.1.35", 3481 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 3482 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 3483 + "license": "MIT", 3484 + "dependencies": { 3485 + "mime-db": "1.52.0" 3486 + }, 3487 + "engines": { 3488 + "node": ">= 0.6" 3489 + } 3490 + }, 3491 + "node_modules/mimic-response": { 3492 + "version": "3.1.0", 3493 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 3494 + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 3495 + "license": "MIT", 3496 + "engines": { 3497 + "node": ">=10" 3498 + }, 3499 + "funding": { 3500 + "url": "https://github.com/sponsors/sindresorhus" 3501 + } 3502 + }, 3503 + "node_modules/minimatch": { 3504 + "version": "9.0.5", 3505 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 3506 + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 3507 + "dev": true, 3508 + "license": "ISC", 3509 + "dependencies": { 3510 + "brace-expansion": "^2.0.1" 3511 + }, 3512 + "engines": { 3513 + "node": ">=16 || 14 >=14.17" 3514 + }, 3515 + "funding": { 3516 + "url": "https://github.com/sponsors/isaacs" 3517 + } 3518 + }, 3519 + "node_modules/minimist": { 3520 + "version": "1.2.8", 3521 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 3522 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 3523 + "license": "MIT", 3524 + "funding": { 3525 + "url": "https://github.com/sponsors/ljharb" 3526 + } 3527 + }, 3528 + "node_modules/minipass": { 3529 + "version": "7.1.2", 3530 + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 3531 + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 3532 + "dev": true, 3533 + "license": "ISC", 3534 + "engines": { 3535 + "node": ">=16 || 14 >=14.17" 3536 + } 3537 + }, 3538 + "node_modules/mkdirp": { 3539 + "version": "1.0.4", 3540 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 3541 + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 3542 + "dev": true, 3543 + "license": "MIT", 3544 + "bin": { 3545 + "mkdirp": "bin/cmd.js" 3546 + }, 3547 + "engines": { 3548 + "node": ">=10" 3549 + } 3550 + }, 3551 + "node_modules/mkdirp-classic": { 3552 + "version": "0.5.3", 3553 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 3554 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 3555 + "license": "MIT" 3556 + }, 3557 + "node_modules/ms": { 3558 + "version": "2.0.0", 3559 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3560 + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 3561 + "license": "MIT" 3562 + }, 3563 + "node_modules/multiformats": { 3564 + "version": "9.9.0", 3565 + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", 3566 + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", 3567 + "license": "(Apache-2.0 AND MIT)" 3568 + }, 3569 + "node_modules/mz": { 3570 + "version": "2.7.0", 3571 + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 3572 + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 3573 + "dev": true, 3574 + "license": "MIT", 3575 + "dependencies": { 3576 + "any-promise": "^1.0.0", 3577 + "object-assign": "^4.0.1", 3578 + "thenify-all": "^1.0.0" 3579 + } 3580 + }, 3581 + "node_modules/napi-build-utils": { 3582 + "version": "1.0.2", 3583 + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", 3584 + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", 3585 + "license": "MIT" 3586 + }, 3587 + "node_modules/negotiator": { 3588 + "version": "0.6.3", 3589 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 3590 + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 3591 + "license": "MIT", 3592 + "engines": { 3593 + "node": ">= 0.6" 3594 + } 3595 + }, 3596 + "node_modules/node-abi": { 3597 + "version": "3.71.0", 3598 + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", 3599 + "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", 3600 + "license": "MIT", 3601 + "dependencies": { 3602 + "semver": "^7.3.5" 3603 + }, 3604 + "engines": { 3605 + "node": ">=10" 3606 + } 3607 + }, 3608 + "node_modules/node-gyp-build-optional-packages": { 3609 + "version": "5.1.1", 3610 + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", 3611 + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", 3612 + "license": "MIT", 3613 + "optional": true, 3614 + "dependencies": { 3615 + "detect-libc": "^2.0.1" 3616 + }, 3617 + "bin": { 3618 + "node-gyp-build-optional-packages": "bin.js", 3619 + "node-gyp-build-optional-packages-optional": "optional.js", 3620 + "node-gyp-build-optional-packages-test": "build-test.js" 3621 + } 3622 + }, 3623 + "node_modules/object-assign": { 3624 + "version": "4.1.1", 3625 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3626 + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 3627 + "license": "MIT", 3628 + "engines": { 3629 + "node": ">=0.10.0" 3630 + } 3631 + }, 3632 + "node_modules/object-inspect": { 3633 + "version": "1.13.3", 3634 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", 3635 + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", 3636 + "license": "MIT", 3637 + "engines": { 3638 + "node": ">= 0.4" 3639 + }, 3640 + "funding": { 3641 + "url": "https://github.com/sponsors/ljharb" 3642 + } 3643 + }, 3644 + "node_modules/on-exit-leak-free": { 3645 + "version": "2.1.2", 3646 + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", 3647 + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", 3648 + "license": "MIT", 3649 + "engines": { 3650 + "node": ">=14.0.0" 3651 + } 3652 + }, 3653 + "node_modules/on-finished": { 3654 + "version": "2.4.1", 3655 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 3656 + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 3657 + "license": "MIT", 3658 + "dependencies": { 3659 + "ee-first": "1.1.1" 3660 + }, 3661 + "engines": { 3662 + "node": ">= 0.8" 3663 + } 3664 + }, 3665 + "node_modules/once": { 3666 + "version": "1.4.0", 3667 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3668 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3669 + "license": "ISC", 3670 + "dependencies": { 3671 + "wrappy": "1" 3672 + } 3673 + }, 3674 + "node_modules/p-finally": { 3675 + "version": "1.0.0", 3676 + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 3677 + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", 3678 + "license": "MIT", 3679 + "engines": { 3680 + "node": ">=4" 3681 + } 3682 + }, 3683 + "node_modules/p-queue": { 3684 + "version": "6.6.2", 3685 + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", 3686 + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", 3687 + "license": "MIT", 3688 + "dependencies": { 3689 + "eventemitter3": "^4.0.4", 3690 + "p-timeout": "^3.2.0" 3691 + }, 3692 + "engines": { 3693 + "node": ">=8" 3694 + }, 3695 + "funding": { 3696 + "url": "https://github.com/sponsors/sindresorhus" 3697 + } 3698 + }, 3699 + "node_modules/p-timeout": { 3700 + "version": "3.2.0", 3701 + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", 3702 + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", 3703 + "license": "MIT", 3704 + "dependencies": { 3705 + "p-finally": "^1.0.0" 3706 + }, 3707 + "engines": { 3708 + "node": ">=8" 3709 + } 3710 + }, 3711 + "node_modules/package-json-from-dist": { 3712 + "version": "1.0.1", 3713 + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 3714 + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 3715 + "dev": true, 3716 + "license": "BlueOak-1.0.0" 3717 + }, 3718 + "node_modules/parseurl": { 3719 + "version": "1.3.3", 3720 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 3721 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 3722 + "license": "MIT", 3723 + "engines": { 3724 + "node": ">= 0.8" 3725 + } 3726 + }, 3727 + "node_modules/path-browserify": { 3728 + "version": "1.0.1", 3729 + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", 3730 + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", 3731 + "dev": true, 3732 + "license": "MIT" 3733 + }, 3734 + "node_modules/path-key": { 3735 + "version": "3.1.1", 3736 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3737 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3738 + "dev": true, 3739 + "license": "MIT", 3740 + "engines": { 3741 + "node": ">=8" 3742 + } 3743 + }, 3744 + "node_modules/path-parse": { 3745 + "version": "1.0.7", 3746 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3747 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3748 + "license": "MIT" 3749 + }, 3750 + "node_modules/path-scurry": { 3751 + "version": "1.11.1", 3752 + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 3753 + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 3754 + "dev": true, 3755 + "license": "BlueOak-1.0.0", 3756 + "dependencies": { 3757 + "lru-cache": "^10.2.0", 3758 + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 3759 + }, 3760 + "engines": { 3761 + "node": ">=16 || 14 >=14.18" 3762 + }, 3763 + "funding": { 3764 + "url": "https://github.com/sponsors/isaacs" 3765 + } 3766 + }, 3767 + "node_modules/path-to-regexp": { 3768 + "version": "0.1.10", 3769 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", 3770 + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", 3771 + "license": "MIT" 3772 + }, 3773 + "node_modules/picocolors": { 3774 + "version": "1.1.1", 3775 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 3776 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 3777 + "dev": true, 3778 + "license": "ISC" 3779 + }, 3780 + "node_modules/picomatch": { 3781 + "version": "2.3.1", 3782 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3783 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3784 + "dev": true, 3785 + "license": "MIT", 3786 + "engines": { 3787 + "node": ">=8.6" 3788 + }, 3789 + "funding": { 3790 + "url": "https://github.com/sponsors/jonschlinkert" 3791 + } 3792 + }, 3793 + "node_modules/pino": { 3794 + "version": "9.5.0", 3795 + "resolved": "https://registry.npmjs.org/pino/-/pino-9.5.0.tgz", 3796 + "integrity": "sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==", 3797 + "license": "MIT", 3798 + "dependencies": { 3799 + "atomic-sleep": "^1.0.0", 3800 + "fast-redact": "^3.1.1", 3801 + "on-exit-leak-free": "^2.1.0", 3802 + "pino-abstract-transport": "^2.0.0", 3803 + "pino-std-serializers": "^7.0.0", 3804 + "process-warning": "^4.0.0", 3805 + "quick-format-unescaped": "^4.0.3", 3806 + "real-require": "^0.2.0", 3807 + "safe-stable-stringify": "^2.3.1", 3808 + "sonic-boom": "^4.0.1", 3809 + "thread-stream": "^3.0.0" 3810 + }, 3811 + "bin": { 3812 + "pino": "bin.js" 3813 + } 3814 + }, 3815 + "node_modules/pino-abstract-transport": { 3816 + "version": "2.0.0", 3817 + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", 3818 + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", 3819 + "license": "MIT", 3820 + "dependencies": { 3821 + "split2": "^4.0.0" 3822 + } 3823 + }, 3824 + "node_modules/pino-pretty": { 3825 + "version": "11.3.0", 3826 + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.3.0.tgz", 3827 + "integrity": "sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA==", 3828 + "dev": true, 3829 + "license": "MIT", 3830 + "dependencies": { 3831 + "colorette": "^2.0.7", 3832 + "dateformat": "^4.6.3", 3833 + "fast-copy": "^3.0.2", 3834 + "fast-safe-stringify": "^2.1.1", 3835 + "help-me": "^5.0.0", 3836 + "joycon": "^3.1.1", 3837 + "minimist": "^1.2.6", 3838 + "on-exit-leak-free": "^2.1.0", 3839 + "pino-abstract-transport": "^2.0.0", 3840 + "pump": "^3.0.0", 3841 + "readable-stream": "^4.0.0", 3842 + "secure-json-parse": "^2.4.0", 3843 + "sonic-boom": "^4.0.1", 3844 + "strip-json-comments": "^3.1.1" 3845 + }, 3846 + "bin": { 3847 + "pino-pretty": "bin.js" 3848 + } 3849 + }, 3850 + "node_modules/pino-std-serializers": { 3851 + "version": "7.0.0", 3852 + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", 3853 + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", 3854 + "license": "MIT" 3855 + }, 3856 + "node_modules/pirates": { 3857 + "version": "4.0.6", 3858 + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 3859 + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 3860 + "dev": true, 3861 + "license": "MIT", 3862 + "engines": { 3863 + "node": ">= 6" 3864 + } 3865 + }, 3866 + "node_modules/postcss-load-config": { 3867 + "version": "6.0.1", 3868 + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", 3869 + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", 3870 + "dev": true, 3871 + "funding": [ 3872 + { 3873 + "type": "opencollective", 3874 + "url": "https://opencollective.com/postcss/" 3875 + }, 3876 + { 3877 + "type": "github", 3878 + "url": "https://github.com/sponsors/ai" 3879 + } 3880 + ], 3881 + "license": "MIT", 3882 + "dependencies": { 3883 + "lilconfig": "^3.1.1" 3884 + }, 3885 + "engines": { 3886 + "node": ">= 18" 3887 + }, 3888 + "peerDependencies": { 3889 + "jiti": ">=1.21.0", 3890 + "postcss": ">=8.0.9", 3891 + "tsx": "^4.8.1", 3892 + "yaml": "^2.4.2" 3893 + }, 3894 + "peerDependenciesMeta": { 3895 + "jiti": { 3896 + "optional": true 3897 + }, 3898 + "postcss": { 3899 + "optional": true 3900 + }, 3901 + "tsx": { 3902 + "optional": true 3903 + }, 3904 + "yaml": { 3905 + "optional": true 3906 + } 3907 + } 3908 + }, 3909 + "node_modules/prebuild-install": { 3910 + "version": "7.1.2", 3911 + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", 3912 + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", 3913 + "license": "MIT", 3914 + "dependencies": { 3915 + "detect-libc": "^2.0.0", 3916 + "expand-template": "^2.0.3", 3917 + "github-from-package": "0.0.0", 3918 + "minimist": "^1.2.3", 3919 + "mkdirp-classic": "^0.5.3", 3920 + "napi-build-utils": "^1.0.1", 3921 + "node-abi": "^3.3.0", 3922 + "pump": "^3.0.0", 3923 + "rc": "^1.2.7", 3924 + "simple-get": "^4.0.0", 3925 + "tar-fs": "^2.0.0", 3926 + "tunnel-agent": "^0.6.0" 3927 + }, 3928 + "bin": { 3929 + "prebuild-install": "bin.js" 3930 + }, 3931 + "engines": { 3932 + "node": ">=10" 3933 + } 3934 + }, 3935 + "node_modules/prettier": { 3936 + "version": "3.4.1", 3937 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", 3938 + "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", 3939 + "dev": true, 3940 + "license": "MIT", 3941 + "bin": { 3942 + "prettier": "bin/prettier.cjs" 3943 + }, 3944 + "engines": { 3945 + "node": ">=14" 3946 + }, 3947 + "funding": { 3948 + "url": "https://github.com/prettier/prettier?sponsor=1" 3949 + } 3950 + }, 3951 + "node_modules/process": { 3952 + "version": "0.11.10", 3953 + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 3954 + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", 3955 + "license": "MIT", 3956 + "engines": { 3957 + "node": ">= 0.6.0" 3958 + } 3959 + }, 3960 + "node_modules/process-warning": { 3961 + "version": "4.0.0", 3962 + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", 3963 + "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", 3964 + "license": "MIT" 3965 + }, 3966 + "node_modules/promise": { 3967 + "version": "7.3.1", 3968 + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 3969 + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 3970 + "license": "MIT", 3971 + "dependencies": { 3972 + "asap": "~2.0.3" 3973 + } 3974 + }, 3975 + "node_modules/proxy-addr": { 3976 + "version": "2.0.7", 3977 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 3978 + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 3979 + "license": "MIT", 3980 + "dependencies": { 3981 + "forwarded": "0.2.0", 3982 + "ipaddr.js": "1.9.1" 3983 + }, 3984 + "engines": { 3985 + "node": ">= 0.10" 3986 + } 3987 + }, 3988 + "node_modules/proxy-addr/node_modules/ipaddr.js": { 3989 + "version": "1.9.1", 3990 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 3991 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 3992 + "license": "MIT", 3993 + "engines": { 3994 + "node": ">= 0.10" 3995 + } 3996 + }, 3997 + "node_modules/psl": { 3998 + "version": "1.15.0", 3999 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", 4000 + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", 4001 + "license": "MIT", 4002 + "dependencies": { 4003 + "punycode": "^2.3.1" 4004 + }, 4005 + "funding": { 4006 + "url": "https://github.com/sponsors/lupomontero" 4007 + } 4008 + }, 4009 + "node_modules/pug": { 4010 + "version": "3.0.3", 4011 + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", 4012 + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", 4013 + "license": "MIT", 4014 + "dependencies": { 4015 + "pug-code-gen": "^3.0.3", 4016 + "pug-filters": "^4.0.0", 4017 + "pug-lexer": "^5.0.1", 4018 + "pug-linker": "^4.0.0", 4019 + "pug-load": "^3.0.0", 4020 + "pug-parser": "^6.0.0", 4021 + "pug-runtime": "^3.0.1", 4022 + "pug-strip-comments": "^2.0.0" 4023 + } 4024 + }, 4025 + "node_modules/pug-attrs": { 4026 + "version": "3.0.0", 4027 + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", 4028 + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", 4029 + "license": "MIT", 4030 + "dependencies": { 4031 + "constantinople": "^4.0.1", 4032 + "js-stringify": "^1.0.2", 4033 + "pug-runtime": "^3.0.0" 4034 + } 4035 + }, 4036 + "node_modules/pug-code-gen": { 4037 + "version": "3.0.3", 4038 + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", 4039 + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", 4040 + "license": "MIT", 4041 + "dependencies": { 4042 + "constantinople": "^4.0.1", 4043 + "doctypes": "^1.1.0", 4044 + "js-stringify": "^1.0.2", 4045 + "pug-attrs": "^3.0.0", 4046 + "pug-error": "^2.1.0", 4047 + "pug-runtime": "^3.0.1", 4048 + "void-elements": "^3.1.0", 4049 + "with": "^7.0.0" 4050 + } 4051 + }, 4052 + "node_modules/pug-error": { 4053 + "version": "2.1.0", 4054 + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", 4055 + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", 4056 + "license": "MIT" 4057 + }, 4058 + "node_modules/pug-filters": { 4059 + "version": "4.0.0", 4060 + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", 4061 + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", 4062 + "license": "MIT", 4063 + "dependencies": { 4064 + "constantinople": "^4.0.1", 4065 + "jstransformer": "1.0.0", 4066 + "pug-error": "^2.0.0", 4067 + "pug-walk": "^2.0.0", 4068 + "resolve": "^1.15.1" 4069 + } 4070 + }, 4071 + "node_modules/pug-lexer": { 4072 + "version": "5.0.1", 4073 + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", 4074 + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", 4075 + "license": "MIT", 4076 + "dependencies": { 4077 + "character-parser": "^2.2.0", 4078 + "is-expression": "^4.0.0", 4079 + "pug-error": "^2.0.0" 4080 + } 4081 + }, 4082 + "node_modules/pug-linker": { 4083 + "version": "4.0.0", 4084 + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", 4085 + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", 4086 + "license": "MIT", 4087 + "dependencies": { 4088 + "pug-error": "^2.0.0", 4089 + "pug-walk": "^2.0.0" 4090 + } 4091 + }, 4092 + "node_modules/pug-load": { 4093 + "version": "3.0.0", 4094 + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", 4095 + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", 4096 + "license": "MIT", 4097 + "dependencies": { 4098 + "object-assign": "^4.1.1", 4099 + "pug-walk": "^2.0.0" 4100 + } 4101 + }, 4102 + "node_modules/pug-parser": { 4103 + "version": "6.0.0", 4104 + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", 4105 + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", 4106 + "license": "MIT", 4107 + "dependencies": { 4108 + "pug-error": "^2.0.0", 4109 + "token-stream": "1.0.0" 4110 + } 4111 + }, 4112 + "node_modules/pug-runtime": { 4113 + "version": "3.0.1", 4114 + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", 4115 + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", 4116 + "license": "MIT" 4117 + }, 4118 + "node_modules/pug-strip-comments": { 4119 + "version": "2.0.0", 4120 + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", 4121 + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", 4122 + "license": "MIT", 4123 + "dependencies": { 4124 + "pug-error": "^2.0.0" 4125 + } 4126 + }, 4127 + "node_modules/pug-walk": { 4128 + "version": "2.0.0", 4129 + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", 4130 + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", 4131 + "license": "MIT" 4132 + }, 4133 + "node_modules/pump": { 4134 + "version": "3.0.2", 4135 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", 4136 + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", 4137 + "license": "MIT", 4138 + "dependencies": { 4139 + "end-of-stream": "^1.1.0", 4140 + "once": "^1.3.1" 4141 + } 4142 + }, 4143 + "node_modules/punycode": { 4144 + "version": "2.3.1", 4145 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 4146 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 4147 + "license": "MIT", 4148 + "engines": { 4149 + "node": ">=6" 4150 + } 4151 + }, 4152 + "node_modules/qs": { 4153 + "version": "6.13.0", 4154 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", 4155 + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", 4156 + "license": "BSD-3-Clause", 4157 + "dependencies": { 4158 + "side-channel": "^1.0.6" 4159 + }, 4160 + "engines": { 4161 + "node": ">=0.6" 4162 + }, 4163 + "funding": { 4164 + "url": "https://github.com/sponsors/ljharb" 4165 + } 4166 + }, 4167 + "node_modules/queue-microtask": { 4168 + "version": "1.2.3", 4169 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 4170 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 4171 + "dev": true, 4172 + "funding": [ 4173 + { 4174 + "type": "github", 4175 + "url": "https://github.com/sponsors/feross" 4176 + }, 4177 + { 4178 + "type": "patreon", 4179 + "url": "https://www.patreon.com/feross" 4180 + }, 4181 + { 4182 + "type": "consulting", 4183 + "url": "https://feross.org/support" 4184 + } 4185 + ], 4186 + "license": "MIT" 4187 + }, 4188 + "node_modules/quick-format-unescaped": { 4189 + "version": "4.0.4", 4190 + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", 4191 + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", 4192 + "license": "MIT" 4193 + }, 4194 + "node_modules/range-parser": { 4195 + "version": "1.2.1", 4196 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 4197 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 4198 + "license": "MIT", 4199 + "engines": { 4200 + "node": ">= 0.6" 4201 + } 4202 + }, 4203 + "node_modules/rate-limiter-flexible": { 4204 + "version": "2.4.2", 4205 + "resolved": "https://registry.npmjs.org/rate-limiter-flexible/-/rate-limiter-flexible-2.4.2.tgz", 4206 + "integrity": "sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==", 4207 + "license": "ISC" 4208 + }, 4209 + "node_modules/raw-body": { 4210 + "version": "2.5.2", 4211 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 4212 + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 4213 + "license": "MIT", 4214 + "dependencies": { 4215 + "bytes": "3.1.2", 4216 + "http-errors": "2.0.0", 4217 + "iconv-lite": "0.4.24", 4218 + "unpipe": "1.0.0" 4219 + }, 4220 + "engines": { 4221 + "node": ">= 0.8" 4222 + } 4223 + }, 4224 + "node_modules/rc": { 4225 + "version": "1.2.8", 4226 + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 4227 + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 4228 + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", 4229 + "dependencies": { 4230 + "deep-extend": "^0.6.0", 4231 + "ini": "~1.3.0", 4232 + "minimist": "^1.2.0", 4233 + "strip-json-comments": "~2.0.1" 4234 + }, 4235 + "bin": { 4236 + "rc": "cli.js" 4237 + } 4238 + }, 4239 + "node_modules/rc/node_modules/strip-json-comments": { 4240 + "version": "2.0.1", 4241 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 4242 + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 4243 + "license": "MIT", 4244 + "engines": { 4245 + "node": ">=0.10.0" 4246 + } 4247 + }, 4248 + "node_modules/readable-stream": { 4249 + "version": "4.5.2", 4250 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", 4251 + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", 4252 + "license": "MIT", 4253 + "dependencies": { 4254 + "abort-controller": "^3.0.0", 4255 + "buffer": "^6.0.3", 4256 + "events": "^3.3.0", 4257 + "process": "^0.11.10", 4258 + "string_decoder": "^1.3.0" 4259 + }, 4260 + "engines": { 4261 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4262 + } 4263 + }, 4264 + "node_modules/readdirp": { 4265 + "version": "4.0.2", 4266 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", 4267 + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", 4268 + "dev": true, 4269 + "license": "MIT", 4270 + "engines": { 4271 + "node": ">= 14.16.0" 4272 + }, 4273 + "funding": { 4274 + "type": "individual", 4275 + "url": "https://paulmillr.com/funding/" 4276 + } 4277 + }, 4278 + "node_modules/real-require": { 4279 + "version": "0.2.0", 4280 + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", 4281 + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", 4282 + "license": "MIT", 4283 + "engines": { 4284 + "node": ">= 12.13.0" 4285 + } 4286 + }, 4287 + "node_modules/resolve": { 4288 + "version": "1.22.8", 4289 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 4290 + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 4291 + "license": "MIT", 4292 + "dependencies": { 4293 + "is-core-module": "^2.13.0", 4294 + "path-parse": "^1.0.7", 4295 + "supports-preserve-symlinks-flag": "^1.0.0" 4296 + }, 4297 + "bin": { 4298 + "resolve": "bin/resolve" 4299 + }, 4300 + "funding": { 4301 + "url": "https://github.com/sponsors/ljharb" 4302 + } 4303 + }, 4304 + "node_modules/resolve-from": { 4305 + "version": "5.0.0", 4306 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 4307 + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 4308 + "dev": true, 4309 + "license": "MIT", 4310 + "engines": { 4311 + "node": ">=8" 4312 + } 4313 + }, 4314 + "node_modules/resolve-pkg-maps": { 4315 + "version": "1.0.0", 4316 + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", 4317 + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", 4318 + "dev": true, 4319 + "license": "MIT", 4320 + "funding": { 4321 + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 4322 + } 4323 + }, 4324 + "node_modules/reusify": { 4325 + "version": "1.0.4", 4326 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 4327 + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 4328 + "dev": true, 4329 + "license": "MIT", 4330 + "engines": { 4331 + "iojs": ">=1.0.0", 4332 + "node": ">=0.10.0" 4333 + } 4334 + }, 4335 + "node_modules/rimraf": { 4336 + "version": "5.0.10", 4337 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", 4338 + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", 4339 + "dev": true, 4340 + "license": "ISC", 4341 + "dependencies": { 4342 + "glob": "^10.3.7" 4343 + }, 4344 + "bin": { 4345 + "rimraf": "dist/esm/bin.mjs" 4346 + }, 4347 + "funding": { 4348 + "url": "https://github.com/sponsors/isaacs" 4349 + } 4350 + }, 4351 + "node_modules/rollup": { 4352 + "version": "4.28.0", 4353 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz", 4354 + "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==", 4355 + "dev": true, 4356 + "license": "MIT", 4357 + "dependencies": { 4358 + "@types/estree": "1.0.6" 4359 + }, 4360 + "bin": { 4361 + "rollup": "dist/bin/rollup" 4362 + }, 4363 + "engines": { 4364 + "node": ">=18.0.0", 4365 + "npm": ">=8.0.0" 4366 + }, 4367 + "optionalDependencies": { 4368 + "@rollup/rollup-android-arm-eabi": "4.28.0", 4369 + "@rollup/rollup-android-arm64": "4.28.0", 4370 + "@rollup/rollup-darwin-arm64": "4.28.0", 4371 + "@rollup/rollup-darwin-x64": "4.28.0", 4372 + "@rollup/rollup-freebsd-arm64": "4.28.0", 4373 + "@rollup/rollup-freebsd-x64": "4.28.0", 4374 + "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", 4375 + "@rollup/rollup-linux-arm-musleabihf": "4.28.0", 4376 + "@rollup/rollup-linux-arm64-gnu": "4.28.0", 4377 + "@rollup/rollup-linux-arm64-musl": "4.28.0", 4378 + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", 4379 + "@rollup/rollup-linux-riscv64-gnu": "4.28.0", 4380 + "@rollup/rollup-linux-s390x-gnu": "4.28.0", 4381 + "@rollup/rollup-linux-x64-gnu": "4.28.0", 4382 + "@rollup/rollup-linux-x64-musl": "4.28.0", 4383 + "@rollup/rollup-win32-arm64-msvc": "4.28.0", 4384 + "@rollup/rollup-win32-ia32-msvc": "4.28.0", 4385 + "@rollup/rollup-win32-x64-msvc": "4.28.0", 4386 + "fsevents": "~2.3.2" 4387 + } 4388 + }, 4389 + "node_modules/run-parallel": { 4390 + "version": "1.2.0", 4391 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 4392 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 4393 + "dev": true, 4394 + "funding": [ 4395 + { 4396 + "type": "github", 4397 + "url": "https://github.com/sponsors/feross" 4398 + }, 4399 + { 4400 + "type": "patreon", 4401 + "url": "https://www.patreon.com/feross" 4402 + }, 4403 + { 4404 + "type": "consulting", 4405 + "url": "https://feross.org/support" 4406 + } 4407 + ], 4408 + "license": "MIT", 4409 + "dependencies": { 4410 + "queue-microtask": "^1.2.2" 4411 + } 4412 + }, 4413 + "node_modules/safe-buffer": { 4414 + "version": "5.2.1", 4415 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 4416 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 4417 + "funding": [ 4418 + { 4419 + "type": "github", 4420 + "url": "https://github.com/sponsors/feross" 4421 + }, 4422 + { 4423 + "type": "patreon", 4424 + "url": "https://www.patreon.com/feross" 4425 + }, 4426 + { 4427 + "type": "consulting", 4428 + "url": "https://feross.org/support" 4429 + } 4430 + ], 4431 + "license": "MIT" 4432 + }, 4433 + "node_modules/safe-stable-stringify": { 4434 + "version": "2.5.0", 4435 + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", 4436 + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", 4437 + "license": "MIT", 4438 + "engines": { 4439 + "node": ">=10" 4440 + } 4441 + }, 4442 + "node_modules/safer-buffer": { 4443 + "version": "2.1.2", 4444 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 4445 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 4446 + "license": "MIT" 4447 + }, 4448 + "node_modules/secure-json-parse": { 4449 + "version": "2.7.0", 4450 + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", 4451 + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", 4452 + "dev": true, 4453 + "license": "BSD-3-Clause" 4454 + }, 4455 + "node_modules/semver": { 4456 + "version": "7.6.3", 4457 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 4458 + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 4459 + "license": "ISC", 4460 + "bin": { 4461 + "semver": "bin/semver.js" 4462 + }, 4463 + "engines": { 4464 + "node": ">=10" 4465 + } 4466 + }, 4467 + "node_modules/send": { 4468 + "version": "0.19.0", 4469 + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", 4470 + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", 4471 + "license": "MIT", 4472 + "dependencies": { 4473 + "debug": "2.6.9", 4474 + "depd": "2.0.0", 4475 + "destroy": "1.2.0", 4476 + "encodeurl": "~1.0.2", 4477 + "escape-html": "~1.0.3", 4478 + "etag": "~1.8.1", 4479 + "fresh": "0.5.2", 4480 + "http-errors": "2.0.0", 4481 + "mime": "1.6.0", 4482 + "ms": "2.1.3", 4483 + "on-finished": "2.4.1", 4484 + "range-parser": "~1.2.1", 4485 + "statuses": "2.0.1" 4486 + }, 4487 + "engines": { 4488 + "node": ">= 0.8.0" 4489 + } 4490 + }, 4491 + "node_modules/send/node_modules/encodeurl": { 4492 + "version": "1.0.2", 4493 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 4494 + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 4495 + "license": "MIT", 4496 + "engines": { 4497 + "node": ">= 0.8" 4498 + } 4499 + }, 4500 + "node_modules/send/node_modules/ms": { 4501 + "version": "2.1.3", 4502 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 4503 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 4504 + "license": "MIT" 4505 + }, 4506 + "node_modules/serve-static": { 4507 + "version": "1.16.2", 4508 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", 4509 + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", 4510 + "license": "MIT", 4511 + "dependencies": { 4512 + "encodeurl": "~2.0.0", 4513 + "escape-html": "~1.0.3", 4514 + "parseurl": "~1.3.3", 4515 + "send": "0.19.0" 4516 + }, 4517 + "engines": { 4518 + "node": ">= 0.8.0" 4519 + } 4520 + }, 4521 + "node_modules/set-function-length": { 4522 + "version": "1.2.2", 4523 + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 4524 + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 4525 + "license": "MIT", 4526 + "dependencies": { 4527 + "define-data-property": "^1.1.4", 4528 + "es-errors": "^1.3.0", 4529 + "function-bind": "^1.1.2", 4530 + "get-intrinsic": "^1.2.4", 4531 + "gopd": "^1.0.1", 4532 + "has-property-descriptors": "^1.0.2" 4533 + }, 4534 + "engines": { 4535 + "node": ">= 0.4" 4536 + } 4537 + }, 4538 + "node_modules/setprototypeof": { 4539 + "version": "1.2.0", 4540 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 4541 + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 4542 + "license": "ISC" 4543 + }, 4544 + "node_modules/shebang-command": { 4545 + "version": "2.0.0", 4546 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 4547 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 4548 + "dev": true, 4549 + "license": "MIT", 4550 + "dependencies": { 4551 + "shebang-regex": "^3.0.0" 4552 + }, 4553 + "engines": { 4554 + "node": ">=8" 4555 + } 4556 + }, 4557 + "node_modules/shebang-regex": { 4558 + "version": "3.0.0", 4559 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 4560 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 4561 + "dev": true, 4562 + "license": "MIT", 4563 + "engines": { 4564 + "node": ">=8" 4565 + } 4566 + }, 4567 + "node_modules/side-channel": { 4568 + "version": "1.0.6", 4569 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", 4570 + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", 4571 + "license": "MIT", 4572 + "dependencies": { 4573 + "call-bind": "^1.0.7", 4574 + "es-errors": "^1.3.0", 4575 + "get-intrinsic": "^1.2.4", 4576 + "object-inspect": "^1.13.1" 4577 + }, 4578 + "engines": { 4579 + "node": ">= 0.4" 4580 + }, 4581 + "funding": { 4582 + "url": "https://github.com/sponsors/ljharb" 4583 + } 4584 + }, 4585 + "node_modules/signal-exit": { 4586 + "version": "4.1.0", 4587 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 4588 + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 4589 + "dev": true, 4590 + "license": "ISC", 4591 + "engines": { 4592 + "node": ">=14" 4593 + }, 4594 + "funding": { 4595 + "url": "https://github.com/sponsors/isaacs" 4596 + } 4597 + }, 4598 + "node_modules/simple-concat": { 4599 + "version": "1.0.1", 4600 + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 4601 + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 4602 + "funding": [ 4603 + { 4604 + "type": "github", 4605 + "url": "https://github.com/sponsors/feross" 4606 + }, 4607 + { 4608 + "type": "patreon", 4609 + "url": "https://www.patreon.com/feross" 4610 + }, 4611 + { 4612 + "type": "consulting", 4613 + "url": "https://feross.org/support" 4614 + } 4615 + ], 4616 + "license": "MIT" 4617 + }, 4618 + "node_modules/simple-get": { 4619 + "version": "4.0.1", 4620 + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 4621 + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 4622 + "funding": [ 4623 + { 4624 + "type": "github", 4625 + "url": "https://github.com/sponsors/feross" 4626 + }, 4627 + { 4628 + "type": "patreon", 4629 + "url": "https://www.patreon.com/feross" 4630 + }, 4631 + { 4632 + "type": "consulting", 4633 + "url": "https://feross.org/support" 4634 + } 4635 + ], 4636 + "license": "MIT", 4637 + "dependencies": { 4638 + "decompress-response": "^6.0.0", 4639 + "once": "^1.3.1", 4640 + "simple-concat": "^1.0.0" 4641 + } 4642 + }, 4643 + "node_modules/sonic-boom": { 4644 + "version": "4.2.0", 4645 + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", 4646 + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", 4647 + "license": "MIT", 4648 + "dependencies": { 4649 + "atomic-sleep": "^1.0.0" 4650 + } 4651 + }, 4652 + "node_modules/source-map": { 4653 + "version": "0.8.0-beta.0", 4654 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 4655 + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 4656 + "dev": true, 4657 + "license": "BSD-3-Clause", 4658 + "dependencies": { 4659 + "whatwg-url": "^7.0.0" 4660 + }, 4661 + "engines": { 4662 + "node": ">= 8" 4663 + } 4664 + }, 4665 + "node_modules/split2": { 4666 + "version": "4.2.0", 4667 + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 4668 + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 4669 + "license": "ISC", 4670 + "engines": { 4671 + "node": ">= 10.x" 4672 + } 4673 + }, 4674 + "node_modules/statuses": { 4675 + "version": "2.0.1", 4676 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 4677 + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 4678 + "license": "MIT", 4679 + "engines": { 4680 + "node": ">= 0.8" 4681 + } 4682 + }, 4683 + "node_modules/string_decoder": { 4684 + "version": "1.3.0", 4685 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 4686 + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 4687 + "license": "MIT", 4688 + "dependencies": { 4689 + "safe-buffer": "~5.2.0" 4690 + } 4691 + }, 4692 + "node_modules/string-width": { 4693 + "version": "5.1.2", 4694 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 4695 + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 4696 + "dev": true, 4697 + "license": "MIT", 4698 + "dependencies": { 4699 + "eastasianwidth": "^0.2.0", 4700 + "emoji-regex": "^9.2.2", 4701 + "strip-ansi": "^7.0.1" 4702 + }, 4703 + "engines": { 4704 + "node": ">=12" 4705 + }, 4706 + "funding": { 4707 + "url": "https://github.com/sponsors/sindresorhus" 4708 + } 4709 + }, 4710 + "node_modules/string-width-cjs": { 4711 + "name": "string-width", 4712 + "version": "4.2.3", 4713 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4714 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4715 + "dev": true, 4716 + "license": "MIT", 4717 + "dependencies": { 4718 + "emoji-regex": "^8.0.0", 4719 + "is-fullwidth-code-point": "^3.0.0", 4720 + "strip-ansi": "^6.0.1" 4721 + }, 4722 + "engines": { 4723 + "node": ">=8" 4724 + } 4725 + }, 4726 + "node_modules/string-width-cjs/node_modules/ansi-regex": { 4727 + "version": "5.0.1", 4728 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 4729 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 4730 + "dev": true, 4731 + "license": "MIT", 4732 + "engines": { 4733 + "node": ">=8" 4734 + } 4735 + }, 4736 + "node_modules/string-width-cjs/node_modules/emoji-regex": { 4737 + "version": "8.0.0", 4738 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 4739 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 4740 + "dev": true, 4741 + "license": "MIT" 4742 + }, 4743 + "node_modules/string-width-cjs/node_modules/strip-ansi": { 4744 + "version": "6.0.1", 4745 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4746 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4747 + "dev": true, 4748 + "license": "MIT", 4749 + "dependencies": { 4750 + "ansi-regex": "^5.0.1" 4751 + }, 4752 + "engines": { 4753 + "node": ">=8" 4754 + } 4755 + }, 4756 + "node_modules/strip-ansi": { 4757 + "version": "7.1.0", 4758 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 4759 + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 4760 + "dev": true, 4761 + "license": "MIT", 4762 + "dependencies": { 4763 + "ansi-regex": "^6.0.1" 4764 + }, 4765 + "engines": { 4766 + "node": ">=12" 4767 + }, 4768 + "funding": { 4769 + "url": "https://github.com/chalk/strip-ansi?sponsor=1" 4770 + } 4771 + }, 4772 + "node_modules/strip-ansi-cjs": { 4773 + "name": "strip-ansi", 4774 + "version": "6.0.1", 4775 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4776 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4777 + "dev": true, 4778 + "license": "MIT", 4779 + "dependencies": { 4780 + "ansi-regex": "^5.0.1" 4781 + }, 4782 + "engines": { 4783 + "node": ">=8" 4784 + } 4785 + }, 4786 + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 4787 + "version": "5.0.1", 4788 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 4789 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 4790 + "dev": true, 4791 + "license": "MIT", 4792 + "engines": { 4793 + "node": ">=8" 4794 + } 4795 + }, 4796 + "node_modules/strip-json-comments": { 4797 + "version": "3.1.1", 4798 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 4799 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 4800 + "dev": true, 4801 + "license": "MIT", 4802 + "engines": { 4803 + "node": ">=8" 4804 + }, 4805 + "funding": { 4806 + "url": "https://github.com/sponsors/sindresorhus" 4807 + } 4808 + }, 4809 + "node_modules/sucrase": { 4810 + "version": "3.35.0", 4811 + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 4812 + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 4813 + "dev": true, 4814 + "license": "MIT", 4815 + "dependencies": { 4816 + "@jridgewell/gen-mapping": "^0.3.2", 4817 + "commander": "^4.0.0", 4818 + "glob": "^10.3.10", 4819 + "lines-and-columns": "^1.1.6", 4820 + "mz": "^2.7.0", 4821 + "pirates": "^4.0.1", 4822 + "ts-interface-checker": "^0.1.9" 4823 + }, 4824 + "bin": { 4825 + "sucrase": "bin/sucrase", 4826 + "sucrase-node": "bin/sucrase-node" 4827 + }, 4828 + "engines": { 4829 + "node": ">=16 || 14 >=14.17" 4830 + } 4831 + }, 4832 + "node_modules/sucrase/node_modules/commander": { 4833 + "version": "4.1.1", 4834 + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 4835 + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 4836 + "dev": true, 4837 + "license": "MIT", 4838 + "engines": { 4839 + "node": ">= 6" 4840 + } 4841 + }, 4842 + "node_modules/supports-color": { 4843 + "version": "7.2.0", 4844 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 4845 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 4846 + "dev": true, 4847 + "license": "MIT", 4848 + "dependencies": { 4849 + "has-flag": "^4.0.0" 4850 + }, 4851 + "engines": { 4852 + "node": ">=8" 4853 + } 4854 + }, 4855 + "node_modules/supports-preserve-symlinks-flag": { 4856 + "version": "1.0.0", 4857 + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 4858 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 4859 + "license": "MIT", 4860 + "engines": { 4861 + "node": ">= 0.4" 4862 + }, 4863 + "funding": { 4864 + "url": "https://github.com/sponsors/ljharb" 4865 + } 4866 + }, 4867 + "node_modules/tar-fs": { 4868 + "version": "2.1.1", 4869 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 4870 + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 4871 + "license": "MIT", 4872 + "dependencies": { 4873 + "chownr": "^1.1.1", 4874 + "mkdirp-classic": "^0.5.2", 4875 + "pump": "^3.0.0", 4876 + "tar-stream": "^2.1.4" 4877 + } 4878 + }, 4879 + "node_modules/tar-stream": { 4880 + "version": "2.2.0", 4881 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 4882 + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 4883 + "license": "MIT", 4884 + "dependencies": { 4885 + "bl": "^4.0.3", 4886 + "end-of-stream": "^1.4.1", 4887 + "fs-constants": "^1.0.0", 4888 + "inherits": "^2.0.3", 4889 + "readable-stream": "^3.1.1" 4890 + }, 4891 + "engines": { 4892 + "node": ">=6" 4893 + } 4894 + }, 4895 + "node_modules/tar-stream/node_modules/readable-stream": { 4896 + "version": "3.6.2", 4897 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 4898 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 4899 + "license": "MIT", 4900 + "dependencies": { 4901 + "inherits": "^2.0.3", 4902 + "string_decoder": "^1.1.1", 4903 + "util-deprecate": "^1.0.1" 4904 + }, 4905 + "engines": { 4906 + "node": ">= 6" 4907 + } 4908 + }, 4909 + "node_modules/thenify": { 4910 + "version": "3.3.1", 4911 + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 4912 + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 4913 + "dev": true, 4914 + "license": "MIT", 4915 + "dependencies": { 4916 + "any-promise": "^1.0.0" 4917 + } 4918 + }, 4919 + "node_modules/thenify-all": { 4920 + "version": "1.6.0", 4921 + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 4922 + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 4923 + "dev": true, 4924 + "license": "MIT", 4925 + "dependencies": { 4926 + "thenify": ">= 3.1.0 < 4" 4927 + }, 4928 + "engines": { 4929 + "node": ">=0.8" 4930 + } 4931 + }, 4932 + "node_modules/thread-stream": { 4933 + "version": "3.1.0", 4934 + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", 4935 + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", 4936 + "license": "MIT", 4937 + "dependencies": { 4938 + "real-require": "^0.2.0" 4939 + } 4940 + }, 4941 + "node_modules/tinyexec": { 4942 + "version": "0.3.1", 4943 + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", 4944 + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", 4945 + "dev": true, 4946 + "license": "MIT" 4947 + }, 4948 + "node_modules/tinyglobby": { 4949 + "version": "0.2.10", 4950 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", 4951 + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", 4952 + "dev": true, 4953 + "license": "MIT", 4954 + "dependencies": { 4955 + "fdir": "^6.4.2", 4956 + "picomatch": "^4.0.2" 4957 + }, 4958 + "engines": { 4959 + "node": ">=12.0.0" 4960 + } 4961 + }, 4962 + "node_modules/tinyglobby/node_modules/fdir": { 4963 + "version": "6.4.2", 4964 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", 4965 + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", 4966 + "dev": true, 4967 + "license": "MIT", 4968 + "peerDependencies": { 4969 + "picomatch": "^3 || ^4" 4970 + }, 4971 + "peerDependenciesMeta": { 4972 + "picomatch": { 4973 + "optional": true 4974 + } 4975 + } 4976 + }, 4977 + "node_modules/tinyglobby/node_modules/picomatch": { 4978 + "version": "4.0.2", 4979 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 4980 + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 4981 + "dev": true, 4982 + "license": "MIT", 4983 + "engines": { 4984 + "node": ">=12" 4985 + }, 4986 + "funding": { 4987 + "url": "https://github.com/sponsors/jonschlinkert" 4988 + } 4989 + }, 4990 + "node_modules/tlds": { 4991 + "version": "1.255.0", 4992 + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.255.0.tgz", 4993 + "integrity": "sha512-tcwMRIioTcF/FcxLev8MJWxCp+GUALRhFEqbDoZrnowmKSGqPrl5pqS+Sut2m8BgJ6S4FExCSSpGffZ0Tks6Aw==", 4994 + "license": "MIT", 4995 + "bin": { 4996 + "tlds": "bin.js" 4997 + } 4998 + }, 4999 + "node_modules/to-regex-range": { 5000 + "version": "5.0.1", 5001 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 5002 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 5003 + "dev": true, 5004 + "license": "MIT", 5005 + "dependencies": { 5006 + "is-number": "^7.0.0" 5007 + }, 5008 + "engines": { 5009 + "node": ">=8.0" 5010 + } 5011 + }, 5012 + "node_modules/toidentifier": { 5013 + "version": "1.0.1", 5014 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 5015 + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 5016 + "license": "MIT", 5017 + "engines": { 5018 + "node": ">=0.6" 5019 + } 5020 + }, 5021 + "node_modules/token-stream": { 5022 + "version": "1.0.0", 5023 + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", 5024 + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", 5025 + "license": "MIT" 5026 + }, 5027 + "node_modules/tr46": { 5028 + "version": "1.0.1", 5029 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 5030 + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", 5031 + "dev": true, 5032 + "license": "MIT", 5033 + "dependencies": { 5034 + "punycode": "^2.1.0" 5035 + } 5036 + }, 5037 + "node_modules/tree-kill": { 5038 + "version": "1.2.2", 5039 + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 5040 + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 5041 + "dev": true, 5042 + "license": "MIT", 5043 + "bin": { 5044 + "tree-kill": "cli.js" 5045 + } 5046 + }, 5047 + "node_modules/ts-interface-checker": { 5048 + "version": "0.1.13", 5049 + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 5050 + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 5051 + "dev": true, 5052 + "license": "Apache-2.0" 5053 + }, 5054 + "node_modules/ts-morph": { 5055 + "version": "16.0.0", 5056 + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-16.0.0.tgz", 5057 + "integrity": "sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==", 5058 + "dev": true, 5059 + "license": "MIT", 5060 + "dependencies": { 5061 + "@ts-morph/common": "~0.17.0", 5062 + "code-block-writer": "^11.0.3" 5063 + } 5064 + }, 5065 + "node_modules/ts-node": { 5066 + "version": "10.9.2", 5067 + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", 5068 + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", 5069 + "dev": true, 5070 + "license": "MIT", 5071 + "dependencies": { 5072 + "@cspotcode/source-map-support": "^0.8.0", 5073 + "@tsconfig/node10": "^1.0.7", 5074 + "@tsconfig/node12": "^1.0.7", 5075 + "@tsconfig/node14": "^1.0.0", 5076 + "@tsconfig/node16": "^1.0.2", 5077 + "acorn": "^8.4.1", 5078 + "acorn-walk": "^8.1.1", 5079 + "arg": "^4.1.0", 5080 + "create-require": "^1.1.0", 5081 + "diff": "^4.0.1", 5082 + "make-error": "^1.1.1", 5083 + "v8-compile-cache-lib": "^3.0.1", 5084 + "yn": "3.1.1" 5085 + }, 5086 + "bin": { 5087 + "ts-node": "dist/bin.js", 5088 + "ts-node-cwd": "dist/bin-cwd.js", 5089 + "ts-node-esm": "dist/bin-esm.js", 5090 + "ts-node-script": "dist/bin-script.js", 5091 + "ts-node-transpile-only": "dist/bin-transpile.js", 5092 + "ts-script": "dist/bin-script-deprecated.js" 5093 + }, 5094 + "peerDependencies": { 5095 + "@swc/core": ">=1.2.50", 5096 + "@swc/wasm": ">=1.2.50", 5097 + "@types/node": "*", 5098 + "typescript": ">=2.7" 5099 + }, 5100 + "peerDependenciesMeta": { 5101 + "@swc/core": { 5102 + "optional": true 5103 + }, 5104 + "@swc/wasm": { 5105 + "optional": true 5106 + } 5107 + } 5108 + }, 5109 + "node_modules/tslib": { 5110 + "version": "2.6.2", 5111 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 5112 + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 5113 + "license": "0BSD" 5114 + }, 5115 + "node_modules/tsup": { 5116 + "version": "8.3.5", 5117 + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.3.5.tgz", 5118 + "integrity": "sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==", 5119 + "dev": true, 5120 + "license": "MIT", 5121 + "dependencies": { 5122 + "bundle-require": "^5.0.0", 5123 + "cac": "^6.7.14", 5124 + "chokidar": "^4.0.1", 5125 + "consola": "^3.2.3", 5126 + "debug": "^4.3.7", 5127 + "esbuild": "^0.24.0", 5128 + "joycon": "^3.1.1", 5129 + "picocolors": "^1.1.1", 5130 + "postcss-load-config": "^6.0.1", 5131 + "resolve-from": "^5.0.0", 5132 + "rollup": "^4.24.0", 5133 + "source-map": "0.8.0-beta.0", 5134 + "sucrase": "^3.35.0", 5135 + "tinyexec": "^0.3.1", 5136 + "tinyglobby": "^0.2.9", 5137 + "tree-kill": "^1.2.2" 5138 + }, 5139 + "bin": { 5140 + "tsup": "dist/cli-default.js", 5141 + "tsup-node": "dist/cli-node.js" 5142 + }, 5143 + "engines": { 5144 + "node": ">=18" 5145 + }, 5146 + "peerDependencies": { 5147 + "@microsoft/api-extractor": "^7.36.0", 5148 + "@swc/core": "^1", 5149 + "postcss": "^8.4.12", 5150 + "typescript": ">=4.5.0" 5151 + }, 5152 + "peerDependenciesMeta": { 5153 + "@microsoft/api-extractor": { 5154 + "optional": true 5155 + }, 5156 + "@swc/core": { 5157 + "optional": true 5158 + }, 5159 + "postcss": { 5160 + "optional": true 5161 + }, 5162 + "typescript": { 5163 + "optional": true 5164 + } 5165 + } 5166 + }, 5167 + "node_modules/tsup/node_modules/debug": { 5168 + "version": "4.3.7", 5169 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", 5170 + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", 5171 + "dev": true, 5172 + "license": "MIT", 5173 + "dependencies": { 5174 + "ms": "^2.1.3" 5175 + }, 5176 + "engines": { 5177 + "node": ">=6.0" 5178 + }, 5179 + "peerDependenciesMeta": { 5180 + "supports-color": { 5181 + "optional": true 5182 + } 5183 + } 5184 + }, 5185 + "node_modules/tsup/node_modules/ms": { 5186 + "version": "2.1.3", 5187 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 5188 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 5189 + "dev": true, 5190 + "license": "MIT" 5191 + }, 5192 + "node_modules/tsx": { 5193 + "version": "4.19.2", 5194 + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", 5195 + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", 5196 + "dev": true, 5197 + "license": "MIT", 5198 + "dependencies": { 5199 + "esbuild": "~0.23.0", 5200 + "get-tsconfig": "^4.7.5" 5201 + }, 5202 + "bin": { 5203 + "tsx": "dist/cli.mjs" 5204 + }, 5205 + "engines": { 5206 + "node": ">=18.0.0" 5207 + }, 5208 + "optionalDependencies": { 5209 + "fsevents": "~2.3.3" 5210 + } 5211 + }, 5212 + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { 5213 + "version": "0.23.1", 5214 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", 5215 + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", 5216 + "cpu": [ 5217 + "ppc64" 5218 + ], 5219 + "dev": true, 5220 + "license": "MIT", 5221 + "optional": true, 5222 + "os": [ 5223 + "aix" 5224 + ], 5225 + "engines": { 5226 + "node": ">=18" 5227 + } 5228 + }, 5229 + "node_modules/tsx/node_modules/@esbuild/android-arm": { 5230 + "version": "0.23.1", 5231 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", 5232 + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", 5233 + "cpu": [ 5234 + "arm" 5235 + ], 5236 + "dev": true, 5237 + "license": "MIT", 5238 + "optional": true, 5239 + "os": [ 5240 + "android" 5241 + ], 5242 + "engines": { 5243 + "node": ">=18" 5244 + } 5245 + }, 5246 + "node_modules/tsx/node_modules/@esbuild/android-arm64": { 5247 + "version": "0.23.1", 5248 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", 5249 + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", 5250 + "cpu": [ 5251 + "arm64" 5252 + ], 5253 + "dev": true, 5254 + "license": "MIT", 5255 + "optional": true, 5256 + "os": [ 5257 + "android" 5258 + ], 5259 + "engines": { 5260 + "node": ">=18" 5261 + } 5262 + }, 5263 + "node_modules/tsx/node_modules/@esbuild/android-x64": { 5264 + "version": "0.23.1", 5265 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", 5266 + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", 5267 + "cpu": [ 5268 + "x64" 5269 + ], 5270 + "dev": true, 5271 + "license": "MIT", 5272 + "optional": true, 5273 + "os": [ 5274 + "android" 5275 + ], 5276 + "engines": { 5277 + "node": ">=18" 5278 + } 5279 + }, 5280 + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { 5281 + "version": "0.23.1", 5282 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", 5283 + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", 5284 + "cpu": [ 5285 + "arm64" 5286 + ], 5287 + "dev": true, 5288 + "license": "MIT", 5289 + "optional": true, 5290 + "os": [ 5291 + "darwin" 5292 + ], 5293 + "engines": { 5294 + "node": ">=18" 5295 + } 5296 + }, 5297 + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { 5298 + "version": "0.23.1", 5299 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", 5300 + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", 5301 + "cpu": [ 5302 + "x64" 5303 + ], 5304 + "dev": true, 5305 + "license": "MIT", 5306 + "optional": true, 5307 + "os": [ 5308 + "darwin" 5309 + ], 5310 + "engines": { 5311 + "node": ">=18" 5312 + } 5313 + }, 5314 + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { 5315 + "version": "0.23.1", 5316 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", 5317 + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", 5318 + "cpu": [ 5319 + "arm64" 5320 + ], 5321 + "dev": true, 5322 + "license": "MIT", 5323 + "optional": true, 5324 + "os": [ 5325 + "freebsd" 5326 + ], 5327 + "engines": { 5328 + "node": ">=18" 5329 + } 5330 + }, 5331 + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { 5332 + "version": "0.23.1", 5333 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", 5334 + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", 5335 + "cpu": [ 5336 + "x64" 5337 + ], 5338 + "dev": true, 5339 + "license": "MIT", 5340 + "optional": true, 5341 + "os": [ 5342 + "freebsd" 5343 + ], 5344 + "engines": { 5345 + "node": ">=18" 5346 + } 5347 + }, 5348 + "node_modules/tsx/node_modules/@esbuild/linux-arm": { 5349 + "version": "0.23.1", 5350 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", 5351 + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", 5352 + "cpu": [ 5353 + "arm" 5354 + ], 5355 + "dev": true, 5356 + "license": "MIT", 5357 + "optional": true, 5358 + "os": [ 5359 + "linux" 5360 + ], 5361 + "engines": { 5362 + "node": ">=18" 5363 + } 5364 + }, 5365 + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { 5366 + "version": "0.23.1", 5367 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", 5368 + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", 5369 + "cpu": [ 5370 + "arm64" 5371 + ], 5372 + "dev": true, 5373 + "license": "MIT", 5374 + "optional": true, 5375 + "os": [ 5376 + "linux" 5377 + ], 5378 + "engines": { 5379 + "node": ">=18" 5380 + } 5381 + }, 5382 + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { 5383 + "version": "0.23.1", 5384 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", 5385 + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", 5386 + "cpu": [ 5387 + "ia32" 5388 + ], 5389 + "dev": true, 5390 + "license": "MIT", 5391 + "optional": true, 5392 + "os": [ 5393 + "linux" 5394 + ], 5395 + "engines": { 5396 + "node": ">=18" 5397 + } 5398 + }, 5399 + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { 5400 + "version": "0.23.1", 5401 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", 5402 + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", 5403 + "cpu": [ 5404 + "loong64" 5405 + ], 5406 + "dev": true, 5407 + "license": "MIT", 5408 + "optional": true, 5409 + "os": [ 5410 + "linux" 5411 + ], 5412 + "engines": { 5413 + "node": ">=18" 5414 + } 5415 + }, 5416 + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { 5417 + "version": "0.23.1", 5418 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", 5419 + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", 5420 + "cpu": [ 5421 + "mips64el" 5422 + ], 5423 + "dev": true, 5424 + "license": "MIT", 5425 + "optional": true, 5426 + "os": [ 5427 + "linux" 5428 + ], 5429 + "engines": { 5430 + "node": ">=18" 5431 + } 5432 + }, 5433 + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { 5434 + "version": "0.23.1", 5435 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", 5436 + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", 5437 + "cpu": [ 5438 + "ppc64" 5439 + ], 5440 + "dev": true, 5441 + "license": "MIT", 5442 + "optional": true, 5443 + "os": [ 5444 + "linux" 5445 + ], 5446 + "engines": { 5447 + "node": ">=18" 5448 + } 5449 + }, 5450 + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { 5451 + "version": "0.23.1", 5452 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", 5453 + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", 5454 + "cpu": [ 5455 + "riscv64" 5456 + ], 5457 + "dev": true, 5458 + "license": "MIT", 5459 + "optional": true, 5460 + "os": [ 5461 + "linux" 5462 + ], 5463 + "engines": { 5464 + "node": ">=18" 5465 + } 5466 + }, 5467 + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { 5468 + "version": "0.23.1", 5469 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", 5470 + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", 5471 + "cpu": [ 5472 + "s390x" 5473 + ], 5474 + "dev": true, 5475 + "license": "MIT", 5476 + "optional": true, 5477 + "os": [ 5478 + "linux" 5479 + ], 5480 + "engines": { 5481 + "node": ">=18" 5482 + } 5483 + }, 5484 + "node_modules/tsx/node_modules/@esbuild/linux-x64": { 5485 + "version": "0.23.1", 5486 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", 5487 + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", 5488 + "cpu": [ 5489 + "x64" 5490 + ], 5491 + "dev": true, 5492 + "license": "MIT", 5493 + "optional": true, 5494 + "os": [ 5495 + "linux" 5496 + ], 5497 + "engines": { 5498 + "node": ">=18" 5499 + } 5500 + }, 5501 + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { 5502 + "version": "0.23.1", 5503 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", 5504 + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", 5505 + "cpu": [ 5506 + "x64" 5507 + ], 5508 + "dev": true, 5509 + "license": "MIT", 5510 + "optional": true, 5511 + "os": [ 5512 + "netbsd" 5513 + ], 5514 + "engines": { 5515 + "node": ">=18" 5516 + } 5517 + }, 5518 + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { 5519 + "version": "0.23.1", 5520 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", 5521 + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", 5522 + "cpu": [ 5523 + "arm64" 5524 + ], 5525 + "dev": true, 5526 + "license": "MIT", 5527 + "optional": true, 5528 + "os": [ 5529 + "openbsd" 5530 + ], 5531 + "engines": { 5532 + "node": ">=18" 5533 + } 5534 + }, 5535 + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { 5536 + "version": "0.23.1", 5537 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", 5538 + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", 5539 + "cpu": [ 5540 + "x64" 5541 + ], 5542 + "dev": true, 5543 + "license": "MIT", 5544 + "optional": true, 5545 + "os": [ 5546 + "openbsd" 5547 + ], 5548 + "engines": { 5549 + "node": ">=18" 5550 + } 5551 + }, 5552 + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { 5553 + "version": "0.23.1", 5554 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", 5555 + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", 5556 + "cpu": [ 5557 + "x64" 5558 + ], 5559 + "dev": true, 5560 + "license": "MIT", 5561 + "optional": true, 5562 + "os": [ 5563 + "sunos" 5564 + ], 5565 + "engines": { 5566 + "node": ">=18" 5567 + } 5568 + }, 5569 + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { 5570 + "version": "0.23.1", 5571 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", 5572 + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", 5573 + "cpu": [ 5574 + "arm64" 5575 + ], 5576 + "dev": true, 5577 + "license": "MIT", 5578 + "optional": true, 5579 + "os": [ 5580 + "win32" 5581 + ], 5582 + "engines": { 5583 + "node": ">=18" 5584 + } 5585 + }, 5586 + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { 5587 + "version": "0.23.1", 5588 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", 5589 + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", 5590 + "cpu": [ 5591 + "ia32" 5592 + ], 5593 + "dev": true, 5594 + "license": "MIT", 5595 + "optional": true, 5596 + "os": [ 5597 + "win32" 5598 + ], 5599 + "engines": { 5600 + "node": ">=18" 5601 + } 5602 + }, 5603 + "node_modules/tsx/node_modules/@esbuild/win32-x64": { 5604 + "version": "0.23.1", 5605 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", 5606 + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", 5607 + "cpu": [ 5608 + "x64" 5609 + ], 5610 + "dev": true, 5611 + "license": "MIT", 5612 + "optional": true, 5613 + "os": [ 5614 + "win32" 5615 + ], 5616 + "engines": { 5617 + "node": ">=18" 5618 + } 5619 + }, 5620 + "node_modules/tsx/node_modules/esbuild": { 5621 + "version": "0.23.1", 5622 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", 5623 + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", 5624 + "dev": true, 5625 + "hasInstallScript": true, 5626 + "license": "MIT", 5627 + "bin": { 5628 + "esbuild": "bin/esbuild" 5629 + }, 5630 + "engines": { 5631 + "node": ">=18" 5632 + }, 5633 + "optionalDependencies": { 5634 + "@esbuild/aix-ppc64": "0.23.1", 5635 + "@esbuild/android-arm": "0.23.1", 5636 + "@esbuild/android-arm64": "0.23.1", 5637 + "@esbuild/android-x64": "0.23.1", 5638 + "@esbuild/darwin-arm64": "0.23.1", 5639 + "@esbuild/darwin-x64": "0.23.1", 5640 + "@esbuild/freebsd-arm64": "0.23.1", 5641 + "@esbuild/freebsd-x64": "0.23.1", 5642 + "@esbuild/linux-arm": "0.23.1", 5643 + "@esbuild/linux-arm64": "0.23.1", 5644 + "@esbuild/linux-ia32": "0.23.1", 5645 + "@esbuild/linux-loong64": "0.23.1", 5646 + "@esbuild/linux-mips64el": "0.23.1", 5647 + "@esbuild/linux-ppc64": "0.23.1", 5648 + "@esbuild/linux-riscv64": "0.23.1", 5649 + "@esbuild/linux-s390x": "0.23.1", 5650 + "@esbuild/linux-x64": "0.23.1", 5651 + "@esbuild/netbsd-x64": "0.23.1", 5652 + "@esbuild/openbsd-arm64": "0.23.1", 5653 + "@esbuild/openbsd-x64": "0.23.1", 5654 + "@esbuild/sunos-x64": "0.23.1", 5655 + "@esbuild/win32-arm64": "0.23.1", 5656 + "@esbuild/win32-ia32": "0.23.1", 5657 + "@esbuild/win32-x64": "0.23.1" 5658 + } 5659 + }, 5660 + "node_modules/tunnel-agent": { 5661 + "version": "0.6.0", 5662 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 5663 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 5664 + "license": "Apache-2.0", 5665 + "dependencies": { 5666 + "safe-buffer": "^5.0.1" 5667 + }, 5668 + "engines": { 5669 + "node": "*" 5670 + } 5671 + }, 5672 + "node_modules/type-is": { 5673 + "version": "1.6.18", 5674 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 5675 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 5676 + "license": "MIT", 5677 + "dependencies": { 5678 + "media-typer": "0.3.0", 5679 + "mime-types": "~2.1.24" 5680 + }, 5681 + "engines": { 5682 + "node": ">= 0.6" 5683 + } 5684 + }, 5685 + "node_modules/typescript": { 5686 + "version": "5.7.2", 5687 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", 5688 + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", 5689 + "dev": true, 5690 + "license": "Apache-2.0", 5691 + "bin": { 5692 + "tsc": "bin/tsc", 5693 + "tsserver": "bin/tsserver" 5694 + }, 5695 + "engines": { 5696 + "node": ">=14.17" 5697 + } 5698 + }, 5699 + "node_modules/udomdiff": { 5700 + "version": "1.1.2", 5701 + "resolved": "https://registry.npmjs.org/udomdiff/-/udomdiff-1.1.2.tgz", 5702 + "integrity": "sha512-v+Z8Jal+GtmKGtJ34GIQlCJAxrDt9kbjpNsNvYoAXFyr4gNfWlD4uJJuoNNu/0UTVaKvQwHaSU095YDl71lKPw==", 5703 + "license": "ISC" 5704 + }, 5705 + "node_modules/uhtml": { 5706 + "version": "4.7.0", 5707 + "resolved": "https://registry.npmjs.org/uhtml/-/uhtml-4.7.0.tgz", 5708 + "integrity": "sha512-3j0YIvbu863FB27mwnuLcKK0zPsHVQWwUs/GFanVz/QSwsItT/lOcGKmIdpqlcfWpYBCBoMEdfK0vIN/P2kCmg==", 5709 + "license": "MIT", 5710 + "dependencies": { 5711 + "@webreflection/uparser": "^0.4.0", 5712 + "custom-function": "^2.0.0", 5713 + "domconstants": "^1.1.6", 5714 + "gc-hook": "^0.4.1", 5715 + "html-escaper": "^3.0.3", 5716 + "htmlparser2": "^9.1.0", 5717 + "udomdiff": "^1.1.2" 5718 + }, 5719 + "optionalDependencies": { 5720 + "@preact/signals-core": "^1.8.0", 5721 + "@webreflection/signal": "^2.1.2" 5722 + } 5723 + }, 5724 + "node_modules/uint8arrays": { 5725 + "version": "3.0.0", 5726 + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", 5727 + "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", 5728 + "license": "MIT", 5729 + "dependencies": { 5730 + "multiformats": "^9.4.2" 5731 + } 5732 + }, 5733 + "node_modules/uncrypto": { 5734 + "version": "0.1.3", 5735 + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", 5736 + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", 5737 + "license": "MIT" 5738 + }, 5739 + "node_modules/undici": { 5740 + "version": "6.21.0", 5741 + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", 5742 + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", 5743 + "license": "MIT", 5744 + "engines": { 5745 + "node": ">=18.17" 5746 + } 5747 + }, 5748 + "node_modules/undici-types": { 5749 + "version": "6.20.0", 5750 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 5751 + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 5752 + "dev": true, 5753 + "license": "MIT" 5754 + }, 5755 + "node_modules/unpipe": { 5756 + "version": "1.0.0", 5757 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 5758 + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 5759 + "license": "MIT", 5760 + "engines": { 5761 + "node": ">= 0.8" 5762 + } 5763 + }, 5764 + "node_modules/util-deprecate": { 5765 + "version": "1.0.2", 5766 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 5767 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 5768 + "license": "MIT" 5769 + }, 5770 + "node_modules/utils-merge": { 5771 + "version": "1.0.1", 5772 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 5773 + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 5774 + "license": "MIT", 5775 + "engines": { 5776 + "node": ">= 0.4.0" 5777 + } 5778 + }, 5779 + "node_modules/v8-compile-cache-lib": { 5780 + "version": "3.0.1", 5781 + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 5782 + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 5783 + "dev": true, 5784 + "license": "MIT" 5785 + }, 5786 + "node_modules/varint": { 5787 + "version": "6.0.0", 5788 + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", 5789 + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", 5790 + "license": "MIT" 5791 + }, 5792 + "node_modules/vary": { 5793 + "version": "1.1.2", 5794 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 5795 + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 5796 + "license": "MIT", 5797 + "engines": { 5798 + "node": ">= 0.8" 5799 + } 5800 + }, 5801 + "node_modules/void-elements": { 5802 + "version": "3.1.0", 5803 + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", 5804 + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", 5805 + "license": "MIT", 5806 + "engines": { 5807 + "node": ">=0.10.0" 5808 + } 5809 + }, 5810 + "node_modules/webidl-conversions": { 5811 + "version": "4.0.2", 5812 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 5813 + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", 5814 + "dev": true, 5815 + "license": "BSD-2-Clause" 5816 + }, 5817 + "node_modules/whatwg-url": { 5818 + "version": "7.1.0", 5819 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 5820 + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 5821 + "dev": true, 5822 + "license": "MIT", 5823 + "dependencies": { 5824 + "lodash.sortby": "^4.7.0", 5825 + "tr46": "^1.0.1", 5826 + "webidl-conversions": "^4.0.2" 5827 + } 5828 + }, 5829 + "node_modules/which": { 5830 + "version": "2.0.2", 5831 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 5832 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 5833 + "dev": true, 5834 + "license": "ISC", 5835 + "dependencies": { 5836 + "isexe": "^2.0.0" 5837 + }, 5838 + "bin": { 5839 + "node-which": "bin/node-which" 5840 + }, 5841 + "engines": { 5842 + "node": ">= 8" 5843 + } 5844 + }, 5845 + "node_modules/with": { 5846 + "version": "7.0.2", 5847 + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", 5848 + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", 5849 + "license": "MIT", 5850 + "dependencies": { 5851 + "@babel/parser": "^7.9.6", 5852 + "@babel/types": "^7.9.6", 5853 + "assert-never": "^1.2.1", 5854 + "babel-walk": "3.0.0-canary-5" 5855 + }, 5856 + "engines": { 5857 + "node": ">= 10.0.0" 5858 + } 5859 + }, 5860 + "node_modules/wrap-ansi": { 5861 + "version": "8.1.0", 5862 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 5863 + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 5864 + "dev": true, 5865 + "license": "MIT", 5866 + "dependencies": { 5867 + "ansi-styles": "^6.1.0", 5868 + "string-width": "^5.0.1", 5869 + "strip-ansi": "^7.0.1" 5870 + }, 5871 + "engines": { 5872 + "node": ">=12" 5873 + }, 5874 + "funding": { 5875 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 5876 + } 5877 + }, 5878 + "node_modules/wrap-ansi-cjs": { 5879 + "name": "wrap-ansi", 5880 + "version": "7.0.0", 5881 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 5882 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 5883 + "dev": true, 5884 + "license": "MIT", 5885 + "dependencies": { 5886 + "ansi-styles": "^4.0.0", 5887 + "string-width": "^4.1.0", 5888 + "strip-ansi": "^6.0.0" 5889 + }, 5890 + "engines": { 5891 + "node": ">=10" 5892 + }, 5893 + "funding": { 5894 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 5895 + } 5896 + }, 5897 + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 5898 + "version": "5.0.1", 5899 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 5900 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 5901 + "dev": true, 5902 + "license": "MIT", 5903 + "engines": { 5904 + "node": ">=8" 5905 + } 5906 + }, 5907 + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 5908 + "version": "8.0.0", 5909 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 5910 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 5911 + "dev": true, 5912 + "license": "MIT" 5913 + }, 5914 + "node_modules/wrap-ansi-cjs/node_modules/string-width": { 5915 + "version": "4.2.3", 5916 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 5917 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 5918 + "dev": true, 5919 + "license": "MIT", 5920 + "dependencies": { 5921 + "emoji-regex": "^8.0.0", 5922 + "is-fullwidth-code-point": "^3.0.0", 5923 + "strip-ansi": "^6.0.1" 5924 + }, 5925 + "engines": { 5926 + "node": ">=8" 5927 + } 5928 + }, 5929 + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 5930 + "version": "6.0.1", 5931 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 5932 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 5933 + "dev": true, 5934 + "license": "MIT", 5935 + "dependencies": { 5936 + "ansi-regex": "^5.0.1" 5937 + }, 5938 + "engines": { 5939 + "node": ">=8" 5940 + } 5941 + }, 5942 + "node_modules/wrap-ansi/node_modules/ansi-styles": { 5943 + "version": "6.2.1", 5944 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 5945 + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 5946 + "dev": true, 5947 + "license": "MIT", 5948 + "engines": { 5949 + "node": ">=12" 5950 + }, 5951 + "funding": { 5952 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 5953 + } 5954 + }, 5955 + "node_modules/wrappy": { 5956 + "version": "1.0.2", 5957 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 5958 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 5959 + "license": "ISC" 5960 + }, 5961 + "node_modules/ws": { 5962 + "version": "8.18.0", 5963 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 5964 + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 5965 + "license": "MIT", 5966 + "engines": { 5967 + "node": ">=10.0.0" 5968 + }, 5969 + "peerDependencies": { 5970 + "bufferutil": "^4.0.1", 5971 + "utf-8-validate": ">=5.0.2" 5972 + }, 5973 + "peerDependenciesMeta": { 5974 + "bufferutil": { 5975 + "optional": true 5976 + }, 5977 + "utf-8-validate": { 5978 + "optional": true 5979 + } 5980 + } 5981 + }, 5982 + "node_modules/yesno": { 5983 + "version": "0.4.0", 5984 + "resolved": "https://registry.npmjs.org/yesno/-/yesno-0.4.0.tgz", 5985 + "integrity": "sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==", 5986 + "dev": true, 5987 + "license": "BSD" 5988 + }, 5989 + "node_modules/yn": { 5990 + "version": "3.1.1", 5991 + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 5992 + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 5993 + "dev": true, 5994 + "license": "MIT", 5995 + "engines": { 5996 + "node": ">=6" 5997 + } 5998 + }, 5999 + "node_modules/zod": { 6000 + "version": "3.23.8", 6001 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", 6002 + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", 6003 + "license": "MIT", 6004 + "funding": { 6005 + "url": "https://github.com/sponsors/colinhacks" 6006 + } 6007 + } 6008 + } 6009 + }
+56
package.json
··· 1 + { 2 + "name": "plonk", 3 + "version": "1.0.0", 4 + "description": "pastebin build on atproto", 5 + "main": "index.ts", 6 + "scripts": { 7 + "dev": "tsx watch --clear-screen=false src/index.ts | pino-pretty", 8 + "build": "tsup", 9 + "start": "node dist/index.js", 10 + "lexgen": "lex gen-server ./src/lexicon ./lexicons/*", 11 + "clean": "rimraf dist coverage" 12 + }, 13 + "author": "", 14 + "license": "ISC", 15 + "dependencies": { 16 + "@atproto/api": "^0.13.4", 17 + "@atproto/common": "^0.4.1", 18 + "@atproto/identity": "^0.4.0", 19 + "@atproto/lexicon": "^0.4.2", 20 + "@atproto/oauth-client-node": "^0.1.0", 21 + "@atproto/sync": "^0.1.4", 22 + "@atproto/syntax": "^0.3.0", 23 + "@atproto/xrpc-server": "^0.6.3", 24 + "better-sqlite3": "^11.1.2", 25 + "dotenv": "^16.4.5", 26 + "envalid": "^8.0.0", 27 + "express": "^4.19.2", 28 + "iron-session": "^8.0.2", 29 + "kysely": "^0.27.4", 30 + "multiformats": "^9.9.0", 31 + "pino": "^9.3.2", 32 + "pug": "^3.0.3", 33 + "uhtml": "^4.5.9" 34 + }, 35 + "devDependencies": { 36 + "@atproto/lex-cli": "^0.4.1", 37 + "@types/better-sqlite3": "^7.6.11", 38 + "@types/express": "^4.17.21", 39 + "pino-pretty": "^11.0.0", 40 + "rimraf": "^5.0.0", 41 + "ts-node": "^10.9.2", 42 + "tsup": "^8.0.2", 43 + "tsx": "^4.7.2", 44 + "typescript": "^5.4.4" 45 + }, 46 + "tsup": { 47 + "entry": [ 48 + "src", 49 + "!src/**/__tests__/**", 50 + "!src/**/*.test.*" 51 + ], 52 + "splitting": false, 53 + "sourcemap": true, 54 + "clean": true 55 + } 56 + }
+28
src/auth/client.ts
··· 1 + import { NodeOAuthClient } from "@atproto/oauth-client-node"; 2 + import type { Database } from "#/db"; 3 + import { env } from "#/lib"; 4 + import { SessionStore, StateStore } from "./storage"; 5 + 6 + export const createClient = async (db: Database) => { 7 + const publicUrl = env.PUBLIC_URL; 8 + const url = publicUrl || `http://127.0.0.1:${env.PORT}`; 9 + const enc = encodeURIComponent; 10 + return new NodeOAuthClient({ 11 + clientMetadata: { 12 + client_name: "AT Protocol Express App", 13 + client_id: publicUrl 14 + ? `${url}/client-metadata.json` 15 + : `http://localhost?redirect_uri=${enc(`${url}/oauth/callback`)}&scope=${enc("atproto transition:generic")}`, 16 + client_uri: url, 17 + redirect_uris: [`${url}/oauth/callback`], 18 + scope: "atproto transition:generic", 19 + grant_types: ["authorization_code", "refresh_token"], 20 + response_types: ["code"], 21 + application_type: "web", 22 + token_endpoint_auth_method: "none", 23 + dpop_bound_access_tokens: true, 24 + }, 25 + stateStore: new StateStore(db), 26 + sessionStore: new SessionStore(db), 27 + }); 28 + };
+48
src/auth/storage.ts
··· 1 + import type { 2 + NodeSavedSession, 3 + NodeSavedSessionStore, 4 + NodeSavedState, 5 + NodeSavedStateStore, 6 + } from '@atproto/oauth-client-node' 7 + import type { Database } from '#/db' 8 + 9 + export class StateStore implements NodeSavedStateStore { 10 + constructor(private db: Database) {} 11 + async get(key: string): Promise<NodeSavedState | undefined> { 12 + const result = await this.db.selectFrom('auth_state').selectAll().where('key', '=', key).executeTakeFirst() 13 + if (!result) return 14 + return JSON.parse(result.state) as NodeSavedState 15 + } 16 + async set(key: string, val: NodeSavedState) { 17 + const state = JSON.stringify(val) 18 + await this.db 19 + .insertInto('auth_state') 20 + .values({ key, state }) 21 + .onConflict((oc) => oc.doUpdateSet({ state })) 22 + .execute() 23 + } 24 + async del(key: string) { 25 + await this.db.deleteFrom('auth_state').where('key', '=', key).execute() 26 + } 27 + } 28 + 29 + export class SessionStore implements NodeSavedSessionStore { 30 + constructor(private db: Database) {} 31 + async get(key: string): Promise<NodeSavedSession | undefined> { 32 + const result = await this.db.selectFrom('auth_session').selectAll().where('key', '=', key).executeTakeFirst() 33 + if (!result) return 34 + return JSON.parse(result.session) as NodeSavedSession 35 + } 36 + async set(key: string, val: NodeSavedSession) { 37 + const session = JSON.stringify(val) 38 + await this.db 39 + .insertInto('auth_session') 40 + .values({ key, session }) 41 + .onConflict((oc) => oc.doUpdateSet({ session })) 42 + .execute() 43 + } 44 + async del(key: string) { 45 + await this.db.deleteFrom('auth_session').where('key', '=', key).execute() 46 + } 47 + } 48 +
+155
src/db.ts
··· 1 + import SqliteDb from "better-sqlite3"; 2 + import { randomBytes } from "crypto"; 3 + 4 + import { 5 + Kysely, 6 + Migrator, 7 + SqliteDialect, 8 + Migration, 9 + MigrationProvider, 10 + } from "kysely"; 11 + import { isNumber } from "util"; 12 + 13 + export type DatabaseSchema = { 14 + paste: Paste; 15 + auth_state: AuthState; 16 + auth_session: AuthSession; 17 + }; 18 + 19 + export type Paste = { 20 + uri: string; 21 + authorDid: string; 22 + code: string; 23 + lang: string; 24 + title: string; 25 + createdAt: string; 26 + indexedAt: string; 27 + }; 28 + 29 + export type AuthSession = { 30 + key: string; 31 + session: AuthSessionJson; 32 + }; 33 + 34 + export type AuthState = { 35 + key: string; 36 + state: AuthStateJson; 37 + }; 38 + 39 + type AuthSessionJson = string; 40 + type AuthStateJson = string; 41 + 42 + export type Schema = { 43 + paste: Paste; 44 + auth_session: AuthSession; 45 + auth_state: AuthState; 46 + }; 47 + 48 + const migrations: Record<string, Migration> = {}; 49 + 50 + const migrationProvider: MigrationProvider = { 51 + async getMigrations() { 52 + return migrations; 53 + }, 54 + }; 55 + 56 + migrations["001"] = { 57 + async up(db: Kysely<unknown>) { 58 + await db.schema 59 + .createTable("paste") 60 + .addColumn("uri", "varchar", (col) => col.primaryKey()) 61 + .addColumn("shortUrl", "varchar", (col) => col.notNull().unique()) 62 + .addColumn("authorDid", "varchar", (col) => col.notNull()) 63 + .addColumn("code", "varchar", (col) => col.notNull()) 64 + .addColumn("lang", "varchar") 65 + .addColumn("title", "varchar", (col) => col.notNull()) 66 + .addColumn("createdAt", "varchar", (col) => col.notNull()) 67 + .addColumn("indexedAt", "varchar", (col) => col.notNull()) 68 + .execute(); 69 + 70 + await db.schema 71 + .createTable("auth_session") 72 + .addColumn("key", "varchar", (col) => col.primaryKey()) 73 + .addColumn("session", "varchar", (col) => col.notNull()) 74 + .execute(); 75 + 76 + await db.schema 77 + .createTable("auth_state") 78 + .addColumn("key", "varchar", (col) => col.primaryKey()) 79 + .addColumn("state", "varchar", (col) => col.notNull()) 80 + .execute(); 81 + }, 82 + async down(db: Kysely<unknown>) { 83 + await db.schema.dropTable("auth_state").execute(); 84 + await db.schema.dropTable("auth_session").execute(); 85 + await db.schema.dropTable("paste").execute(); 86 + }, 87 + }; 88 + 89 + function generateShortString(length: number): string { 90 + return randomBytes(length).toString("base64url").substring(0, length); 91 + } 92 + 93 + export async function newShortUrl( 94 + db: Database, 95 + length: number = 2, 96 + ): Promise<string> { 97 + let shortUrl: string; 98 + 99 + while (true) { 100 + shortUrl = generateShortString(length); 101 + 102 + try { 103 + let exists = await db 104 + .selectFrom("paste") 105 + .selectAll() 106 + .where("shortUrl", "=", shortUrl) 107 + .limit(1) 108 + .executeTakeFirst(); 109 + if (!exists) { 110 + break; // Break the loop if insertion is successful 111 + } 112 + } catch (error) { 113 + // If we run out of options at the current length, increase the length 114 + if (await hasExhaustedShortUrls(db, length)) { 115 + length++; 116 + } 117 + throw error; 118 + } 119 + } 120 + 121 + return shortUrl; 122 + } 123 + 124 + // Check if all short URLs of the current length have been exhausted 125 + async function hasExhaustedShortUrls( 126 + db: Database, 127 + length: number, 128 + ): Promise<boolean> { 129 + const totalPossible = Math.pow(64, length); 130 + const count = await db 131 + .selectFrom("paste") 132 + .select((e) => e.fn.count("uri").as("count")) 133 + .executeTakeFirst(); 134 + if (isNumber(count)) { 135 + return count >= totalPossible; 136 + } else { 137 + return true; 138 + } 139 + } 140 + 141 + export const createDb = (location: string): Database => { 142 + return new Kysely<DatabaseSchema>({ 143 + dialect: new SqliteDialect({ 144 + database: new SqliteDb(location), 145 + }), 146 + }); 147 + }; 148 + 149 + export const migrateToLatest = async (db: Database) => { 150 + const migrator = new Migrator({ db, provider: migrationProvider }); 151 + const { error } = await migrator.migrateToLatest(); 152 + if (error) throw error; 153 + }; 154 + 155 + export type Database = Kysely<DatabaseSchema>;
+43
src/id-resolver.ts
··· 1 + import { IdResolver, MemoryCache } from '@atproto/identity' 2 + 3 + const HOUR = 60e3 * 60 4 + const DAY = HOUR * 24 5 + 6 + 7 + export function createIdResolver() { 8 + return new IdResolver({ 9 + didCache: new MemoryCache(HOUR, DAY), 10 + }) 11 + } 12 + 13 + export interface BidirectionalResolver { 14 + resolveDidToHandle(did: string): Promise<string> 15 + resolveDidsToHandles(dids: string[]): Promise<Record<string, string>> 16 + } 17 + 18 + export function createBidirectionalResolver(resolver: IdResolver) { 19 + return { 20 + async resolveDidToHandle(did: string): Promise<string> { 21 + const didDoc = await resolver.did.resolveAtprotoData(did) 22 + const resolvedHandle = await resolver.handle.resolve(didDoc.handle) 23 + if (resolvedHandle === did) { 24 + return didDoc.handle 25 + } 26 + return did 27 + }, 28 + 29 + async resolveDidsToHandles( 30 + dids: string[] 31 + ): Promise<Record<string, string>> { 32 + const didHandleMap: Record<string, string> = {} 33 + const resolves = await Promise.all( 34 + dids.map((did) => this.resolveDidToHandle(did).catch((_) => did)) 35 + ) 36 + for (let i = 0; i < dids.length; i++) { 37 + didHandleMap[dids[i]] = resolves[i] 38 + } 39 + return didHandleMap 40 + }, 41 + } 42 + } 43 +
+88
src/index.ts
··· 1 + import type http from "node:http"; 2 + import path from "node:path"; 3 + 4 + import express from "express"; 5 + import { OAuthClient } from "@atproto/oauth-client-node"; 6 + import { pino } from "pino"; 7 + import { Firehose } from "@atproto/sync"; 8 + import { createRouter } from "#/routes"; 9 + import { 10 + createIdResolver, 11 + createBidirectionalResolver, 12 + BidirectionalResolver, 13 + } from "#/id-resolver"; 14 + import { createIngester } from "#/ingester"; 15 + import { createClient } from "#/auth/client"; 16 + import { Database, createDb, migrateToLatest } from "#/db"; 17 + import { env } from "#/lib"; 18 + 19 + export type Ctx = { 20 + ingester: Firehose; 21 + logger: pino.Logger; 22 + oauthClient: OAuthClient; 23 + resolver: BidirectionalResolver; 24 + db: Database; 25 + }; 26 + 27 + export class Server { 28 + constructor( 29 + public app: express.Application, 30 + public server: http.Server, 31 + public ctx: Ctx, 32 + ) {} 33 + 34 + static async create() { 35 + const db: Database = createDb(env.DB_PATH); 36 + await migrateToLatest(db); 37 + const idResolver = createIdResolver(); 38 + const ctx: Ctx = { 39 + ingester: createIngester(db, idResolver), 40 + logger: pino({ name: "server start" }), 41 + oauthClient: await createClient(db), 42 + resolver: createBidirectionalResolver(idResolver), 43 + db: db, 44 + }; 45 + 46 + const app = express(); 47 + app.set("trust proxy", true); 48 + app.use(express.static(path.join(__dirname, "public"))); 49 + app.set("views", path.join(__dirname, "views")); 50 + app.set("view engine", "pug"); 51 + 52 + const router = createRouter(ctx); 53 + app.use(express.json()); 54 + app.use(express.urlencoded({ extended: true })); 55 + app.use(router); 56 + app.use((_req, res) => res.sendStatus(404)); 57 + 58 + const server = app.listen(env.PORT); 59 + 60 + return new Server(app, server, ctx); 61 + } 62 + 63 + async close() { 64 + this.ctx.logger.info("shutting down"); 65 + await this.ctx.ingester.destroy(); 66 + return new Promise<void>((resolve) => { 67 + this.server.close(() => { 68 + this.ctx.logger.info("server closed"); 69 + resolve(); 70 + }); 71 + }); 72 + } 73 + } 74 + 75 + const run = async () => { 76 + const server = await Server.create(); 77 + 78 + const onCloseSignal = async () => { 79 + setTimeout(() => process.exit(1), 10000).unref(); // Force shutdown after 10s 80 + await server.close(); 81 + process.exit(); 82 + }; 83 + 84 + process.on("SIGINT", onCloseSignal); 85 + process.on("SIGTERM", onCloseSignal); 86 + }; 87 + 88 + run();
+66
src/ingester.ts
··· 1 + import pino from "pino"; 2 + import { IdResolver } from "@atproto/identity"; 3 + import { Firehose } from "@atproto/sync"; 4 + import type { Database } from "#/db"; 5 + import { newShortUrl } from "#/db"; 6 + import * as Paste from "#/lexicons/types/ovh/plonk/paste"; 7 + 8 + export function createIngester(db: Database, idResolver: IdResolver) { 9 + const logger = pino({ name: "firehose ingestion" }); 10 + return new Firehose({ 11 + idResolver, 12 + handleEvent: async (evt) => { 13 + // Watch for write events 14 + if (evt.event === "create" || evt.event === "update") { 15 + const now = new Date(); 16 + const record = evt.record; 17 + 18 + // If the write is a valid status update 19 + if ( 20 + evt.collection === "ovh.plonk.paste" && 21 + Paste.isRecord(record) && 22 + Paste.validateRecord(record).success 23 + ) { 24 + // Store the status in our SQLite 25 + const short_url = await newShortUrl(db); 26 + await db 27 + .insertInto("paste") 28 + .values({ 29 + uri: evt.uri.toString(), 30 + shortUrl, 31 + authorDid: evt.did, 32 + code: record.code, 33 + lang: record.lang, 34 + title: record.title, 35 + createdAt: record.createdAt, 36 + indexedAt: now.toISOString(), 37 + }) 38 + .onConflict((oc) => 39 + oc.column("uri").doUpdateSet({ 40 + code: record.code, 41 + lang: record.lang, 42 + title: record.title, 43 + indexedAt: now.toISOString(), 44 + }), 45 + ) 46 + .execute(); 47 + } 48 + } else if ( 49 + evt.event === "delete" && 50 + evt.collection === "ovh.plonk.paste" 51 + ) { 52 + // Remove the status from our SQLite 53 + await db 54 + .deleteFrom("paste") 55 + .where("uri", "=", evt.uri.toString()) 56 + .execute(); 57 + } 58 + }, 59 + onError: (err) => { 60 + logger.error({ err }, "error on firehose ingestion"); 61 + }, 62 + filterCollections: ["ovh.plonk.paste"], 63 + excludeIdentity: true, 64 + excludeAccount: true, 65 + }); 66 + }
+129
src/lexicons/index.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { 5 + createServer as createXrpcServer, 6 + Server as XrpcServer, 7 + Options as XrpcOptions, 8 + AuthVerifier, 9 + StreamAuthVerifier, 10 + } from '@atproto/xrpc-server' 11 + import { schemas } from './lexicons' 12 + 13 + export function createServer(options?: XrpcOptions): Server { 14 + return new Server(options) 15 + } 16 + 17 + export class Server { 18 + xrpc: XrpcServer 19 + ovh: OvhNS 20 + app: AppNS 21 + com: ComNS 22 + 23 + constructor(options?: XrpcOptions) { 24 + this.xrpc = createXrpcServer(schemas, options) 25 + this.ovh = new OvhNS(this) 26 + this.app = new AppNS(this) 27 + this.com = new ComNS(this) 28 + } 29 + } 30 + 31 + export class OvhNS { 32 + _server: Server 33 + plonk: OvhPlonkNS 34 + 35 + constructor(server: Server) { 36 + this._server = server 37 + this.plonk = new OvhPlonkNS(server) 38 + } 39 + } 40 + 41 + export class OvhPlonkNS { 42 + _server: Server 43 + 44 + constructor(server: Server) { 45 + this._server = server 46 + } 47 + } 48 + 49 + export class AppNS { 50 + _server: Server 51 + bsky: AppBskyNS 52 + 53 + constructor(server: Server) { 54 + this._server = server 55 + this.bsky = new AppBskyNS(server) 56 + } 57 + } 58 + 59 + export class AppBskyNS { 60 + _server: Server 61 + actor: AppBskyActorNS 62 + 63 + constructor(server: Server) { 64 + this._server = server 65 + this.actor = new AppBskyActorNS(server) 66 + } 67 + } 68 + 69 + export class AppBskyActorNS { 70 + _server: Server 71 + 72 + constructor(server: Server) { 73 + this._server = server 74 + } 75 + } 76 + 77 + export class ComNS { 78 + _server: Server 79 + atproto: ComAtprotoNS 80 + 81 + constructor(server: Server) { 82 + this._server = server 83 + this.atproto = new ComAtprotoNS(server) 84 + } 85 + } 86 + 87 + export class ComAtprotoNS { 88 + _server: Server 89 + repo: ComAtprotoRepoNS 90 + 91 + constructor(server: Server) { 92 + this._server = server 93 + this.repo = new ComAtprotoRepoNS(server) 94 + } 95 + } 96 + 97 + export class ComAtprotoRepoNS { 98 + _server: Server 99 + 100 + constructor(server: Server) { 101 + this._server = server 102 + } 103 + } 104 + 105 + type SharedRateLimitOpts<T> = { 106 + name: string 107 + calcKey?: (ctx: T) => string 108 + calcPoints?: (ctx: T) => number 109 + } 110 + type RouteRateLimitOpts<T> = { 111 + durationMs: number 112 + points: number 113 + calcKey?: (ctx: T) => string 114 + calcPoints?: (ctx: T) => number 115 + } 116 + type HandlerOpts = { blobLimit?: number } 117 + type HandlerRateLimitOpts<T> = SharedRateLimitOpts<T> | RouteRateLimitOpts<T> 118 + type ConfigOf<Auth, Handler, ReqCtx> = 119 + | Handler 120 + | { 121 + auth?: Auth 122 + opts?: HandlerOpts 123 + rateLimit?: HandlerRateLimitOpts<ReqCtx> | HandlerRateLimitOpts<ReqCtx>[] 124 + handler: Handler 125 + } 126 + type ExtractAuth<AV extends AuthVerifier | StreamAuthVerifier> = Extract< 127 + Awaited<ReturnType<AV>>, 128 + { credentials: unknown } 129 + >
+308
src/lexicons/lexicons.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { LexiconDoc, Lexicons } from '@atproto/lexicon' 5 + 6 + export const schemaDict = { 7 + ComAtprotoLabelDefs: { 8 + lexicon: 1, 9 + id: 'com.atproto.label.defs', 10 + defs: { 11 + label: { 12 + type: 'object', 13 + description: 14 + 'Metadata tag on an atproto resource (eg, repo or record).', 15 + required: ['src', 'uri', 'val', 'cts'], 16 + properties: { 17 + ver: { 18 + type: 'integer', 19 + description: 'The AT Protocol version of the label object.', 20 + }, 21 + src: { 22 + type: 'string', 23 + format: 'did', 24 + description: 'DID of the actor who created this label.', 25 + }, 26 + uri: { 27 + type: 'string', 28 + format: 'uri', 29 + description: 30 + 'AT URI of the record, repository (account), or other resource that this label applies to.', 31 + }, 32 + cid: { 33 + type: 'string', 34 + format: 'cid', 35 + description: 36 + "Optionally, CID specifying the specific version of 'uri' resource this label applies to.", 37 + }, 38 + val: { 39 + type: 'string', 40 + maxLength: 128, 41 + description: 42 + 'The short string name of the value or type of this label.', 43 + }, 44 + neg: { 45 + type: 'boolean', 46 + description: 47 + 'If true, this is a negation label, overwriting a previous label.', 48 + }, 49 + cts: { 50 + type: 'string', 51 + format: 'datetime', 52 + description: 'Timestamp when this label was created.', 53 + }, 54 + exp: { 55 + type: 'string', 56 + format: 'datetime', 57 + description: 58 + 'Timestamp at which this label expires (no longer applies).', 59 + }, 60 + sig: { 61 + type: 'bytes', 62 + description: 'Signature of dag-cbor encoded label.', 63 + }, 64 + }, 65 + }, 66 + selfLabels: { 67 + type: 'object', 68 + description: 69 + 'Metadata tags on an atproto record, published by the author within the record.', 70 + required: ['values'], 71 + properties: { 72 + values: { 73 + type: 'array', 74 + items: { 75 + type: 'ref', 76 + ref: 'lex:com.atproto.label.defs#selfLabel', 77 + }, 78 + maxLength: 10, 79 + }, 80 + }, 81 + }, 82 + selfLabel: { 83 + type: 'object', 84 + description: 85 + 'Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.', 86 + required: ['val'], 87 + properties: { 88 + val: { 89 + type: 'string', 90 + maxLength: 128, 91 + description: 92 + 'The short string name of the value or type of this label.', 93 + }, 94 + }, 95 + }, 96 + labelValueDefinition: { 97 + type: 'object', 98 + description: 99 + 'Declares a label value and its expected interpretations and behaviors.', 100 + required: ['identifier', 'severity', 'blurs', 'locales'], 101 + properties: { 102 + identifier: { 103 + type: 'string', 104 + description: 105 + "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", 106 + maxLength: 100, 107 + maxGraphemes: 100, 108 + }, 109 + severity: { 110 + type: 'string', 111 + description: 112 + "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", 113 + knownValues: ['inform', 'alert', 'none'], 114 + }, 115 + blurs: { 116 + type: 'string', 117 + description: 118 + "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", 119 + knownValues: ['content', 'media', 'none'], 120 + }, 121 + defaultSetting: { 122 + type: 'string', 123 + description: 'The default setting for this label.', 124 + knownValues: ['ignore', 'warn', 'hide'], 125 + default: 'warn', 126 + }, 127 + adultOnly: { 128 + type: 'boolean', 129 + description: 130 + 'Does the user need to have adult content enabled in order to configure this label?', 131 + }, 132 + locales: { 133 + type: 'array', 134 + items: { 135 + type: 'ref', 136 + ref: 'lex:com.atproto.label.defs#labelValueDefinitionStrings', 137 + }, 138 + }, 139 + }, 140 + }, 141 + labelValueDefinitionStrings: { 142 + type: 'object', 143 + description: 144 + 'Strings which describe the label in the UI, localized into a specific language.', 145 + required: ['lang', 'name', 'description'], 146 + properties: { 147 + lang: { 148 + type: 'string', 149 + description: 150 + 'The code of the language these strings are written in.', 151 + format: 'language', 152 + }, 153 + name: { 154 + type: 'string', 155 + description: 'A short human-readable name for the label.', 156 + maxGraphemes: 64, 157 + maxLength: 640, 158 + }, 159 + description: { 160 + type: 'string', 161 + description: 162 + 'A longer description of what the label means and why it might be applied.', 163 + maxGraphemes: 10000, 164 + maxLength: 100000, 165 + }, 166 + }, 167 + }, 168 + labelValue: { 169 + type: 'string', 170 + knownValues: [ 171 + '!hide', 172 + '!no-promote', 173 + '!warn', 174 + '!no-unauthenticated', 175 + 'dmca-violation', 176 + 'doxxing', 177 + 'porn', 178 + 'sexual', 179 + 'nudity', 180 + 'nsfl', 181 + 'gore', 182 + ], 183 + }, 184 + }, 185 + }, 186 + OvhPlonkPaste: { 187 + lexicon: 1, 188 + id: 'ovh.plonk.paste', 189 + defs: { 190 + main: { 191 + type: 'record', 192 + key: 'tid', 193 + record: { 194 + type: 'object', 195 + required: ['code', 'lang', 'title', 'createdAt'], 196 + properties: { 197 + code: { 198 + type: 'string', 199 + minLength: 1, 200 + maxGraphemes: 65536, 201 + maxLength: 65536, 202 + }, 203 + lang: { 204 + type: 'string', 205 + minLength: 1, 206 + maxGraphemes: 20, 207 + maxLength: 20, 208 + }, 209 + title: { 210 + type: 'string', 211 + minLength: 1, 212 + maxGraphemes: 100, 213 + maxLength: 100, 214 + }, 215 + createdAt: { 216 + type: 'string', 217 + format: 'datetime', 218 + }, 219 + }, 220 + }, 221 + }, 222 + }, 223 + }, 224 + AppBskyActorProfile: { 225 + lexicon: 1, 226 + id: 'app.bsky.actor.profile', 227 + defs: { 228 + main: { 229 + type: 'record', 230 + description: 'A declaration of a Bluesky account profile.', 231 + key: 'literal:self', 232 + record: { 233 + type: 'object', 234 + properties: { 235 + displayName: { 236 + type: 'string', 237 + maxGraphemes: 64, 238 + maxLength: 640, 239 + }, 240 + description: { 241 + type: 'string', 242 + description: 'Free-form profile description text.', 243 + maxGraphemes: 256, 244 + maxLength: 2560, 245 + }, 246 + avatar: { 247 + type: 'blob', 248 + description: 249 + "Small image to be displayed next to posts from account. AKA, 'profile picture'", 250 + accept: ['image/png', 'image/jpeg'], 251 + maxSize: 1000000, 252 + }, 253 + banner: { 254 + type: 'blob', 255 + description: 256 + 'Larger horizontal image to display behind profile view.', 257 + accept: ['image/png', 'image/jpeg'], 258 + maxSize: 1000000, 259 + }, 260 + labels: { 261 + type: 'union', 262 + description: 263 + 'Self-label values, specific to the Bluesky application, on the overall account.', 264 + refs: ['lex:com.atproto.label.defs#selfLabels'], 265 + }, 266 + joinedViaStarterPack: { 267 + type: 'ref', 268 + ref: 'lex:com.atproto.repo.strongRef', 269 + }, 270 + createdAt: { 271 + type: 'string', 272 + format: 'datetime', 273 + }, 274 + }, 275 + }, 276 + }, 277 + }, 278 + }, 279 + ComAtprotoRepoStrongRef: { 280 + lexicon: 1, 281 + id: 'com.atproto.repo.strongRef', 282 + description: 'A URI with a content-hash fingerprint.', 283 + defs: { 284 + main: { 285 + type: 'object', 286 + required: ['uri', 'cid'], 287 + properties: { 288 + uri: { 289 + type: 'string', 290 + format: 'at-uri', 291 + }, 292 + cid: { 293 + type: 'string', 294 + format: 'cid', 295 + }, 296 + }, 297 + }, 298 + }, 299 + }, 300 + } 301 + export const schemas: LexiconDoc[] = Object.values(schemaDict) as LexiconDoc[] 302 + export const lexicons: Lexicons = new Lexicons(schemas) 303 + export const ids = { 304 + ComAtprotoLabelDefs: 'com.atproto.label.defs', 305 + OvhPlonkPaste: 'ovh.plonk.paste', 306 + AppBskyActorProfile: 'app.bsky.actor.profile', 307 + ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', 308 + }
+38
src/lexicons/types/app/bsky/actor/profile.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' 9 + import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' 10 + 11 + export interface Record { 12 + displayName?: string 13 + /** Free-form profile description text. */ 14 + description?: string 15 + /** Small image to be displayed next to posts from account. AKA, 'profile picture' */ 16 + avatar?: BlobRef 17 + /** Larger horizontal image to display behind profile view. */ 18 + banner?: BlobRef 19 + labels?: 20 + | ComAtprotoLabelDefs.SelfLabels 21 + | { $type: string; [k: string]: unknown } 22 + joinedViaStarterPack?: ComAtprotoRepoStrongRef.Main 23 + createdAt?: string 24 + [k: string]: unknown 25 + } 26 + 27 + export function isRecord(v: unknown): v is Record { 28 + return ( 29 + isObj(v) && 30 + hasProp(v, '$type') && 31 + (v.$type === 'app.bsky.actor.profile#main' || 32 + v.$type === 'app.bsky.actor.profile') 33 + ) 34 + } 35 + 36 + export function validateRecord(v: unknown): ValidationResult { 37 + return lexicons.validate('app.bsky.actor.profile#main', v) 38 + }
+151
src/lexicons/types/com/atproto/label/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + /** Metadata tag on an atproto resource (eg, repo or record). */ 10 + export interface Label { 11 + /** The AT Protocol version of the label object. */ 12 + ver?: number 13 + /** DID of the actor who created this label. */ 14 + src: string 15 + /** AT URI of the record, repository (account), or other resource that this label applies to. */ 16 + uri: string 17 + /** Optionally, CID specifying the specific version of 'uri' resource this label applies to. */ 18 + cid?: string 19 + /** The short string name of the value or type of this label. */ 20 + val: string 21 + /** If true, this is a negation label, overwriting a previous label. */ 22 + neg?: boolean 23 + /** Timestamp when this label was created. */ 24 + cts: string 25 + /** Timestamp at which this label expires (no longer applies). */ 26 + exp?: string 27 + /** Signature of dag-cbor encoded label. */ 28 + sig?: Uint8Array 29 + [k: string]: unknown 30 + } 31 + 32 + export function isLabel(v: unknown): v is Label { 33 + return ( 34 + isObj(v) && 35 + hasProp(v, '$type') && 36 + v.$type === 'com.atproto.label.defs#label' 37 + ) 38 + } 39 + 40 + export function validateLabel(v: unknown): ValidationResult { 41 + return lexicons.validate('com.atproto.label.defs#label', v) 42 + } 43 + 44 + /** Metadata tags on an atproto record, published by the author within the record. */ 45 + export interface SelfLabels { 46 + values: SelfLabel[] 47 + [k: string]: unknown 48 + } 49 + 50 + export function isSelfLabels(v: unknown): v is SelfLabels { 51 + return ( 52 + isObj(v) && 53 + hasProp(v, '$type') && 54 + v.$type === 'com.atproto.label.defs#selfLabels' 55 + ) 56 + } 57 + 58 + export function validateSelfLabels(v: unknown): ValidationResult { 59 + return lexicons.validate('com.atproto.label.defs#selfLabels', v) 60 + } 61 + 62 + /** Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel. */ 63 + export interface SelfLabel { 64 + /** The short string name of the value or type of this label. */ 65 + val: string 66 + [k: string]: unknown 67 + } 68 + 69 + export function isSelfLabel(v: unknown): v is SelfLabel { 70 + return ( 71 + isObj(v) && 72 + hasProp(v, '$type') && 73 + v.$type === 'com.atproto.label.defs#selfLabel' 74 + ) 75 + } 76 + 77 + export function validateSelfLabel(v: unknown): ValidationResult { 78 + return lexicons.validate('com.atproto.label.defs#selfLabel', v) 79 + } 80 + 81 + /** Declares a label value and its expected interpretations and behaviors. */ 82 + export interface LabelValueDefinition { 83 + /** The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+). */ 84 + identifier: string 85 + /** How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing. */ 86 + severity: 'inform' | 'alert' | 'none' | (string & {}) 87 + /** What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing. */ 88 + blurs: 'content' | 'media' | 'none' | (string & {}) 89 + /** The default setting for this label. */ 90 + defaultSetting: 'ignore' | 'warn' | 'hide' | (string & {}) 91 + /** Does the user need to have adult content enabled in order to configure this label? */ 92 + adultOnly?: boolean 93 + locales: LabelValueDefinitionStrings[] 94 + [k: string]: unknown 95 + } 96 + 97 + export function isLabelValueDefinition(v: unknown): v is LabelValueDefinition { 98 + return ( 99 + isObj(v) && 100 + hasProp(v, '$type') && 101 + v.$type === 'com.atproto.label.defs#labelValueDefinition' 102 + ) 103 + } 104 + 105 + export function validateLabelValueDefinition(v: unknown): ValidationResult { 106 + return lexicons.validate('com.atproto.label.defs#labelValueDefinition', v) 107 + } 108 + 109 + /** Strings which describe the label in the UI, localized into a specific language. */ 110 + export interface LabelValueDefinitionStrings { 111 + /** The code of the language these strings are written in. */ 112 + lang: string 113 + /** A short human-readable name for the label. */ 114 + name: string 115 + /** A longer description of what the label means and why it might be applied. */ 116 + description: string 117 + [k: string]: unknown 118 + } 119 + 120 + export function isLabelValueDefinitionStrings( 121 + v: unknown, 122 + ): v is LabelValueDefinitionStrings { 123 + return ( 124 + isObj(v) && 125 + hasProp(v, '$type') && 126 + v.$type === 'com.atproto.label.defs#labelValueDefinitionStrings' 127 + ) 128 + } 129 + 130 + export function validateLabelValueDefinitionStrings( 131 + v: unknown, 132 + ): ValidationResult { 133 + return lexicons.validate( 134 + 'com.atproto.label.defs#labelValueDefinitionStrings', 135 + v, 136 + ) 137 + } 138 + 139 + export type LabelValue = 140 + | '!hide' 141 + | '!no-promote' 142 + | '!warn' 143 + | '!no-unauthenticated' 144 + | 'dmca-violation' 145 + | 'doxxing' 146 + | 'porn' 147 + | 'sexual' 148 + | 'nudity' 149 + | 'nsfl' 150 + | 'gore' 151 + | (string & {})
+26
src/lexicons/types/com/atproto/repo/strongRef.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Main { 10 + uri: string 11 + cid: string 12 + [k: string]: unknown 13 + } 14 + 15 + export function isMain(v: unknown): v is Main { 16 + return ( 17 + isObj(v) && 18 + hasProp(v, '$type') && 19 + (v.$type === 'com.atproto.repo.strongRef#main' || 20 + v.$type === 'com.atproto.repo.strongRef') 21 + ) 22 + } 23 + 24 + export function validateMain(v: unknown): ValidationResult { 25 + return lexicons.validate('com.atproto.repo.strongRef#main', v) 26 + }
+27
src/lexicons/types/ovh/plonk/paste.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../lexicons' 6 + import { isObj, hasProp } from '../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Record { 10 + code: string 11 + lang: string 12 + title: string 13 + createdAt: string 14 + [k: string]: unknown 15 + } 16 + 17 + export function isRecord(v: unknown): v is Record { 18 + return ( 19 + isObj(v) && 20 + hasProp(v, '$type') && 21 + (v.$type === 'ovh.plonk.paste#main' || v.$type === 'ovh.plonk.paste') 22 + ) 23 + } 24 + 25 + export function validateRecord(v: unknown): ValidationResult { 26 + return lexicons.validate('ovh.plonk.paste#main', v) 27 + }
+13
src/lexicons/util.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export function isObj(v: unknown): v is Record<string, unknown> { 5 + return typeof v === 'object' && v !== null 6 + } 7 + 8 + export function hasProp<K extends PropertyKey>( 9 + data: object, 10 + prop: K, 11 + ): data is Record<K, unknown> { 12 + return prop in data 13 + }
+16
src/lib.ts
··· 1 + import dotenv from "dotenv"; 2 + import { cleanEnv, host, port, str, testOnly } from "envalid"; 3 + 4 + dotenv.config(); 5 + 6 + export const env = cleanEnv(process.env, { 7 + NODE_ENV: str({ 8 + devDefault: testOnly("test"), 9 + choices: ["development", "production", "test"], 10 + }), 11 + HOST: host({ devDefault: testOnly("localhost") }), 12 + PORT: port({ devDefault: testOnly(3000) }), 13 + PUBLIC_URL: str({}), 14 + DB_PATH: str({ devDefault: ":memory:" }), 15 + COOKIE_SECRET: str({ devDefault: "00000000000000000000000000000001" }), 16 + });
+10
src/mixins/head.pug
··· 1 + mixin head(title) 2 + head 3 + meta(name="viewport" content="width=device-width, initial-scale=1.0") 4 + meta(charset='UTF-8') 5 + title #{title} 6 + link(rel="stylesheet", href="/styles.css") 7 + link(rel="preconnect" href="https://rsms.me/") 8 + link(rel="stylesheet" href="https://rsms.me/inter/inter.css") 9 + script(src="https://cdn.dashjs.org/latest/dash.all.min.js") 10 +
+16
src/mixins/mkPost.pug
··· 1 + include ./utils 2 + - var greetings = ["plonk your code", "what would you like to plonk today?", "get busy plonkin', or get busy dyin'"] 3 + - var greeting = greetings[randInt(0, greetings.length - 1)] 4 + mixin mkPost() 5 + form(action='/paste' method="post").post-form 6 + div.post-row 7 + input#title(type="text" name="title" placeholder="enter a title" required).post-input-title 8 + select#lang(name="lang" required).post-input-lang 9 + each lang in langs 10 + option(value=`${lang}`) #{lang} 11 + 12 + div.post-row 13 + textarea#code(name="code" rows="5" placeholder=`${greeting}` required).post-input-code 14 + 15 + div.post-submit-row 16 + button(type="submit").post-input-submit plonk!
+16
src/mixins/post.pug
··· 1 + mixin post(paste, didHandleMap) 2 + div.post 3 + p 4 + a(href=`/p/${paste.shortUrl}`) 5 + | #{paste.title} 6 + p.post-info 7 + | by 8 + a(href=`/u/${encodeURIComponent(paste.authorDid)}`) 9 + | @#{didHandleMap[paste.authorDid]} 10 + | &nbsp;· 11 + | #{timeDifference(now, Date.parse(paste.createdAt))} ago 12 + | · 13 + | #{paste.lang} 14 + | · 15 + | #{paste.code.split('\n').length} loc 16 +
+30
src/mixins/utils.pug
··· 1 + - 2 + function randInt(min, max) { 3 + return Math.floor(Math.random() * (max - min + 1)) + min; 4 + } 5 + - 6 + function timeDifference(current, previous) { 7 + if (!current || !previous) { 8 + return ''; 9 + } 10 + var msPerMinute = 60 * 1000; 11 + var msPerHour = msPerMinute * 60; 12 + var msPerDay = msPerHour * 24; 13 + var msPerMonth = msPerDay * 30; 14 + var msPerYear = msPerDay * 365; 15 + var elapsed = current - previous; 16 + if (elapsed < msPerMinute) { 17 + return Math.round(elapsed/1000) + 's'; 18 + } else if (elapsed < msPerHour) { 19 + return Math.round(elapsed/msPerMinute) + 'm'; 20 + } else if (elapsed < msPerDay ) { 21 + return Math.round(elapsed/msPerHour ) + 'h'; 22 + } else if (elapsed < msPerMonth) { 23 + return Math.round(elapsed/msPerDay) + 'd'; 24 + } else if (elapsed < msPerYear) { 25 + return Math.round(elapsed/msPerMonth) + 'mo'; 26 + } else { 27 + return Math.round(elapsed/msPerYear ) + 'y'; 28 + } 29 + } 30 +
+149
src/public/styles.css
··· 1 + @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap'); 2 + 3 + :root { 4 + /* Light mode colors */ 5 + --bg-color: white; 6 + --bg-color-muted: #eee; 7 + --text-color: black; 8 + --text-color-muted: #999; 9 + --blockquote-color: green; 10 + --link-color: #29BC9B; 11 + --link-visited-color: #999; 12 + --accent: var(--link-color); 13 + --error-text-color: red; 14 + } 15 + 16 + @media (prefers-color-scheme: dark) { 17 + :root { 18 + --bg-color: black; 19 + --bg-color-muted: #333; 20 + --text-color: white; 21 + --text-color-muted: #777; 22 + --blockquote-color: lightgreen; 23 + --link-color: #79ffe1; 24 + --link-visited-color: #999; 25 + --accent: var(--link-color); 26 + --error-text-color: lightcoral; 27 + } 28 + } 29 + 30 + * { 31 + font-family: 'IBM Plex Mono', monospace; 32 + } 33 + 34 + body { 35 + display: flex; 36 + flex-direction: row; 37 + background-color: var(--bg-color); 38 + color: var(--text-color); 39 + justify-content: space-around; 40 + } 41 + 42 + a { 43 + color: var(--link-color); 44 + } 45 + 46 + a:visited { 47 + color: var(--link-visited-color); 48 + } 49 + 50 + :focus { 51 + outline: 1px solid var(--accent); 52 + } 53 + 54 + pre { 55 + background-color: var(--bg-color-muted); 56 + padding: 1rem; 57 + overflow-x: auto; 58 + } 59 + 60 + input, textarea, select, button { 61 + border: none; 62 + padding: 1rem; 63 + background-color: var(--bg-color-muted); 64 + color: var(--text-color); 65 + } 66 + 67 + #content { 68 + width: 100%; 69 + } 70 + 71 + @media (min-width: 768px) { 72 + #content { 73 + width: 70%; 74 + } 75 + } 76 + 77 + @media (min-width: 1080px) { 78 + #content { 79 + width: 60%; 80 + } 81 + } 82 + 83 + @media (min-width: 2560px) { 84 + #content { 85 + width: 50%; 86 + } 87 + } 88 + 89 + textarea { 90 + resize: vertical; 91 + } 92 + 93 + hr { 94 + border: none; 95 + border-top: 1px solid var(--bg-color-muted); 96 + padding: 1rem; 97 + } 98 + 99 + .post-form { 100 + display: flex; 101 + flex-direction: column; 102 + gap: 1rem; 103 + } 104 + 105 + .post-row, .post-submit-row, .login-row { 106 + display: flex; 107 + gap: 1rem; 108 + } 109 + 110 + .post-submit-row { 111 + justify-content: flex-end; 112 + } 113 + 114 + .post-input-title { 115 + flex: 3; 116 + } 117 + 118 + .post-input-lang { 119 + flex: 1; 120 + } 121 + 122 + .post-input-code { 123 + width: 100%; 124 + } 125 + 126 + .post-input-submit { 127 + align-self: flex-end; 128 + } 129 + 130 + .timeline { 131 + display: flex; 132 + flex-direction: column; 133 + gap: 1rem; 134 + } 135 + 136 + .login-input-title { 137 + flex: 3 138 + } 139 + 140 + .login-submit-button { 141 + flex: 1 142 + } 143 + 144 + .header { 145 + display: flex; 146 + flex-direction: row; 147 + justify-content: space-between; 148 + align-items: center; 149 + }
+277
src/routes.ts
··· 1 + import path from "node:path"; 2 + import express from "express"; 3 + import { Ctx } from "./"; 4 + import { env } from "#/lib"; 5 + import { getIronSession } from "iron-session"; 6 + import { isValidHandle, AtUri } from "@atproto/syntax"; 7 + import { IncomingMessage, ServerResponse } from "node:http"; 8 + import { Agent } from "@atproto/api"; 9 + import { getPds, DidResolver } from "@atproto/identity"; 10 + import { TID } from "@atproto/common"; 11 + import { newShortUrl } from "#/db"; 12 + 13 + import * as Paste from "#/lexicons/types/ovh/plonk/paste"; 14 + 15 + type Session = { 16 + did: string; 17 + }; 18 + 19 + async function getSessionAgent( 20 + req: IncomingMessage, 21 + res: ServerResponse<IncomingMessage>, 22 + ctx: Ctx, 23 + ) { 24 + const session = await getIronSession<Session>(req, res, { 25 + cookieName: "plonk-id", 26 + password: env.COOKIE_SECRET, 27 + }); 28 + if (!session.did) return null; 29 + try { 30 + const oauthSession = await ctx.oauthClient.restore(session.did); 31 + return oauthSession ? new Agent(oauthSession) : null; 32 + } catch (err) { 33 + ctx.logger.warn({ err }, "oauth restore failed"); 34 + session.destroy(); 35 + return null; 36 + } 37 + } 38 + 39 + export const createRouter = (ctx: Ctx) => { 40 + const router = express.Router(); 41 + 42 + // Static assets 43 + router.use( 44 + "/public", 45 + express.static(path.join(__dirname, "pages", "public")), 46 + ); 47 + 48 + // OAuth metadata 49 + router.get("/client-metadata.json", async (_req, res) => { 50 + return res.json(ctx.oauthClient.clientMetadata); 51 + }); 52 + 53 + router.get("/oauth/callback", async (req, res) => { 54 + const params = new URLSearchParams(req.originalUrl.split("?")[1]); 55 + try { 56 + const { session } = await ctx.oauthClient.callback(params); 57 + const clientSession = await getIronSession<Session>(req, res, { 58 + cookieName: "plonk-id", 59 + password: env.COOKIE_SECRET, 60 + }); 61 + ctx.logger.info(clientSession.did, "client session did"); 62 + //assert(!clientSession.did, "session already exists"); 63 + clientSession.did = session.did; 64 + await clientSession.save(); 65 + } catch (err) { 66 + ctx.logger.error({ err }, "oauth callback failed"); 67 + return res.redirect("/?error"); 68 + } 69 + return res.redirect("/"); 70 + }); 71 + 72 + // GET login 73 + router.get("/login", async (req, res) => { 74 + return res.render("login"); 75 + }); 76 + router.post("/login", async (req, res) => { 77 + const agent = await getSessionAgent(req, res, ctx); 78 + if (agent) { 79 + return res.redirect("/"); 80 + } 81 + const handle = req.body?.handle; 82 + if (typeof handle !== "string" || !isValidHandle(handle)) { 83 + return res.redirect("/login"); 84 + } 85 + 86 + try { 87 + const url = await ctx.oauthClient.authorize(handle, { 88 + scope: "atproto transition:generic", 89 + }); 90 + return res.redirect(url.toString()); 91 + } catch (err) { 92 + ctx.logger.error({ err }, "oauth authorize failed"); 93 + return res.redirect("/login"); 94 + } 95 + }); 96 + 97 + router.get("/logout", async (req, res) => { 98 + const session = await getIronSession<Session>(req, res, { 99 + cookieName: "plonk-id", 100 + password: env.COOKIE_SECRET, 101 + }); 102 + session.destroy(); 103 + return res.redirect("/"); 104 + }); 105 + 106 + router.get("/", async (req, res) => { 107 + const agent = await getSessionAgent(req, res, ctx); 108 + const pastes = await ctx.db 109 + .selectFrom("paste") 110 + .selectAll() 111 + .orderBy("indexedAt", "desc") 112 + .limit(25) 113 + .execute(); 114 + 115 + // Map user DIDs to their domain-name handles 116 + const didHandleMap = await ctx.resolver.resolveDidsToHandles( 117 + pastes.map((s) => s.authorDid), 118 + ); 119 + 120 + if (!agent) { 121 + return res.render("index", { pastes, didHandleMap }); 122 + } 123 + 124 + return res.render("index", { 125 + pastes, 126 + ownDid: agent.assertDid, 127 + didHandleMap, 128 + }); 129 + }); 130 + 131 + router.get("/u/:authorDid", async (req, res) => { 132 + const { authorDid } = req.params; 133 + const pastes = await ctx.db 134 + .selectFrom("paste") 135 + .selectAll() 136 + .where("authorDid", "=", authorDid) 137 + .orderBy("indexedAt", "desc") 138 + .execute(); 139 + let didHandleMap = {}; 140 + didHandleMap[authorDid] = await ctx.resolver.resolveDidToHandle(authorDid); 141 + return res.render("user", { pastes, authorDid, didHandleMap }); 142 + }); 143 + 144 + router.get("/p/:shortUrl", async (req, res) => { 145 + const { shortUrl } = req.params; 146 + const ret = await ctx.db 147 + .selectFrom("paste") 148 + .where("shortUrl", "=", shortUrl) 149 + .select(["authorDid", "uri"]) 150 + .executeTakeFirst(); 151 + if (!ret) { 152 + return res.status(404); 153 + } 154 + const { authorDid: did, uri } = ret; 155 + const handle = await ctx.resolver.resolveDidToHandle(did); 156 + const resolver = new DidResolver({}); 157 + const didDocument = await resolver.resolve(did); 158 + if (!didDocument) { 159 + return res.status(404); 160 + } 161 + const pds = getPds(didDocument); 162 + if (!pds) { 163 + return res.status(404); 164 + } 165 + const aturi = new AtUri(uri); 166 + const url = new URL(`${pds}/xrpc/com.atproto.repo.getRecord`); 167 + url.searchParams.set("repo", aturi.hostname); 168 + url.searchParams.set("collection", aturi.collection); 169 + url.searchParams.set("rkey", aturi.rkey); 170 + 171 + const response = await fetch(url.toString()); 172 + 173 + if (!response.ok) { 174 + return res.status(404); 175 + } 176 + 177 + const pasteRecord = await response.json(); 178 + const paste = 179 + Paste.isRecord(pasteRecord.value) && 180 + Paste.validateRecord(pasteRecord.value).success 181 + ? pasteRecord.value 182 + : {}; 183 + 184 + return res.render("paste", { paste, handle, shortUrl }); 185 + }); 186 + 187 + router.get("/r/:shortUrl", async (req, res) => { 188 + const { shortUrl } = req.params; 189 + const ret = await ctx.db 190 + .selectFrom("paste") 191 + .where("shortUrl", "=", shortUrl) 192 + .select(["code"]) 193 + .executeTakeFirst(); 194 + if (!ret) { 195 + return res.status(404); 196 + } 197 + 198 + res.set("Content-Type", "text/plain; charset=utf-8"); 199 + return res.send(ret.code); 200 + }); 201 + 202 + router.post("/paste", async (req, res) => { 203 + const agent = await getSessionAgent(req, res, ctx); 204 + if (!agent) { 205 + return res 206 + .status(401) 207 + .type("html") 208 + .send("<h1>Error: Session required</h1>"); 209 + } 210 + 211 + const rkey = TID.nextStr(); 212 + const record = { 213 + $type: "ovh.plonk.paste", 214 + code: req.body?.code, 215 + lang: req.body?.lang, 216 + title: req.body?.title, 217 + createdAt: new Date().toISOString(), 218 + }; 219 + 220 + if (!Paste.validateRecord(record).success) { 221 + return res 222 + .status(400) 223 + .type("html") 224 + .send("<h1>Error: Invalid status</h1>"); 225 + } 226 + 227 + let uri; 228 + try { 229 + const res = await agent.com.atproto.repo.putRecord({ 230 + repo: agent.assertDid, 231 + collection: "ovh.plonk.paste", 232 + rkey, 233 + record, 234 + validate: false, 235 + }); 236 + uri = res.data.uri; 237 + } catch (err) { 238 + ctx.logger.warn({ err }, "failed to put record"); 239 + return res 240 + .status(500) 241 + .type("html") 242 + .send("<h3>Error: Failed to write record</h1>"); 243 + } 244 + 245 + try { 246 + const shortUrl = await newShortUrl(ctx.db); 247 + await ctx.db 248 + .insertInto("paste") 249 + .values({ 250 + uri, 251 + shortUrl, 252 + authorDid: agent.assertDid, 253 + code: record.code, 254 + lang: record.lang, 255 + title: record.title, 256 + createdAt: record.createdAt, 257 + indexedAt: new Date().toISOString(), 258 + }) 259 + .execute(); 260 + ctx.logger.info(res, "wrote back to db"); 261 + return res.redirect(`/p/${shortUrl}`); 262 + } catch (err) { 263 + ctx.logger.warn( 264 + { err }, 265 + "failed to update computed view; ignoring as it should be caught by the firehose", 266 + ); 267 + } 268 + 269 + return res.redirect("/"); 270 + }); 271 + 272 + return router; 273 + }; 274 + 275 + // https://pds.icyphox.sh/xrpc/com.atproto.repo.getRecord?repo=did%3Aplc%3A3ft67n4xnawzq4qi7mcksxj5 276 + // at://did:plc:3ft67n4xnawzq4qi7mcksxj5/ovh.plonk.paste/3lcs3lnslbk2d 277 + // https://pds.icyphox.sh/xrpc/com.atproto.repo.getRecord?repo=did%3Aplc%3A3ft67n4xnawzq4qi7mcksxj5&collection=ovh.plonk.paste&rkey=3lcqt7newvc2c
+47
src/views/index.pug
··· 1 + include ../mixins/mkPost 2 + include ../mixins/head 3 + include ../mixins/utils 4 + include ../mixins/post 5 + 6 + - var now = new Date() 7 + - 8 + var langs = ["plaintext"] 9 + .concat([ 10 + "javascript", 11 + "typescript", 12 + "java", 13 + "rust", 14 + "go", 15 + "python", 16 + "ruby", 17 + "php", 18 + "c", 19 + "c#", 20 + "c++", 21 + ].toSorted()) 22 + doctype html 23 + html 24 + +head("timeline") 25 + body 26 + main#content 27 + div.header 28 + div.left-side 29 + if ownDid 30 + | logged in as @#{didHandleMap[ownDid]} 31 + div.right-side 32 + if ownDid 33 + p 34 + a(href=`/u/${encodeURIComponent(ownDid)}`) my plonks 35 + | &nbsp;·&nbsp; 36 + a(href="/logout") logout 37 + else 38 + p 39 + a(href="/login") login 40 + |&nbsp;to get plonkin' 41 + 42 + if ownDid 43 + +mkPost() 44 + 45 + div.timeline 46 + each paste in pastes 47 + +post(paste, didHandleMap)
+17
src/views/login.pug
··· 1 + doctype html 2 + html 3 + head 4 + meta(name="viewport" content="width=device-width, initial-scale=1.0") 5 + meta(charset='UTF-8') 6 + title login 7 + link(rel="stylesheet", href="/styles.css") 8 + link(rel="preconnect" href="https://rsms.me/") 9 + link(rel="stylesheet" href="https://rsms.me/inter/inter.css") 10 + script(src="https://cdn.dashjs.org/latest/dash.all.min.js") 11 + body 12 + main#content 13 + h1 login 14 + form(action='/login' method="post") 15 + div.login-row 16 + input(type="text" name="handle" placeholder="enter handle" required).login-input-title 17 + button(type="submit").login-submit-button login
+17
src/views/paste.pug
··· 1 + - var now = new Date() 2 + include ../mixins/head 3 + include ../mixins/utils 4 + doctype html 5 + html 6 + +head(paste.title) 7 + body 8 + main#content 9 + h1 #{paste.title} 10 + p 11 + | by @#{handle} · 12 + | #{timeDifference(now, Date.parse(paste.createdAt))} ago · 13 + | #{paste.lang} · 14 + | #{paste.code.split('\n').length} loc · 15 + a(href=`/r/${shortUrl}`) raw 16 + pre 17 + | #{paste.code}
+14
src/views/user.pug
··· 1 + - var now = new Date() 2 + - var handle = didHandleMap[authorDid] 3 + include ../mixins/head 4 + include ../mixins/utils 5 + include ../mixins/post 6 + doctype html 7 + html 8 + +head(handle) 9 + body 10 + main#content 11 + h1 plonks by @#{handle} 12 + div.timeline 13 + each paste in pastes 14 + +post(paste, didHandleMap)
+19
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "target": "ESNext", 4 + "module": "CommonJS", 5 + "baseUrl": ".", 6 + "paths": { 7 + "#/*": ["src/*"] 8 + }, 9 + "moduleResolution": "Node10", 10 + "outDir": "dist", 11 + "importsNotUsedAsValues": "remove", 12 + "strict": true, 13 + "esModuleInterop": true, 14 + "skipLibCheck": true, 15 + "forceConsistentCasingInFileNames": true 16 + }, 17 + "include": ["src/**/*"], 18 + "exclude": ["node_modules"] 19 + }