a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky
atproto bluesky typescript npm
101
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: drop better-sqlite3

Mary 52d020db bec23741

+126 -129
+10
.pnpmfile.cjs
··· 1 + module.exports = { 2 + hooks: { 3 + readPackage(pkg) { 4 + if (pkg.name === '@atproto/pds') { 5 + delete pkg.dependencies['better-sqlite3']; 6 + } 7 + return pkg; 8 + }, 9 + }, 10 + };
+2 -2
package.json
··· 19 19 "typescript": "~5.9.3" 20 20 }, 21 21 "pnpm": { 22 - "overrides": { 23 - "@atproto/pds>better-sqlite3": "^12.0.0" 22 + "patchedDependencies": { 23 + "@atproto/pds": "patches/@atproto__pds.patch" 24 24 } 25 25 } 26 26 }
+104
patches/@atproto__pds.patch
··· 1 + diff --git a/dist/db/db.js b/dist/db/db.js 2 + index b34a3a195cead4ba7e36e80482873a044906216f..6fa7c83d712a1b4ff1fff170a06eddfa4652ee67 100644 3 + --- a/dist/db/db.js 4 + +++ b/dist/db/db.js 5 + @@ -5,13 +5,76 @@ var __importDefault = (this && this.__importDefault) || function (mod) { 6 + Object.defineProperty(exports, "__esModule", { value: true }); 7 + exports.Database = void 0; 8 + const node_assert_1 = __importDefault(require("node:assert")); 9 + -const better_sqlite3_1 = __importDefault(require("better-sqlite3")); 10 + +const node_sqlite_1 = require("node:sqlite"); 11 + const kysely_1 = require("kysely"); 12 + const logger_1 = require("../logger"); 13 + const util_1 = require("./util"); 14 + const DEFAULT_PRAGMAS = { 15 + // strict: 'ON', // @TODO strictness should live on table defs instead 16 + }; 17 + +// inlined from @oomfware/kysely-node-sqlite 18 + +class NodeSqliteConnection { 19 + + #db; 20 + + constructor(db) { this.#db = db; } 21 + + executeQuery(compiledQuery) { 22 + + const { sql, parameters } = compiledQuery; 23 + + const stmt = this.#db.prepare(sql); 24 + + if (stmt.columns().length > 0) { 25 + + return Promise.resolve({ rows: stmt.all(...parameters) }); 26 + + } 27 + + const { changes, lastInsertRowid } = stmt.run(...parameters); 28 + + return Promise.resolve({ 29 + + numAffectedRows: BigInt(changes), 30 + + insertId: BigInt(lastInsertRowid), 31 + + rows: [], 32 + + }); 33 + + } 34 + + async *streamQuery(compiledQuery, _chunkSize) { 35 + + const { sql, parameters } = compiledQuery; 36 + + const stmt = this.#db.prepare(sql); 37 + + for (const row of stmt.iterate(...parameters)) { yield { rows: [row] }; } 38 + + } 39 + +} 40 + +class ConnectionMutex { 41 + + #deferred; 42 + + async lock() { 43 + + while (this.#deferred) { await this.#deferred.promise; } 44 + + this.#deferred = Promise.withResolvers(); 45 + + } 46 + + unlock() { 47 + + const deferred = this.#deferred; 48 + + this.#deferred = undefined; 49 + + deferred?.resolve(); 50 + + } 51 + +} 52 + +class NodeSqliteDriver { 53 + + #config; 54 + + #mutex = new ConnectionMutex(); 55 + + #db; 56 + + #connection; 57 + + constructor(config) { this.#config = Object.freeze({ ...config }); } 58 + + async init() { 59 + + this.#db = typeof this.#config.database === 'function' 60 + + ? await this.#config.database() 61 + + : this.#config.database; 62 + + this.#connection = new NodeSqliteConnection(this.#db); 63 + + if (this.#config.onCreateConnection) { await this.#config.onCreateConnection(this.#connection); } 64 + + } 65 + + async acquireConnection() { await this.#mutex.lock(); return this.#connection; } 66 + + async releaseConnection() { this.#mutex.unlock(); } 67 + + async beginTransaction(connection) { await connection.executeQuery(kysely_1.CompiledQuery.raw('begin')); } 68 + + async commitTransaction(connection) { await connection.executeQuery(kysely_1.CompiledQuery.raw('commit')); } 69 + + async rollbackTransaction(connection) { await connection.executeQuery(kysely_1.CompiledQuery.raw('rollback')); } 70 + + async destroy() { this.#db?.close(); } 71 + +} 72 + +class NodeSqliteDialect { 73 + + #config; 74 + + constructor(config) { this.#config = config; } 75 + + createDriver() { return new NodeSqliteDriver(this.#config); } 76 + + createQueryCompiler() { return new kysely_1.SqliteQueryCompiler(); } 77 + + createAdapter() { return new kysely_1.SqliteAdapter(); } 78 + + createIntrospector(db) { return new kysely_1.SqliteIntrospector(db); } 79 + +} 80 + class Database { 81 + constructor(db) { 82 + Object.defineProperty(this, "db", { 83 + @@ -34,18 +97,16 @@ class Database { 84 + }); 85 + } 86 + static sqlite(location, opts) { 87 + - const sqliteDb = new better_sqlite3_1.default(location, { 88 + - timeout: 0, // handled by application 89 + - }); 90 + + const sqliteDb = new node_sqlite_1.DatabaseSync(location); 91 + const pragmas = { 92 + ...DEFAULT_PRAGMAS, 93 + ...(opts?.pragmas ?? {}), 94 + }; 95 + for (const pragma of Object.keys(pragmas)) { 96 + - sqliteDb.pragma(`${pragma} = ${pragmas[pragma]}`); 97 + + sqliteDb.prepare(`PRAGMA ${pragma} = ${pragmas[pragma]}`).run(); 98 + } 99 + const db = new kysely_1.Kysely({ 100 + - dialect: new kysely_1.SqliteDialect({ 101 + + dialect: new NodeSqliteDialect({ 102 + database: sqliteDb, 103 + }), 104 + });
+10 -127
pnpm-lock.yaml
··· 4 4 autoInstallPeers: true 5 5 excludeLinksFromLockfile: false 6 6 7 - overrides: 8 - '@atproto/pds>better-sqlite3': ^12.0.0 7 + pnpmfileChecksum: sha256-3aR7HO1D+O+ZJWGd95yDWJmz1hUofpOWygFPqDymYEg= 8 + 9 + patchedDependencies: 10 + '@atproto/pds': 11 + hash: acd46ed089de2d59171762efa35a9814e458fd8703bfcee1c856392f7e13c850 12 + path: patches/@atproto__pds.patch 9 13 10 14 importers: 11 15 ··· 578 582 version: 0.4.12 579 583 '@atproto/pds': 580 584 specifier: ^0.4.212 581 - version: 0.4.212 585 + version: 0.4.212(patch_hash=acd46ed089de2d59171762efa35a9814e458fd8703bfcee1c856392f7e13c850) 582 586 '@did-plc/server': 583 587 specifier: ^0.0.1 584 588 version: 0.0.1 ··· 3133 3137 resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 3134 3138 engines: {node: '>=4'} 3135 3139 3136 - better-sqlite3@12.6.2: 3137 - resolution: {integrity: sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==} 3138 - engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} 3139 - 3140 3140 big-integer@1.6.52: 3141 3141 resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} 3142 3142 engines: {node: '>=0.6'} 3143 - 3144 - bindings@1.5.0: 3145 - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 3146 3143 3147 3144 bl@4.1.0: 3148 3145 resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} ··· 3285 3282 peerDependenciesMeta: 3286 3283 supports-color: 3287 3284 optional: true 3288 - 3289 - decompress-response@6.0.0: 3290 - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 3291 - engines: {node: '>=10'} 3292 - 3293 - deep-extend@0.6.0: 3294 - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 3295 - engines: {node: '>=4.0.0'} 3296 3285 3297 3286 deepmerge@4.3.1: 3298 3287 resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} ··· 3440 3429 resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 3441 3430 engines: {node: '>=0.8.x'} 3442 3431 3443 - expand-template@2.0.3: 3444 - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 3445 - engines: {node: '>=6'} 3446 - 3447 3432 expect-type@1.3.0: 3448 3433 resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} 3449 3434 engines: {node: '>=12.0.0'} ··· 3495 3480 file-type@16.5.4: 3496 3481 resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} 3497 3482 engines: {node: '>=10'} 3498 - 3499 - file-uri-to-path@1.0.0: 3500 - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 3501 3483 3502 3484 fill-range@7.1.1: 3503 3485 resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} ··· 3579 3561 get-tsconfig@4.13.6: 3580 3562 resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} 3581 3563 3582 - github-from-package@0.0.0: 3583 - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 3584 - 3585 3564 glob-parent@5.1.2: 3586 3565 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 3587 3566 engines: {node: '>= 6'} ··· 3677 3656 3678 3657 inherits@2.0.4: 3679 3658 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 3680 - 3681 - ini@1.3.8: 3682 - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 3683 3659 3684 3660 ioredis@5.10.0: 3685 3661 resolution: {integrity: sha512-HVBe9OFuqs+Z6n64q09PQvP1/R4Bm+30PAyyD4wIEqssh3v9L21QjCVk4kRLucMBcDokJTcLjsGeVRlq/nH6DA==} ··· 3836 3812 engines: {node: '>=4'} 3837 3813 hasBin: true 3838 3814 3839 - mimic-response@3.1.0: 3840 - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 3841 - engines: {node: '>=10'} 3842 - 3843 3815 minimalistic-assert@1.0.1: 3844 3816 resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} 3845 3817 ··· 3892 3864 resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} 3893 3865 engines: {node: ^18 || >=20} 3894 3866 hasBin: true 3895 - 3896 - napi-build-utils@2.0.0: 3897 - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} 3898 3867 3899 3868 negotiator@0.6.3: 3900 3869 resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} ··· 4166 4135 resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 4167 4136 engines: {node: '>=0.10.0'} 4168 4137 4169 - prebuild-install@7.1.3: 4170 - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} 4171 - engines: {node: '>=10'} 4172 - deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. 4173 - hasBin: true 4174 - 4175 4138 prebuildify@6.0.1: 4176 4139 resolution: {integrity: sha512-8Y2oOOateom/s8dNBsGIcnm6AxPmLH4/nanQzL5lQMU+sC0CMhzARZHizwr36pUPLdvBnOkCNQzxg4djuFSgIw==} 4177 4140 hasBin: true ··· 4229 4192 raw-body@2.5.3: 4230 4193 resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} 4231 4194 engines: {node: '>= 0.8'} 4232 - 4233 - rc@1.2.8: 4234 - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 4235 - hasBin: true 4236 4195 4237 4196 read-yaml-file@1.1.0: 4238 4197 resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} ··· 4348 4307 resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 4349 4308 engines: {node: '>=14'} 4350 4309 4351 - simple-concat@1.0.1: 4352 - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 4353 - 4354 - simple-get@4.0.1: 4355 - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 4356 - 4357 4310 sirv@3.0.2: 4358 4311 resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} 4359 4312 engines: {node: '>=18'} ··· 4422 4375 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 4423 4376 engines: {node: '>=4'} 4424 4377 4425 - strip-json-comments@2.0.1: 4426 - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 4427 - engines: {node: '>=0.10.0'} 4428 - 4429 4378 strnum@2.1.2: 4430 4379 resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} 4431 4380 ··· 4501 4450 resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} 4502 4451 engines: {node: '>=18.0.0'} 4503 4452 hasBin: true 4504 - 4505 - tunnel-agent@0.6.0: 4506 - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 4507 4453 4508 4454 type-fest@2.19.0: 4509 4455 resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} ··· 5018 4964 '@atproto/jwk': 0.6.0 5019 4965 zod: 3.25.76 5020 4966 5021 - '@atproto/pds@0.4.212': 4967 + '@atproto/pds@0.4.212(patch_hash=acd46ed089de2d59171762efa35a9814e458fd8703bfcee1c856392f7e13c850)': 5022 4968 dependencies: 5023 4969 '@atproto-labs/fetch-node': 0.2.0 5024 4970 '@atproto-labs/simple-store': 0.3.0 ··· 5041 4987 '@atproto/xrpc-server': 0.10.14 5042 4988 '@did-plc/lib': 0.0.4 5043 4989 '@hapi/address': 5.1.1 5044 - better-sqlite3: 12.6.2 5045 4990 bytes: 3.1.2 5046 4991 compression: 1.8.1 5047 4992 cors: 2.8.6 ··· 7012 6957 dependencies: 7013 6958 is-windows: 1.0.2 7014 6959 7015 - better-sqlite3@12.6.2: 7016 - dependencies: 7017 - bindings: 1.5.0 7018 - prebuild-install: 7.1.3 7019 - 7020 6960 big-integer@1.6.52: {} 7021 - 7022 - bindings@1.5.0: 7023 - dependencies: 7024 - file-uri-to-path: 1.0.0 7025 6961 7026 6962 bl@4.1.0: 7027 6963 dependencies: ··· 7178 7114 dependencies: 7179 7115 ms: 2.1.3 7180 7116 7181 - decompress-response@6.0.0: 7182 - dependencies: 7183 - mimic-response: 3.1.0 7184 - 7185 - deep-extend@0.6.0: {} 7186 - 7187 7117 deepmerge@4.3.1: {} 7188 7118 7189 7119 delay@5.0.0: {} ··· 7198 7128 7199 7129 detect-indent@6.1.0: {} 7200 7130 7201 - detect-libc@2.1.2: {} 7131 + detect-libc@2.1.2: 7132 + optional: true 7202 7133 7203 7134 dir-glob@3.0.1: 7204 7135 dependencies: ··· 7357 7288 7358 7289 events@3.3.0: {} 7359 7290 7360 - expand-template@2.0.3: {} 7361 - 7362 7291 expect-type@1.3.0: {} 7363 7292 7364 7293 express-async-errors@3.1.1(express@4.22.1): ··· 7437 7366 strtok3: 6.3.0 7438 7367 token-types: 4.2.1 7439 7368 7440 - file-uri-to-path@1.0.0: {} 7441 - 7442 7369 fill-range@7.1.1: 7443 7370 dependencies: 7444 7371 to-regex-range: 5.0.1 ··· 7527 7454 dependencies: 7528 7455 resolve-pkg-maps: 1.0.0 7529 7456 optional: true 7530 - 7531 - github-from-package@0.0.0: {} 7532 7457 7533 7458 glob-parent@5.1.2: 7534 7459 dependencies: ··· 7639 7564 7640 7565 inherits@2.0.4: {} 7641 7566 7642 - ini@1.3.8: {} 7643 - 7644 7567 ioredis@5.10.0: 7645 7568 dependencies: 7646 7569 '@ioredis/commands': 1.5.1 ··· 7780 7703 7781 7704 mime@1.6.0: {} 7782 7705 7783 - mimic-response@3.1.0: {} 7784 - 7785 7706 minimalistic-assert@1.0.1: {} 7786 7707 7787 7708 minimalistic-crypto-utils@1.0.1: {} ··· 7813 7734 nanoid@3.3.11: {} 7814 7735 7815 7736 nanoid@5.1.6: {} 7816 - 7817 - napi-build-utils@2.0.0: {} 7818 7737 7819 7738 negotiator@0.6.3: {} 7820 7739 ··· 8102 8021 dependencies: 8103 8022 xtend: 4.0.2 8104 8023 8105 - prebuild-install@7.1.3: 8106 - dependencies: 8107 - detect-libc: 2.1.2 8108 - expand-template: 2.0.3 8109 - github-from-package: 0.0.0 8110 - minimist: 1.2.8 8111 - mkdirp-classic: 0.5.3 8112 - napi-build-utils: 2.0.0 8113 - node-abi: 3.87.0 8114 - pump: 3.0.3 8115 - rc: 1.2.8 8116 - simple-get: 4.0.1 8117 - tar-fs: 2.1.4 8118 - tunnel-agent: 0.6.0 8119 - 8120 8024 prebuildify@6.0.1: 8121 8025 dependencies: 8122 8026 minimist: 1.2.8 ··· 8169 8073 iconv-lite: 0.4.24 8170 8074 unpipe: 1.0.0 8171 8075 8172 - rc@1.2.8: 8173 - dependencies: 8174 - deep-extend: 0.6.0 8175 - ini: 1.3.8 8176 - minimist: 1.2.8 8177 - strip-json-comments: 2.0.1 8178 - 8179 8076 read-yaml-file@1.1.0: 8180 8077 dependencies: 8181 8078 graceful-fs: 4.2.11 ··· 8339 8236 8340 8237 signal-exit@4.1.0: {} 8341 8238 8342 - simple-concat@1.0.1: {} 8343 - 8344 - simple-get@4.0.1: 8345 - dependencies: 8346 - decompress-response: 6.0.0 8347 - once: 1.4.0 8348 - simple-concat: 1.0.1 8349 - 8350 8239 sirv@3.0.2: 8351 8240 dependencies: 8352 8241 '@polka/url': 1.0.0-next.29 ··· 8410 8299 ansi-regex: 6.2.2 8411 8300 8412 8301 strip-bom@3.0.0: {} 8413 - 8414 - strip-json-comments@2.0.1: {} 8415 8302 8416 8303 strnum@2.1.2: {} 8417 8304 ··· 8484 8371 optionalDependencies: 8485 8372 fsevents: 2.3.3 8486 8373 optional: true 8487 - 8488 - tunnel-agent@0.6.0: 8489 - dependencies: 8490 - safe-buffer: 5.2.1 8491 8374 8492 8375 type-fest@2.19.0: {} 8493 8376