diff --git a/package.json b/package.json index 8d8cb07..577ef7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@filebase/sdk", - "version": "1.0.3", + "version": "1.0.4", "description": "SDK for Interacting with Filebase Services [S3(Buckets, Objects), IPFS(Gateways, Pins) IPNS(Names)]", "repository": { "type": "git", @@ -51,10 +51,14 @@ "@aws-sdk/client-s3": "3.478.0", "@aws-sdk/lib-storage": "3.478.0", "@helia/car": "1.0.4", + "@helia/mfs": "3.0.1", "@helia/unixfs": "1.4.3", "@ipld/car": "5.2.4", "axios": "1.6.2", - "blockstore-fs": "1.1.8", - "uuid": "9.0.1" + "blockstore-fs": "1.1.10", + "datastore-core": "9.2.9", + "p-queue": "8.0.1", + "uuid": "9.0.1", + "winston": "3.12.0" } } diff --git a/src/logger.js b/src/logger.js new file mode 100644 index 0000000..afac359 --- /dev/null +++ b/src/logger.js @@ -0,0 +1,10 @@ +import winston from "winston"; +const { combine, timestamp, json } = winston.format; + +const logger = winston.createLogger({ + level: process.env.LOG_LEVEL || "info", + format: combine(timestamp(), json()), + transports: [new winston.transports.Console()], +}); + +export default logger; diff --git a/src/objectManager.js b/src/objectManager.js index ab00cd4..0045672 100644 --- a/src/objectManager.js +++ b/src/objectManager.js @@ -1,3 +1,5 @@ +// Environment Imports +import logger from "./logger.js"; // S3 Imports import { CopyObjectCommand, @@ -11,16 +13,20 @@ import { Upload } from "@aws-sdk/lib-storage"; // Helia Imports import { CarWriter } from "@ipld/car"; import { car } from "@helia/car"; +import { mfs } from "@helia/mfs"; import { unixfs } from "@helia/unixfs"; import { FsBlockstore } from "blockstore-fs"; +import { MemoryDatastore } from "datastore-core"; // Utility Imports +import { once } from "node:events"; import { createReadStream, createWriteStream } from "node:fs"; -import { mkdir, rm } from "node:fs/promises"; +import { mkdir, rm, open } from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { Readable } from "node:stream"; import { v4 as uuidv4 } from "uuid"; import { downloadFromGateway } from "./helpers.js"; +import PQueue from "p-queue"; /** Interacts with an S3 client to perform various operations on objects in a bucket. */ class ObjectManager { @@ -149,6 +155,7 @@ class ObjectManager { async upload(key, source, metadata, options) { // Generate Upload UUID const uploadUUID = uuidv4(); + const uploadLogger = logger.child({ uploadUUID }); // Setup Upload Options const bucket = options?.bucket || this.#defaultBucket, @@ -172,6 +179,9 @@ class ObjectManager { ...uploadOptions.params.Metadata, import: "car", }; + source.sort((a, b) => { + return countSlashes(b.path) - countSlashes(a.path); + }); let temporaryCarFilePath, temporaryBlockstoreDir; try { @@ -184,24 +194,124 @@ class ObjectManager { ); temporaryCarFilePath = `${temporaryBlockstoreDir}/main.car`; await mkdir(temporaryBlockstoreDir, { recursive: true }); - const temporaryBlockstore = new FsBlockstore(temporaryBlockstoreDir); + const temporaryBlockstore = new FsBlockstore(temporaryBlockstoreDir), + temporaryDatastore = new MemoryDatastore(); + let createdFiles = new Map(); const heliaFs = unixfs({ blockstore: temporaryBlockstore, }); + uploadLogger.verbose("UNIXFS_ADD", { + count: source.length, + }); + let createFilePromises = []; + const queue = new PQueue({ concurrency: 50 }); + for (const entry of source) { + if (entry.content === null) { + continue; + } + const task = (async () => { + await queue.add(async () => { + uploadLogger.silly("SOURCE_IMPORT_STARTED", { + path: entry.path, + size: queue.size, + }); + let createdFile; + if ( + (entry.type === "import" && entry.content !== null) || + entry.content instanceof Readable + ) { + let filehandle; + try { + if (entry.type === "import") { + filehandle = await open(path.resolve(entry.content), "r"); + entry.content = filehandle.createReadStream(); + } + createdFile = await heliaFs.addByteStream(entry.content); + } catch (err) { + if (typeof filehandle !== "undefined") { + await filehandle.close(); + } + throw err; + } + if (typeof filehandle !== "undefined") { + await filehandle.close(); + } + } else if (entry.content !== null) { + createdFile = await heliaFs.addBytes(entry.content); + } else { + return; + } + createdFiles.set(entry.path, createdFile); + uploadLogger.verbose("SOURCE_IMPORT_COMPLETED", { + path: entry.path, + size: queue.size, + }); + }); + })(); + if (queue.size > 150) { + while (queue.size > 100) { + await once(queue, "next"); + } + } + createFilePromises.push(task); + uploadLogger.verbose("SOURCE_IMPORT_QUEUED", { + path: entry.path, + size: queue.size, + }); + } + await Promise.all(createFilePromises); + uploadLogger.verbose("UNIXFS_ADDED", { + count: createdFiles.size, + }); - for (let sourceEntry of source) { - sourceEntry.path = - sourceEntry.path[0] === "/" - ? `/${uploadUUID}${sourceEntry.path}` - : `/${uploadUUID}/${sourceEntry.path}`; + const heliaMfs = mfs({ + blockstore: temporaryBlockstore, + datastore: temporaryDatastore, + }); + uploadLogger.verbose("MFS_ADDING", { + count: source.length, + output: temporaryCarFilePath, + }); + for (const entry of source) { + if (entry.content === null) { + uploadLogger.silly("MFS_DIR_CREATING", { + path: entry.path, + }); + await heliaMfs.mkdir(entry.path); + uploadLogger.verbose("MFS_DIR_CREATED", { + path: entry.path, + }); + } else { + const entryFile = createdFiles.get(entry.path); + uploadLogger.silly("MFS_FILE_COPY", { + cid: entryFile, + path: entry.path, + }); + await heliaMfs.cp(entryFile, entry.path, { + force: true, + }); + uploadLogger.verbose("MFS_FILE_COPIED", { + cid: entryFile, + path: entry.path, + }); + } } - for await (const entry of heliaFs.addAll(source)) { - parsedEntries[entry.path] = entry; + for (const entry of source) { + parsedEntries[entry.path] = await heliaMfs.stat(entry.path); + uploadLogger.silly("MFS_PATH_STAT", parsedEntries[entry.path]); } - const rootEntry = parsedEntries[uploadUUID]; + parsedEntries["/"] = await heliaMfs.stat("/"); + const rootEntry = parsedEntries["/"]; + uploadLogger.verbose("MFS_ADDED", { + root: rootEntry, + count: Object.keys(parsedEntries).length, + }); // Get carFile stream here + uploadLogger.verbose("CAR_EXPORTING", { + root: rootEntry, + }); const carExporter = car({ blockstore: temporaryBlockstore }), { writer, out } = CarWriter.create([rootEntry.cid]); @@ -209,14 +319,31 @@ class ObjectManager { const output = createWriteStream(temporaryCarFilePath); Readable.from(out).pipe(output); await carExporter.export(rootEntry.cid, writer); + uploadLogger.verbose("CAR_EXPORTED", { + root: rootEntry, + }); // Set Uploader to Read from carFile on disk uploadOptions.params.Body = createReadStream(temporaryCarFilePath); // Upload carFile via S3 + uploadLogger.verbose("CAR_UPLOADING", { + entry: rootEntry, + source: temporaryCarFilePath, + }); const parallelUploads3 = new Upload(uploadOptions); + parallelUploads3.on("httpUploadProgress", (progress) => { + uploadLogger.debug("CAR_UPLOAD_PROGRESS", progress); + }); await parallelUploads3.done(); + uploadLogger.verbose("CAR_UPLOADED", { + entry: rootEntry, + source: temporaryCarFilePath, + }); await temporaryBlockstore.close(); + } catch (err) { + console.error(err.message); + throw err; } finally { if (typeof temporaryBlockstoreDir !== "undefined") { // Delete Temporary Blockstore @@ -292,7 +419,7 @@ class ObjectManager { /** * @summary Downloads an object from the specified bucket using the provided key. * @param {string} key - The key of the object to be downloaded. - * @param {objectOptions} [options] - The options for downloading the object.. + * @param {objectOptions} [options] - The options for downloading the object. * @returns {Promise} - A promise that resolves with the contents of the downloaded object as a Stream. * @example * // Download object with name of `download-object-example` @@ -410,7 +537,7 @@ class ObjectManager { * @returns {Promise} - A Promise that resolves with the result of the copy operation. * @example * // Copy object `copy-object-test` from `copy-object-test-pass-src` to `copy-object-test-pass-dest` - * // TIP: Set bucket on constructor and it will be used as the default source for copying objects. + * // TIP: Set bucket on constructor, it will be used as the default source for copying objects. * await objectManager.copy(`copy-object-test`, `copy-object-dest`, { * sourceBucket: `copy-object-src` * }); @@ -437,4 +564,9 @@ class ObjectManager { } } +// Function to count slashes in a path +function countSlashes(path) { + return (path.match(/\//g) || []).length; +} + export default ObjectManager; diff --git a/tsup.config.js b/tsup.config.js index 0352edd..a088dea 100644 --- a/tsup.config.js +++ b/tsup.config.js @@ -1,11 +1,19 @@ -import { defineConfig } from 'tsup' +import { defineConfig } from "tsup"; export default defineConfig({ - entry: ['src/index.js'], + entry: ["src/index.js"], splitting: false, sourcemap: false, - noExternal: ['@ipld/car', '@helia/car', '@helia/unixfs', 'blockstore-fs'], + noExternal: [ + "@ipld/car", + "@helia/car", + "@helia/unixfs", + "@helia/mfs", + "blockstore-fs", + "datastore-core", + "p-queue", + ], dts: true, - format: ['cjs'], + format: ["cjs"], clean: true, -}) +}); diff --git a/yarn.lock b/yarn.lock index 5626756..a16ec07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -611,6 +611,20 @@ dependencies: "@chainsafe/is-ip" "^2.0.1" +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + "@esbuild/aix-ppc64@0.19.12": version "0.19.12" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" @@ -756,6 +770,33 @@ multiformats "^12.0.1" progress-events "^1.0.0" +"@helia/interface@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@helia/interface/-/interface-4.0.1.tgz#45ecc2aab4a03503bcc0cb269094741240a17b65" + integrity sha512-tp9dLlog9x5C/+gE4FF452slemnTQtpS3RneGOatx51nDaE76/HHOmW1hIAASuFtjPHeg/R9BAM8UIX4DEffsg== + dependencies: + "@libp2p/interface" "^1.1.4" + interface-blockstore "^5.2.10" + interface-datastore "^8.2.11" + interface-store "^5.1.8" + multiformats "^13.1.0" + progress-events "^1.0.0" + +"@helia/mfs@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@helia/mfs/-/mfs-3.0.1.tgz#a24b26671d4543997594f93678905a7244c79bf7" + integrity sha512-2/ZlP1jQ787Tb1P86LBBL2UBSxX7sdvD/kAzbWRxFELJquURVgiJd3stFlFsv6PSN/7x0991H8WZAlKZ0oZt3Q== + dependencies: + "@helia/unixfs" "^3.0.1" + "@libp2p/interfaces" "^3.3.2" + "@libp2p/logger" "^4.0.7" + interface-blockstore "^5.2.10" + interface-datastore "^8.2.11" + ipfs-unixfs "^11.1.3" + ipfs-unixfs-exporter "^13.5.0" + ipfs-unixfs-importer "^15.2.4" + multiformats "^13.1.0" + "@helia/unixfs@1.4.3": version "1.4.3" resolved "https://registry.npmjs.org/@helia/unixfs/-/unixfs-1.4.3.tgz" @@ -779,6 +820,31 @@ progress-events "^1.0.0" sparse-array "^1.3.2" +"@helia/unixfs@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@helia/unixfs/-/unixfs-3.0.1.tgz#9643ff1d531990664c7a9e5c18fad99143ef4b99" + integrity sha512-NgT0gk3oswUK+8IEnJDl6IGv5catSQq6IQ1VrO68ZBpJPpo49CyFCqN5CO8IC3QL3wi4JyJ0sTLXemMVkUsTVA== + dependencies: + "@helia/interface" "^4.0.1" + "@ipld/dag-pb" "^4.1.0" + "@libp2p/interface" "^1.1.4" + "@libp2p/logger" "^4.0.7" + "@multiformats/murmur3" "^2.1.8" + hamt-sharding "^3.0.6" + interface-blockstore "^5.2.10" + ipfs-unixfs "^11.1.3" + ipfs-unixfs-exporter "^13.5.0" + ipfs-unixfs-importer "^15.2.4" + it-all "^3.0.4" + it-glob "^2.0.6" + it-last "^3.0.4" + it-pipe "^3.0.1" + merge-options "^3.0.4" + multiformats "^13.1.0" + progress-events "^1.0.0" + sparse-array "^1.3.2" + uint8arrays "^5.0.2" + "@ipld/car@5.2.4": version "5.2.4" resolved "https://registry.npmjs.org/@ipld/car/-/car-5.2.4.tgz" @@ -807,6 +873,14 @@ cborg "^4.0.0" multiformats "^13.0.0" +"@ipld/dag-json@^10.1.7": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-10.2.0.tgz#32468182ce510284aae75a07e33b3a0da284994e" + integrity sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + "@ipld/dag-pb@^4.0.0": version "4.0.6" resolved "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.0.6.tgz" @@ -814,6 +888,13 @@ dependencies: multiformats "^12.0.1" +"@ipld/dag-pb@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.0.tgz#4ebec92eeb9e8f317b8ef971221c6dac7b12b302" + integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== + dependencies: + multiformats "^13.1.0" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" @@ -898,7 +979,19 @@ multiformats "^12.1.3" uint8arraylist "^2.4.3" -"@libp2p/interfaces@^3.3.1": +"@libp2p/interface@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-1.1.4.tgz#21c7bbbe7628419d1e4902f0c953db1423b0f40f" + integrity sha512-gJXQycTF50tI02X/IlReAav4XoGPs3Yr917vNXsTUsZQRzQaPjbvKfXqA5hkLFpZ1lnxQ8wto/EVw4ca4XaL1A== + dependencies: + "@multiformats/multiaddr" "^12.1.14" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.1.0" + progress-events "^1.0.0" + uint8arraylist "^2.4.8" + +"@libp2p/interfaces@^3.3.1", "@libp2p/interfaces@^3.3.2": version "3.3.2" resolved "https://registry.npmjs.org/@libp2p/interfaces/-/interfaces-3.3.2.tgz" integrity sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g== @@ -925,6 +1018,17 @@ interface-datastore "^8.2.0" multiformats "^12.1.3" +"@libp2p/logger@^4.0.6", "@libp2p/logger@^4.0.7": + version "4.0.7" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-4.0.7.tgz#b5e82135f5c8a6f275c1b2e183333db956f3ed90" + integrity sha512-oyICns7G18S4eDhbFHUwZ7gLQnZTBVQtUMmMgEmrs8LnQu2GvXADxmQAPPkKtLNSCvRudg4hN3hP04Y+vNvlBQ== + dependencies: + "@libp2p/interface" "^1.1.4" + "@multiformats/multiaddr" "^12.1.14" + debug "^4.3.4" + interface-datastore "^8.2.11" + multiformats "^13.1.0" + "@multiformats/multiaddr@^12.1.0", "@multiformats/multiaddr@^12.1.10", "@multiformats/multiaddr@^12.1.5": version "12.1.11" resolved "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.11.tgz" @@ -938,6 +1042,19 @@ uint8-varint "^2.0.1" uint8arrays "^4.0.2" +"@multiformats/multiaddr@^12.1.14": + version "12.1.14" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.1.14.tgz#d021072667f4dfc566cdddcb45feee60fecc8cfd" + integrity sha512-1C0Mo73chzu7pTzTquuKs5vUtw70jhqg1i6pUNznGb0WV6RFa6vyB+D697Os5+cLx+DiItrAY6VzMtlGQsMzYg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@libp2p/interface" "^1.0.0" + dns-over-http-resolver "^3.0.2" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + "@multiformats/murmur3@^2.0.0", "@multiformats/murmur3@^2.1.2": version "2.1.7" resolved "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-2.1.7.tgz" @@ -946,6 +1063,14 @@ multiformats "^12.0.1" murmurhash3js-revisited "^3.0.0" +"@multiformats/murmur3@^2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.8.tgz#81c1c15b6391109f3febfca4b3205196615a04e9" + integrity sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA== + dependencies: + multiformats "^13.0.0" + murmurhash3js-revisited "^3.0.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -1524,6 +1649,11 @@ resolved "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz" integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + "@vascosantos/moving-average@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz" @@ -1592,6 +1722,11 @@ array-union@^2.1.0: resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" @@ -1646,19 +1781,19 @@ blockstore-core@^4.0.0: multiformats "^12.0.1" uint8arrays "^5.0.0" -blockstore-fs@1.1.8: - version "1.1.8" - resolved "https://registry.npmjs.org/blockstore-fs/-/blockstore-fs-1.1.8.tgz" - integrity sha512-1KD1+yEkxszZ3GWQdJbGgXAOs12LJC/Pit7JCPueJT/Pjt9GWtGZ4+8mgoaR3bjXVBgBIdhNlUxxw2NS787noA== +blockstore-fs@1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/blockstore-fs/-/blockstore-fs-1.1.10.tgz#0dc8119b0bc293e6df4e056356e33e85528c7a05" + integrity sha512-Dg0mbdma0OY4NEk78efcAAiG5ZrMcIVrM7s+0e2p4uavnvrcBT6vDj5ITfnRfid3idKHOoCYShGEi9ENNgJg1A== dependencies: blockstore-core "^4.0.0" - fast-write-atomic "^0.2.0" + fast-write-atomic "^0.2.1" interface-blockstore "^5.0.0" interface-store "^5.0.0" - it-glob "^2.0.1" - it-map "^3.0.1" - it-parallel-batch "^3.0.0" - multiformats "^12.0.1" + it-glob "^2.0.6" + it-map "^3.0.5" + it-parallel-batch "^3.0.4" + multiformats "^13.0.1" bluebird@^3.7.2: version "3.7.2" @@ -1771,6 +1906,13 @@ clean-jsdoc-theme@4.2.17: lodash "^4.17.21" showdown "^2.1.0" +color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" @@ -1778,11 +1920,40 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" @@ -1819,6 +1990,24 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +datastore-core@9.2.9: + version "9.2.9" + resolved "https://registry.yarnpkg.com/datastore-core/-/datastore-core-9.2.9.tgz#74b4dd53d4597b59038488ba5f92a7f81769f8df" + integrity sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-datastore "^8.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-sort "^3.0.4" + it-take "^3.0.4" + debug@^4.3.1, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" @@ -1846,6 +2035,14 @@ dns-over-http-resolver@3.0.0: debug "^4.3.4" receptacle "^1.3.2" +dns-over-http-resolver@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-3.0.2.tgz#71644cbab3c5a94f53e357da68771e0781ea3407" + integrity sha512-5batkHOjCkuAfrFa+IPmt3jyeZqLtSMfAo1HQp3hfwtzgUwHooecTFplnYC093u5oRNL4CQHCXh3OfER7+vWrA== + dependencies: + debug "^4.3.4" + receptacle "^1.3.2" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" @@ -1869,6 +2066,11 @@ emoji-regex@^9.2.2: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + entities@^4.4.0: version "4.5.0" resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" @@ -1954,9 +2156,9 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-write-atomic@^0.2.0: +fast-write-atomic@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz" + resolved "https://registry.yarnpkg.com/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz#7ee8ef0ce3c1f531043c09ae8e5143361ab17ede" integrity sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw== fast-xml-parser@4.2.5: @@ -1973,6 +2175,11 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" @@ -1980,6 +2187,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + follow-redirects@^1.15.0: version "1.15.3" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" @@ -2069,6 +2281,14 @@ hamt-sharding@^3.0.0, hamt-sharding@^3.0.2: sparse-array "^1.3.1" uint8arrays "^4.0.2" +hamt-sharding@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.6.tgz#3643107a3021af66ac95684aec87b196add5ba57" + integrity sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^5.0.1" + html-minifier-terser@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz" @@ -2110,6 +2330,14 @@ interface-blockstore@^5.0.0: interface-store "^5.0.0" multiformats "^12.0.1" +interface-blockstore@^5.2.10: + version "5.2.10" + resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-5.2.10.tgz#b01101dd70eda2ab713cc00a492921949934c861" + integrity sha512-9K48hTvBCGsKVD3pF4ILgDcf+W2P/gq0oxLcsHGB6E6W6nDutYkzR+7k7bCs9REHrBEfKzcVDEKieiuNM9WRZg== + dependencies: + interface-store "^5.0.0" + multiformats "^13.0.1" + interface-datastore@^8.0.0, interface-datastore@^8.2.0: version "8.2.9" resolved "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.9.tgz" @@ -2118,11 +2346,24 @@ interface-datastore@^8.0.0, interface-datastore@^8.2.0: interface-store "^5.0.0" uint8arrays "^5.0.0" +interface-datastore@^8.2.11: + version "8.2.11" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.2.11.tgz#1d555ce6218ab6cba6291fc361debe9713590207" + integrity sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA== + dependencies: + interface-store "^5.0.0" + uint8arrays "^5.0.2" + interface-store@^5.0.0, interface-store@^5.0.1, interface-store@^5.1.0: version "5.1.5" resolved "https://registry.npmjs.org/interface-store/-/interface-store-5.1.5.tgz" integrity sha512-X0KnJBk3o+YL13MxZBMwa88/b3Mdrpm0yPzkSTKDDVn9BSPH7UK6W+ZtIPO2bxKOQVmq7zqOwAnYnpfqWjb6/g== +interface-store@^5.1.8: + version "5.1.8" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-5.1.8.tgz#94bf867d165b5c904cccf09adeba215a5b0f459e" + integrity sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w== + ipfs-bitswap@^19.0.0: version "19.0.2" resolved "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-19.0.2.tgz" @@ -2175,6 +2416,29 @@ ipfs-unixfs-exporter@^13.1.0: progress-events "^1.0.0" uint8arrays "^4.0.2" +ipfs-unixfs-exporter@^13.5.0: + version "13.5.0" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-13.5.0.tgz#48fafb272489cc2bf05757c16f3f44fa241ee038" + integrity sha512-s1eWXzoyhQFNEAB1p+QE3adjhW+lBdgpORmmjiCLiruHs5z7T5zsAgRVcWpM8LWYhq2flRtJHObb7Hg73J+oLQ== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.1.7" + "@ipld/dag-pb" "^4.0.0" + "@multiformats/murmur3" "^2.0.0" + err-code "^3.0.1" + hamt-sharding "^3.0.0" + interface-blockstore "^5.0.0" + ipfs-unixfs "^11.0.0" + it-filter "^3.0.2" + it-last "^3.0.2" + it-map "^3.0.3" + it-parallel "^3.0.0" + it-pipe "^3.0.1" + it-pushable "^3.1.0" + multiformats "^13.0.0" + p-queue "^8.0.1" + progress-events "^1.0.0" + ipfs-unixfs-importer@^15.1.0: version "15.2.1" resolved "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-15.2.1.tgz" @@ -2197,6 +2461,28 @@ ipfs-unixfs-importer@^15.1.0: uint8arraylist "^2.4.3" uint8arrays "^4.0.2" +ipfs-unixfs-importer@^15.2.4: + version "15.2.4" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-15.2.4.tgz#3577b21132c95693cfa9122c9dc432a565e02218" + integrity sha512-3b7d/pLPwGvAEXvpJ0WyYlbn2pb2j7qY6FayuMSzbZNdFxdJ82l6VkJ9vK1d/G/AHx+0ZfB06eSdGKjX0GVCAg== + dependencies: + "@ipld/dag-pb" "^4.0.0" + "@multiformats/murmur3" "^2.0.0" + err-code "^3.0.1" + hamt-sharding "^3.0.0" + interface-blockstore "^5.0.0" + interface-store "^5.0.1" + ipfs-unixfs "^11.0.0" + it-all "^3.0.2" + it-batch "^3.0.2" + it-first "^3.0.2" + it-parallel-batch "^3.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + rabin-wasm "^0.1.4" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + ipfs-unixfs@^11.0.0: version "11.1.0" resolved "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-11.1.0.tgz" @@ -2206,6 +2492,20 @@ ipfs-unixfs@^11.0.0: protons-runtime "^5.0.0" uint8arraylist "^2.4.3" +ipfs-unixfs@^11.1.3: + version "11.1.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.1.3.tgz#b53f36d8d34022516d6cfead4305839712c1dab2" + integrity sha512-sy6Koojwm/EcM8yvDlycRYA89C8wIcLcGTMMpqnCPUtqTCdl+JxsuPNCBgAu7tmO8Nipm7Tv7f0g/erxTGKKRA== + dependencies: + err-code "^3.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" @@ -2250,7 +2550,7 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -it-all@^3.0.2: +it-all@^3.0.0, it-all@^3.0.2, it-all@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz" integrity sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ== @@ -2260,12 +2560,12 @@ it-batch@^3.0.0, it-batch@^3.0.2: resolved "https://registry.npmjs.org/it-batch/-/it-batch-3.0.4.tgz" integrity sha512-WRu2mqOYIs+T9k7+yxSK9VJdk0UE4R0jKQsWQcti5c6vhb1FhjC2+yCB5XBrctQ9edNfCMU/wVzdDj8qSwimbA== -it-drain@^3.0.1: +it-drain@^3.0.1, it-drain@^3.0.5: version "3.0.5" resolved "https://registry.npmjs.org/it-drain/-/it-drain-3.0.5.tgz" integrity sha512-qYFe4SWdvs9oJGUY5bSjvmiLUMLzFEODNOQUdYdCIkuIgQF+AUB2INhM4yQ09buJ2rhHKDFxvTD/+yUq6qg0XA== -it-filter@^3.0.0, it-filter@^3.0.2: +it-filter@^3.0.0, it-filter@^3.0.2, it-filter@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/it-filter/-/it-filter-3.0.4.tgz" integrity sha512-e0sz+st4sudK/zH6GZ/gRTRP8A/ADuJFCYDmRgMbZvR79y5+v4ZXav850bBZk5wL9zXaYZFxS1v/6Qi+Vjwh5g== @@ -2284,14 +2584,14 @@ it-foreach@^2.0.2: dependencies: it-peekable "^3.0.0" -it-glob@^2.0.1, it-glob@^2.0.4: +it-glob@^2.0.4, it-glob@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/it-glob/-/it-glob-2.0.6.tgz" integrity sha512-4C6ccz4nhqrq7yZMzBr3MsKhyL+rlnLXIPceyGG6ogl3Lx3eeWMv1RtlySJwFi6q+jVcPyTpeYt/xftwI2JEQQ== dependencies: minimatch "^9.0.0" -it-last@^3.0.1, it-last@^3.0.2: +it-last@^3.0.1, it-last@^3.0.2, it-last@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/it-last/-/it-last-3.0.4.tgz" integrity sha512-Ns+KTsQWhs0KCvfv5X3Ck3lpoYxHcp4zUp4d+AOdmC8cXXqDuoZqAjfWhgCbxJubXyIYWdfE2nRcfWqgvZHP8Q== @@ -2308,21 +2608,21 @@ it-length-prefixed@^9.0.0: uint8arraylist "^2.0.0" uint8arrays "^4.0.2" -it-map@^3.0.1, it-map@^3.0.2, it-map@^3.0.3: +it-map@^3.0.2, it-map@^3.0.3, it-map@^3.0.5: version "3.0.5" resolved "https://registry.npmjs.org/it-map/-/it-map-3.0.5.tgz" integrity sha512-hB0TDXo/h4KSJJDSRLgAPmDroiXP6Fx1ck4Bzl3US9hHfZweTKsuiP0y4gXuTMcJlS6vj0bb+f70rhkD47ZA3w== dependencies: it-peekable "^3.0.0" -it-merge@^3.0.0, it-merge@^3.0.1: +it-merge@^3.0.0, it-merge@^3.0.1, it-merge@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz" integrity sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA== dependencies: it-pushable "^3.2.0" -it-parallel-batch@^3.0.0, it-parallel-batch@^3.0.1: +it-parallel-batch@^3.0.1, it-parallel-batch@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-3.0.4.tgz" integrity sha512-O1omh8ss8+UtXiMjE+8kM5C20DT0Ma4VtKVfrSHOJU0UHZ+iWBXarabzPYEp+WiuQmrv+klDPPlTZ9KaLN9xOA== @@ -2350,7 +2650,7 @@ it-pipe@^3.0.1: it-pushable "^3.1.2" it-stream-types "^2.0.1" -it-pushable@^3.0.0, it-pushable@^3.1.0, it-pushable@^3.1.2, it-pushable@^3.2.0, it-pushable@^3.2.1: +it-pushable@^3.0.0, it-pushable@^3.1.0, it-pushable@^3.1.2, it-pushable@^3.2.0, it-pushable@^3.2.1, it-pushable@^3.2.3: version "3.2.3" resolved "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz" integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== @@ -2365,12 +2665,19 @@ it-reader@^6.0.1: it-stream-types "^2.0.1" uint8arraylist "^2.0.0" +it-sort@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/it-sort/-/it-sort-3.0.4.tgz#250152bf4abf3fa9572954305424bafb3199fa63" + integrity sha512-tvnC93JZZWjX4UxALy0asow0dzXabkoaRbrPJKClTKhNCqw4gzHr+H5axf1gohcthedRRkqd/ae+wl7WqoxFhw== + dependencies: + it-all "^3.0.0" + it-stream-types@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz" integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== -it-take@^3.0.1: +it-take@^3.0.1, it-take@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/it-take/-/it-take-3.0.4.tgz" integrity sha512-RG8HDjAZlvkzz5Nav4xq6gK5zNT+Ff1UTIf+CrSJW8nIl6N1FpBH5e7clUshiCn+MmmMoSdIEpw4UaTolszxhA== @@ -2445,6 +2752,11 @@ klaw@^3.0.0: dependencies: graceful-fs "^4.1.9" +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + lilconfig@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz" @@ -2477,6 +2789,18 @@ lodash@^4.17.15, lodash@^4.17.21: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +logform@^2.3.2, logform@^2.4.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" + integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" @@ -2594,6 +2918,11 @@ multiformats@^13.0.0: resolved "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz" integrity sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA== +multiformats@^13.0.1, multiformats@^13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.0.tgz#5aa9d2175108a448fc3bdb54ba8a3d0b6cab3ac3" + integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== + murmurhash3js-revisited@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz" @@ -2640,6 +2969,13 @@ object-assign@^4.0.1: resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" @@ -2652,6 +2988,14 @@ p-defer@^4.0.0: resolved "https://registry.npmjs.org/p-defer/-/p-defer-4.0.0.tgz" integrity sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ== +p-queue@8.0.1, p-queue@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-8.0.1.tgz#718b7f83836922ef213ddec263ff4223ce70bef8" + integrity sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^6.1.2" + p-queue@^7.3.0, p-queue@^7.3.4: version "7.4.1" resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz" @@ -2665,6 +3009,11 @@ p-timeout@^5.0.2: resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz" integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== +p-timeout@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.2.tgz#22b8d8a78abf5e103030211c5fc6dee1166a6aa5" + integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" @@ -2851,6 +3200,11 @@ safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -2880,6 +3234,13 @@ signal-exit@^4.0.1: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -2910,6 +3271,11 @@ sparse-array@^1.3.1, sparse-array@^1.3.2: resolved "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz" integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + stream-browserify@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" @@ -2919,6 +3285,7 @@ stream-browserify@3.0.0: readable-stream "^3.5.0" "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + name string-width-cjs version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2944,6 +3311,7 @@ string_decoder@^1.1.1: safe-buffer "~5.2.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + name strip-ansi-cjs version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -2995,6 +3363,11 @@ terser@^5.15.1: commander "^2.20.0" source-map-support "~0.5.20" +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" @@ -3040,6 +3413,11 @@ tree-kill@^1.2.2: resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" @@ -3100,6 +3478,13 @@ uint8arraylist@^2.0.0, uint8arraylist@^2.4.3: dependencies: uint8arrays "^4.0.2" +uint8arraylist@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + uint8arrays@^4.0.2, uint8arrays@^4.0.6: version "4.0.10" resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz" @@ -3114,6 +3499,13 @@ uint8arrays@^5.0.0: dependencies: multiformats "^12.0.1" +uint8arrays@^5.0.1, uint8arrays@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.0.2.tgz#f05479bcd521d37c2e7710b24132a460b0ac80e3" + integrity sha512-S0GaeR+orZt7LaqzTRs4ZP8QqzAauJ+0d4xvP2lJTA99jIkKsE2FgDs4tGF/K/z5O9I/2W5Yvrh7IuqNeYH+0Q== + dependencies: + multiformats "^13.0.0" + underscore@~1.13.2: version "1.13.6" resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz" @@ -3190,6 +3582,32 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +winston-transport@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" + integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== + dependencies: + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" + +winston@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.12.0.tgz#a5d965a41d3dc31be5408f8c66e927958846c0d0" + integrity sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w== + dependencies: + "@colors/colors" "^1.6.0" + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.4.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.7.0" + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"