diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index f06235c..0000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist diff --git a/eslint-base-node.json b/eslint-base-node.json deleted file mode 100644 index b28d523..0000000 --- a/eslint-base-node.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": [ - "./eslint-base.json", - "plugin:node/recommended" - ], - - "plugins": [ - "node" - ], - - "rules": { - "node/no-missing-import": "off", - "node/no-unsupported-features/es-syntax": "off", - "node/no-extraneous-import": ["error", { - "allowModules": ["@iwsio/json-csv-core", "@iwsio/json-csv-node"] - }] - } -} \ No newline at end of file diff --git a/eslint-base.json b/eslint-base.json deleted file mode 100644 index db821a8..0000000 --- a/eslint-base.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "extends": [ - "eslint:recommended", - "plugin:import/recommended", - "plugin:promise/recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended" - ], - - "parser": "@typescript-eslint/parser", - - "env": { - "es2022": true - }, - - "plugins": [ - "import", - "promise", - "@typescript-eslint" - ], - - "globals": { - "document": "readonly", - "navigator": "readonly", - "window": "readonly", - "fetch": "readonly", - "google": "readonly", - "vi": "readonly" - }, - - "settings": { - "import/resolver": { - "typescript": true, - "node": true - } - }, - - "overrides": [ - { - "files": ["*.test.ts", "*.test.tsx", "*.test.mts","*.spec.ts", "*.spec.tsx"], - "rules": { - "no-unused-expressions": "off" - }, - "globals": { - "describe":"readonly", - "expect":"readonly", - "test":"readonly", - "it":"readonly", - "vi":"readonly" - } - }, - { - "files": ["*.d.ts"], - "rules": { - "@typescript-eslint/no-unused-vars": "off", - "no-unused-vars": "off" - } - } - ], - - "rules": { - "no-var": "warn", - - "accessor-pairs": ["error", { "setWithoutGet": true, "enforceForClassMembers": true }], - "array-bracket-spacing": ["error", "never"], - "array-callback-return": ["error", { - "allowImplicit": false, - "checkForEach": false - }], - "arrow-spacing": ["error", { "before": true, "after": true }], - "block-spacing": ["error", "always"], - "brace-style": ["error", "1tbs", { "allowSingleLine": true }], - "camelcase": ["error", { - "allow": ["^UNSAFE_"], - "properties": "never", - "ignoreGlobals": true - }], - "comma-dangle": ["error", { - "arrays": "never", - "objects": "never", - "imports": "never", - "exports": "never", - "functions": "never" - }], - "comma-spacing": ["error", { "before": false, "after": true }], - "comma-style": ["error", "last"], - "computed-property-spacing": ["error", "never", { "enforceForClassMembers": true }], - "constructor-super": "error", - "curly": ["error", "multi-line"], - "default-case-last": "error", - "dot-location": ["error", "property"], - "dot-notation": ["error", { "allowKeywords": true }], - "eol-last": "error", - "eqeqeq": ["error", "always", { "null": "ignore" }], - "func-call-spacing": ["error", "never"], - "generator-star-spacing": ["error", { "before": true, "after": true }], - "indent": ["error", "tab", { - "SwitchCase": 1, - "VariableDeclarator": 1, - "outerIIFEBody": 1, - "MemberExpression": 1, - "FunctionDeclaration": { "parameters": 1, "body": 1 }, - "FunctionExpression": { "parameters": 1, "body": 1 }, - "CallExpression": { "arguments": 1 }, - "ArrayExpression": 1, - "ObjectExpression": 1, - "ImportDeclaration": 1, - "flatTernaryExpressions": false, - "ignoreComments": false, - "ignoredNodes": ["TemplateLiteral *", "JSXElement", "JSXElement > *", "JSXAttribute", "JSXIdentifier", "JSXNamespacedName", "JSXMemberExpression", "JSXSpreadAttribute", "JSXExpressionContainer", "JSXOpeningElement", "JSXClosingElement", "JSXFragment", "JSXOpeningFragment", "JSXClosingFragment", "JSXText", "JSXEmptyExpression", "JSXSpreadChild"], - "offsetTernaryExpressions": true - }], - "key-spacing": ["error", { "beforeColon": false, "afterColon": true }], - "keyword-spacing": ["error", { "before": true, "after": true }], - "lines-between-class-members": ["error", "always", { "exceptAfterSingleLine": true }], - "multiline-ternary": ["error", "always-multiline"], - "new-cap": ["error", { "newIsCap": true, "capIsNew": false, "properties": true }], - "new-parens": "error", - "no-array-constructor": "error", - "no-async-promise-executor": "error", - "no-caller": "error", - "no-case-declarations": "error", - "no-class-assign": "error", - "no-compare-neg-zero": "error", - "no-cond-assign": "error", - "no-const-assign": "error", - "no-constant-condition": ["error", { "checkLoops": false }], - "no-control-regex": "error", - "no-debugger": "error", - "no-delete-var": "error", - "no-dupe-args": "error", - "no-dupe-class-members": "error", - "no-dupe-keys": "error", - "no-duplicate-case": "error", - "no-useless-backreference": "error", - "no-empty": ["error", { "allowEmptyCatch": true }], - "no-empty-character-class": "error", - "no-empty-pattern": "error", - "no-eval": "error", - "no-ex-assign": "error", - "no-extend-native": "error", - "no-extra-bind": "error", - "no-extra-boolean-cast": "error", - "no-extra-parens": ["error", "functions"], - "no-fallthrough": "error", - "no-floating-decimal": "error", - "no-func-assign": "error", - "no-global-assign": "error", - "no-implied-eval": "error", - "no-import-assign": "error", - "no-invalid-regexp": "error", - "no-irregular-whitespace": "error", - "no-iterator": "error", - "no-labels": ["error", { "allowLoop": false, "allowSwitch": false }], - "no-lone-blocks": "error", - "no-loss-of-precision": "error", - "no-misleading-character-class": "error", - "no-prototype-builtins": "error", - "no-useless-catch": "error", - "no-mixed-operators": ["error", { - "groups": [ - ["==", "!=", "===", "!==", ">", ">=", "<", "<="], - ["&&", "||"], - ["in", "instanceof"] - ], - "allowSamePrecedence": true - }], - "no-mixed-spaces-and-tabs": "error", - "no-multi-spaces": "error", - "no-multi-str": "error", - "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0 }], - "no-new": "error", - "no-new-func": "error", - "no-new-object": "error", - "no-new-symbol": "error", - "no-new-wrappers": "error", - "no-obj-calls": "error", - "no-octal": "error", - "no-octal-escape": "error", - "no-proto": "error", - "no-redeclare": ["error", { "builtinGlobals": false }], - "no-regex-spaces": "error", - "no-return-assign": ["error", "except-parens"], - "no-self-assign": ["error", { "props": true }], - "no-self-compare": "error", - "no-sequences": "error", - "no-shadow-restricted-names": "error", - "no-sparse-arrays": "error", - "no-tabs": ["error", {"allowIndentationTabs": true}], - "no-template-curly-in-string": "error", - "no-this-before-super": "error", - "no-throw-literal": "error", - "no-trailing-spaces": "error", - "no-undef": "off", - "no-undef-init": "off", - "no-unexpected-multiline": "error", - "no-unmodified-loop-condition": "error", - "no-unneeded-ternary": ["error", { "defaultAssignment": false }], - "no-unreachable": "error", - "no-unreachable-loop": "error", - "no-unsafe-finally": "error", - "no-unsafe-negation": "error", - "no-unused-expressions": ["error", { - "allowShortCircuit": true, - "allowTernary": true, - "allowTaggedTemplates": true - }], - "no-unused-vars": ["error", { - "args": "none", - "caughtErrors": "none", - "ignoreRestSiblings": true, - "vars": "all", - "varsIgnorePattern": "^React$" - }], - "no-use-before-define": ["error", { "functions": false, "classes": false, "variables": false }], - "no-useless-call": "error", - "no-useless-computed-key": "error", - "no-useless-constructor": "error", - "no-useless-escape": "error", - "no-useless-rename": "error", - "no-useless-return": "error", - "no-void": "error", - "no-whitespace-before-property": "error", - "no-with": "error", - "object-curly-newline": ["error", { "multiline": true, "consistent": true }], - "object-curly-spacing": ["error", "always"], - "object-property-newline": ["error", { "allowMultiplePropertiesPerLine": true }], - "one-var": ["error", { "initialized": "never" }], - "operator-linebreak": ["error", "after", { "overrides": { "?": "before", ":": "before", "|>": "before" } }], - "padded-blocks": ["error", { "blocks": "never", "switches": "never", "classes": "never" }], - "prefer-const": ["error", {"destructuring": "all"}], - "prefer-promise-reject-errors": "error", - "prefer-regex-literals": ["error", { "disallowRedundantWrapping": true }], - "quote-props": ["error", "as-needed"], - "quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }], - "rest-spread-spacing": ["error", "never"], - "semi": ["error", "never"], - "semi-spacing": ["error", { "before": false, "after": true }], - "space-before-blocks": ["error", "always"], - "space-before-function-paren": ["error", { - "anonymous": "never", - "named": "never", - "asyncArrow": "always" - }], - "space-in-parens": ["error", "never"], - "space-infix-ops": "error", - "space-unary-ops": ["error", { "words": true, "nonwords": false }], - "spaced-comment": ["error", "always", { - "line": { "markers": ["*package", "!", "/", ",", "="] }, - "block": { "balanced": true, "markers": ["*package", "!", ",", ":", "::", "flow-include"], "exceptions": ["*"] } - }], - "symbol-description": "error", - "template-curly-spacing": ["error", "never"], - "template-tag-spacing": ["error", "never"], - "unicode-bom": ["error", "never"], - "use-isnan": ["error", { - "enforceForSwitchCase": true, - "enforceForIndexOf": true - }], - "valid-typeof": ["error", { "requireStringLiterals": true }], - "wrap-iife": ["error", "any", { "functionPrototypeMethods": true }], - "yield-star-spacing": ["error", "both"], - "yoda": ["error", "never"], - - "import/export": "error", - "import/first": "error", - "import/no-absolute-path": ["error", { "esmodule": true, "commonjs": true, "amd": false }], - "import/no-duplicates": "error", - "import/no-named-default": "error", - "import/no-webpack-loader-syntax": "error", - - "promise/param-names": "error", - "promise/always-return": "off", - "promise/catch-or-return": "off", - - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unused-vars": ["error", { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_", - "ignoreRestSiblings": true - }] - } -} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..b75ab9b --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,137 @@ +import eslint from '@eslint/js' +import tseslint from 'typescript-eslint' +import promisePlugin from 'eslint-plugin-promise' +import stylistic from '@stylistic/eslint-plugin' +import nodePlugin from 'eslint-plugin-n' +import globals from 'globals' + +/** + * Packages within the monorepo (that can be imported) + */ +const monoRepoPackages = [ + '@iwsio/json-csv-core', + '@iwsio/json-csv-node' +] + +/** + * These project paths are node specific projects and require the package + * names above to be included in the n/no-extraneous-import rule. + */ +const monoRepoNodeProjects = [ + 'packages/json-csv-core', + 'packages/json-csv-node' +] + +/** + * And here's the actual configuration. + */ +export default [ + ...tseslint.config( + + // global ignores have a single prop `ignores` + { + ignores: ['**/node_modules/*', '**/dist/'] // global ignore with single ignore key + }, + + // applies to all files: Core ES Rules + eslint.configs.recommended, + + // applies to all files: Core TS Rules + ...tseslint.configs.recommended, + + /** + * Stylistic rules factory. This generates styling rules with a few options. + * For details, see: https://eslint.style/guide/config-presets#configuration-factory + * For options, see: https://github.com/eslint-stylistic/eslint-stylistic/blob/main/packages/eslint-plugin/configs/customize.ts + **/ + stylistic.configs.customize({ + braceStyle: '1tbs', + commaDangle: 'never', + indent: 'tab', + jsx: true, + quotes: 'single', + semi: false + }), + /** + * Applies to all files: Additional plugins like: promise, stylistic, and react + */ + { + plugins: { + promise: promisePlugin + }, + languageOptions: { + ecmaVersion: 2023, // Targeted ES + + /** + * Global variables to consider; we're just including all browser, node, + * and es2023 ones. (like window, document, process, etc) + */ + globals: { + ...globals.browser, + ...globals.node, + ...globals.es2023, + ...{ + describe: false, + it: false, + before: false, + after: false, + beforeEach: false, + afterEach: false, + test: false, + expect: false, + should: false + } + } + }, + + /** + * Rules configuration; we start with the recommended and then follow with overrides. + */ + rules: { + ...promisePlugin.configs.recommended.rules, + + // Overrides and additions + 'promise/always-return': ['error', { ignoreLastCallback: true }], + + // enable underscore ignore pattern for unused vars + '@typescript-eslint/no-unused-vars': ['error', { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_' + }], + + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off' + } + }, + + { + files: ['**/*.(test|spec).(mj|j|t|cj|ct|mt)s', '**/test-runner/**/*', '**/test-runner-core/**/*'], + rules: { + '@stylistic/max-statements-per-line': ['error', { max: 2 }], + '@typescript-eslint/no-var-requires': 'off' + } + }, + + // applies to only Node project files referenced above. + { + // Node rules + files: monoRepoNodeProjects.map(path => `${path}/**/*`), + + plugins: { + n: nodePlugin + }, + + rules: { + ...nodePlugin.configs['flat/recommended'].rules, + + 'n/no-unsupported-features/es-syntax': 'off', // We're mixing ESM and CJS with controls around the Node 10 runtime. + + 'n/no-extraneous-import': ['error', { + allowModules: [...monoRepoPackages] + }] + } + } + ) +] diff --git a/npm-version-helper.cjs b/npm-version-helper.cjs index bcb9cb8..fc05281 100644 --- a/npm-version-helper.cjs +++ b/npm-version-helper.cjs @@ -9,4 +9,4 @@ function gatherVerisonAndEmit(node, script, arg0) { process.stdout.write(projVersion, 'utf8') } -gatherVerisonAndEmit(...process.argv) \ No newline at end of file +gatherVerisonAndEmit(...process.argv) diff --git a/package-lock.json b/package-lock.json index 18457b9..35996f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,18 @@ "packages/json-csv-core", "samples" ], + "devDependencies": { + "@eslint/js": "^9.8.0", + "@stylistic/eslint-plugin": "^2.4.0", + "eslint": "^8.57.0", + "eslint-plugin-n": "^17.10.1", + "eslint-plugin-promise": "^6.6.0", + "eslint-plugin-react": "^7.35.0", + "globals": "^15.8.0", + "i": "^0.3.7", + "npm": "^10.8.2", + "typescript-eslint": "^7.18.0" + }, "engines": { "node": ">=22" } @@ -34,10 +46,22 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -76,6 +100,50 @@ "concat-map": "0.0.1" } }, + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -89,18 +157,19 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", + "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", @@ -150,6 +219,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@isaacs/cliui": { @@ -181,41 +251,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -231,23 +266,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@iwsio/json-csv-core": { "resolved": "packages/json-csv-core", "link": true @@ -313,55 +331,142 @@ "node": ">=14" } }, + "node_modules/@stylistic/eslint-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.4.0.tgz", + "integrity": "sha512-GJ86m60wpKPm0m8sSuApOITjCvKUbyzhVO/BTQb7BNYXVUJMS3ql+uAro0V+4yoHwyBVXTB4EDy3UGkOqtEyyw==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "2.4.0", + "@stylistic/eslint-plugin-jsx": "2.4.0", + "@stylistic/eslint-plugin-plus": "2.4.0", + "@stylistic/eslint-plugin-ts": "2.4.0", + "@types/eslint": "^9.6.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.4.0.tgz", + "integrity": "sha512-ScIYDFAwNz+ELr3KfAZMuYMCUq7Q6TdEEIq4RBRR77EHucpDrwi5Kx2d0VdYxb4s4o6nOtSkJmY9MCZupDYJow==", + "dev": true, + "dependencies": { + "@types/eslint": "^9.6.0", + "acorn": "^8.12.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.4.0.tgz", + "integrity": "sha512-yaZXaRj9lOwrQd1YA1d1Ssz58IrDKDYTvLzlKcKED4NlpjDdMbj//Y4DlNhlW9M9v0ZsRsmKNQl2p5OWFfmdEw==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "^2.4.0", + "@types/eslint": "^9.6.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-plus": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.4.0.tgz", + "integrity": "sha512-yqVZ2ps3lSzT3Atcx/jSbzTaRJfxtWeuPk1WvINUod1fRVxNlgKLDwiM+63Hq3Q7H4aM0lS5ccAbFlEGINNg0Q==", + "dev": true, + "dependencies": { + "@types/eslint": "^9.6.0", + "@typescript-eslint/utils": "^7.17.0" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.4.0.tgz", + "integrity": "sha512-0zi3hHrrqaXPGZESTfPNUm4YMvxq+aqPGCUiZfEnn7l5VNC19oKaPonZ6LmKzoksebzpJ7w6nieZLVeQm4o7tg==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "2.4.0", + "@types/eslint": "^9.6.0", + "@typescript-eslint/utils": "^7.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, "node_modules/@types/chai": { "version": "4.3.16", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", "dev": true }, + "node_modules/@types/eslint": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, "node_modules/@types/node": { - "version": "20.12.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", - "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.0.tgz", + "integrity": "sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.11.1" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", - "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/type-utils": "7.8.0", - "@typescript-eslint/utils": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { @@ -382,15 +487,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", - "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "engines": { @@ -410,13 +515,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -427,13 +532,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", - "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -454,9 +559,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -467,13 +572,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -495,18 +600,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", - "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "semver": "^7.6.0" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -520,12 +622,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/types": "7.18.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -536,6 +638,18 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -548,9 +662,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -626,6 +740,17 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -676,10 +801,10 @@ "node": ">=8" } }, - "node_modules/array.prototype.findlastindex": { + "node_modules/array.prototype.findlast": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, "dependencies": { "call-bind": "^1.0.7", @@ -732,6 +857,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", @@ -803,11 +944,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -858,9 +999,9 @@ } }, "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -868,7 +1009,7 @@ "get-func-name": "^2.0.2", "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -947,6 +1088,40 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/coffeescript": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.7.0.tgz", @@ -1046,9 +1221,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1074,9 +1249,9 @@ } }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dependencies": { "type-detect": "^4.0.0" }, @@ -1163,14 +1338,15 @@ "dev": true }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/enhanced-resolve": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", - "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -1270,23 +1446,48 @@ "node": ">= 0.4" } }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -1396,128 +1597,115 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" + "eslint": ">=8" } }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "node_modules/eslint-plugin-n": { + "version": "17.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.1.tgz", + "integrity": "sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==", "dev": true, "dependencies": { - "debug": "^3.2.7" + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.17.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.8.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.5", + "semver": "^7.5.3" }, "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" } }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "node_modules/eslint-plugin-promise": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", + "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, "engines": { - "node": ">=8.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": ">=4.19.1" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "node_modules/eslint-plugin-react": { + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", @@ -1527,16 +1715,7 @@ "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { + "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", @@ -1548,58 +1727,7 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-node/node_modules/minimatch": { + "node_modules/eslint-plugin-react/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", @@ -1611,7 +1739,7 @@ "node": "*" } }, - "node_modules/eslint-plugin-node/node_modules/semver": { + "node_modules/eslint-plugin-react/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -1620,18 +1748,6 @@ "semver": "bin/semver.js" } }, - "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -1648,31 +1764,38 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint-visitor-keys": { + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", @@ -1684,14 +1807,36 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/eslint/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/minimatch": { @@ -1707,26 +1852,26 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -1833,9 +1978,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1880,21 +2025,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/flatted": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", @@ -1911,9 +2041,9 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -2033,9 +2163,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", - "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -2045,14 +2175,16 @@ } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -2079,6 +2211,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2088,6 +2221,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2096,15 +2230,12 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", + "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2272,6 +2403,15 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "node_modules/i": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -2310,6 +2450,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2356,6 +2497,21 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -2408,12 +2564,15 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2457,6 +2616,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -2465,16 +2636,43 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-negative-zero": { "version": "2.0.3", @@ -2544,6 +2742,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", @@ -2615,6 +2825,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -2627,6 +2849,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -2638,17 +2876,27 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -2656,6 +2904,12 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2691,16 +2945,19 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=4.0" } }, "node_modules/keyv": { @@ -2775,6 +3032,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -2784,13 +3053,10 @@ } }, "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/memorystream": { "version": "0.3.1", @@ -2811,22 +3077,34 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -2838,19 +3116,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -2928,6 +3197,37 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/mocha/node_modules/minimatch": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", @@ -2999,6 +3299,23 @@ "validate-npm-package-license": "^3.0.1" } }, + "node_modules/normalize-package-data/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -3016,6 +3333,166 @@ "node": ">=0.10.0" } }, + "node_modules/npm": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.2.tgz", + "integrity": "sha512-x/AIjFIKRllrhcb48dqUNAAZl0ig9+qMuN91RpZo3Cb2+zuibfh+KISl6+kVVyktDz230JKc208UkQwwMqyB+w==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/redact", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.5.4", + "@npmcli/config": "^8.3.4", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.2.0", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.1", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.4", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.3", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.4.2", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.3", + "init-package-json": "^6.0.3", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.4", + "libnpmexec": "^8.1.3", + "libnpmfund": "^5.0.12", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.4", + "libnpmpublish": "^9.0.9", + "libnpmsearch": "^7.0.6", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.3", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.5", + "minipass": "^7.1.1", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.1.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.2", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.1.0", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.1.0", + "npm-user-validate": "^2.0.1", + "p-map": "^4.0.0", + "pacote": "^18.0.6", + "parse-conflict-json": "^3.0.1", + "proc-log": "^4.2.0", + "qrcode-terminal": "^0.12.0", + "read": "^3.0.1", + "semver": "^7.6.2", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.1", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -3201,103 +3678,2514 @@ "which": "bin/which" } }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": ">= 0.4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.5.4", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.1.1", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", + "parse-conflict-json": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.6", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "arborist": "bin/index.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.3.4", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "wrappy": "1" + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.8", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "18.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.4.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "4.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^4.1.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "3.4.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "8.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.12", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.9", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.6" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "10.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "10.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "17.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/npm/node_modules/pacote": { + "version": "18.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.11.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "2.3.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.18", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/which": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { "deep-is": "^0.1.3", @@ -3339,6 +6227,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3396,16 +6290,16 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.0.tgz", - "integrity": "sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3429,11 +6323,12 @@ } }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -3478,6 +6373,17 @@ "node": ">= 0.8.0" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3515,6 +6421,12 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -3552,16 +6464,30 @@ "node": ">=8.10.0" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" }, "engines": { "node": ">= 0.4" @@ -3570,16 +6496,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/require-directory": { @@ -3591,9 +6523,9 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -3636,40 +6568,16 @@ } }, "node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.14", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.14.tgz", - "integrity": "sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "glob": "^7.1.3" }, "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3753,9 +6661,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3948,22 +6856,26 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -3981,6 +6893,65 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.padend": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", @@ -3999,6 +6970,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -4153,18 +7134,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4178,9 +7147,9 @@ } }, "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "engines": { "node": ">=4" } @@ -4271,9 +7240,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4283,6 +7252,32 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.18.0.tgz", + "integrity": "sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "7.18.0", + "@typescript-eslint/parser": "7.18.0", + "@typescript-eslint/utils": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -4299,9 +7294,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", "dev": true }, "node_modules/uri-js": { @@ -4353,6 +7348,50 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", @@ -4387,16 +7426,17 @@ "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==" }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -4420,6 +7460,65 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4472,6 +7571,24 @@ "node": ">=10" } }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -4489,58 +7606,113 @@ "license": "BSD-3-Clause", "devDependencies": { "@types/chai": "^4.3.16", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", "npm-run-all": "^4.1.5", - "rimraf": "^5.0.5", - "typescript": "^5.4.5" + "rimraf": "^5.0.9", + "typescript": "^5.5.4" }, "engines": { "node": ">=10" } }, + "packages/json-csv-core/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/json-csv-core/node_modules/rimraf": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", + "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "14 >=14.20 || 16 >=16.20 || >=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "packages/json-csv-node": { "name": "@iwsio/json-csv-node", "version": "6.1.5", "license": "BSD-3-Clause", "dependencies": { - "@iwsio/json-csv-core": "^1" + "@iwsio/json-csv-core": "^1.1.5" }, "devDependencies": { - "@types/node": "^20.12.11", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "debug": "^4.3.4", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "@types/node": "^22.0.0", + "debug": "^4.3.6", "npm-run-all": "^4.1.5", - "rimraf": "^5.0.5", - "typescript": "^5.4.5" + "rimraf": "^5.0.9", + "typescript": "^5.5.4" }, "engines": { "node": ">=10.17" } }, + "packages/json-csv-node/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/json-csv-node/node_modules/rimraf": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", + "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "14 >=14.20 || 16 >=16.20 || >=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "samples": { "name": "@iwsio/json-csv-node-samples", "version": "6.1.0-alpha.1", "license": "ISC", "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", "npm-run-all": "^4.1.5" } }, @@ -4549,19 +7721,10 @@ "version": "6.1.0-alpha.1", "license": "ISC", "dependencies": { - "chai": "^4.4.1", + "chai": "^4.5.0", "coffeescript": "^2.7.0", "mocha": "^9.2.2", "should": "^13.2.3" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1" } }, "test-runner-core": { @@ -4569,18 +7732,9 @@ "version": "6.1.0-alpha.1", "license": "ISC", "dependencies": { - "chai": "^4.4.1", + "chai": "^4.5.0", "mocha": "^9.2.2" }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1" - }, "engines": { "node": ">=10" } diff --git a/package.json b/package.json index c5038af..5faa11b 100644 --- a/package.json +++ b/package.json @@ -24,5 +24,17 @@ "packages/json-csv-node", "packages/json-csv-core", "samples" - ] + ], + "devDependencies": { + "@eslint/js": "^9.8.0", + "@stylistic/eslint-plugin": "^2.4.0", + "eslint": "^8.57.0", + "eslint-plugin-n": "^17.10.1", + "eslint-plugin-promise": "^6.6.0", + "eslint-plugin-react": "^7.35.0", + "globals": "^15.8.0", + "i": "^0.3.7", + "npm": "^10.8.2", + "typescript-eslint": "^7.18.0" + } } diff --git a/packages/json-csv-core/.eslintrc.json b/packages/json-csv-core/.eslintrc.json deleted file mode 100644 index 4da8d65..0000000 --- a/packages/json-csv-core/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["../../eslint-base.json"] -} \ No newline at end of file diff --git a/packages/json-csv-core/package.json b/packages/json-csv-core/package.json index 226e343..60011c6 100644 --- a/packages/json-csv-core/package.json +++ b/packages/json-csv-core/package.json @@ -27,7 +27,8 @@ "./*": "./dist/*.js" }, "scripts": { - "lint": "eslint src" + "lint": "eslint src", + "clean": "rimraf dist" }, "repository": { "type": "git", @@ -41,15 +42,8 @@ "homepage": "https://github.com/iwsllc/json-csv/blob/main/packages/json-csv-core/README.md", "devDependencies": { "@types/chai": "^4.3.16", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", "npm-run-all": "^4.1.5", - "rimraf": "^5.0.5", - "typescript": "^5.4.5" + "rimraf": "^5.0.9", + "typescript": "^5.5.4" } } diff --git a/packages/json-csv-core/src/exporter.ts b/packages/json-csv-core/src/exporter.ts index 0bcd632..8b23736 100644 --- a/packages/json-csv-core/src/exporter.ts +++ b/packages/json-csv-core/src/exporter.ts @@ -1,4 +1,4 @@ -import { ExportOptions, FieldList } from './types' +import { ExportOptions, FieldList } from './types.js' export function checkOptions(opts?: Partial) { const options: Partial = opts == null ? {} : { ...opts } @@ -17,7 +17,7 @@ export function buffered(data: Record[], opts: Partial { + data.forEach((dataItem) => { if (!writtenHeader && !ignoreHeader) { writtenHeader = true const header = getHeaderRow(fields, options.fieldSeparator) @@ -35,7 +35,7 @@ export function prepValue(text: string, forceQuoted: boolean, fieldSeparator: st if (text == null) text = '' const quoted = forceQuoted || text.indexOf('"') >= 0 || text.indexOf(fieldSeparator) >= 0 || text.indexOf('\n') >= 0 let result = text.replace(/"/g, '""') - if (quoted) { result = '"' + result + '"' } + if (quoted) result = `"${result}"` return result } @@ -71,7 +71,7 @@ export function getBodyRow(data: Record | undefined | null, fields: val = '' const fields = field.name.split('||') // for each alternative - fields.forEach(field => { + fields.forEach((field) => { // get value and associate const fieldVal = getValue(data, field) // remove whitespaces and check if non null before assign diff --git a/packages/json-csv-core/src/index.ts b/packages/json-csv-core/src/index.ts index 3a04ec1..e2e4de6 100644 --- a/packages/json-csv-core/src/index.ts +++ b/packages/json-csv-core/src/index.ts @@ -1,5 +1,5 @@ -import { buffered } from './exporter' -export * as exporter from './exporter' +import { buffered } from './exporter.js' +export * as exporter from './exporter.js' export { buffered, buffered as toCsv } diff --git a/packages/json-csv-core/src/types.ts b/packages/json-csv-core/src/types.ts index d49afea..d677040 100644 --- a/packages/json-csv-core/src/types.ts +++ b/packages/json-csv-core/src/types.ts @@ -1,14 +1,13 @@ - export type Field = { - name: string; - label?: string; - transform?: (source: any) => string; + name: string + label?: string + transform?: (source: any) => string } -export type FieldList = Field[]; +export type FieldList = Field[] export type ExportOptions = { - fieldSeparator?: string; - fields: FieldList; - ignoreHeader: boolean; + fieldSeparator?: string + fields: FieldList + ignoreHeader: boolean } diff --git a/packages/json-csv-core/tsconfig.build.json b/packages/json-csv-core/tsconfig.build.json index c5dbc75..276177c 100644 --- a/packages/json-csv-core/tsconfig.build.json +++ b/packages/json-csv-core/tsconfig.build.json @@ -1,6 +1,8 @@ { "extends": "./tsconfig", "compilerOptions": { + "module": "Node16", + "moduleResolution": "Node16", "sourceMap": false, "declarationMap": false }, diff --git a/packages/json-csv-node/.eslintrc.json b/packages/json-csv-node/.eslintrc.json deleted file mode 100644 index e9c4232..0000000 --- a/packages/json-csv-node/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["../../eslint-base-node.json"] -} \ No newline at end of file diff --git a/packages/json-csv-node/package.json b/packages/json-csv-node/package.json index 2d2b519..65f1cfe 100644 --- a/packages/json-csv-node/package.json +++ b/packages/json-csv-node/package.json @@ -37,24 +37,18 @@ "node": ">=10.17" }, "scripts": { - "lint": "eslint src" + "lint": "eslint src", + "clean": "rimraf dist" }, "devDependencies": { - "@types/node": "^20.12.11", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "debug": "^4.3.4", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "@types/node": "^22.0.0", + "debug": "^4.3.6", "npm-run-all": "^4.1.5", - "rimraf": "^5.0.5", - "typescript": "^5.4.5" + "rimraf": "^5.0.9", + "typescript": "^5.5.4" }, "dependencies": { - "@iwsio/json-csv-core": "^1" + "@iwsio/json-csv-core": "^1.1.5" }, "bugs": { "url": "https://github.com/IWSLLC/json-csv/issues" diff --git a/packages/json-csv-node/src/index.cts b/packages/json-csv-node/src/index.cts index d4a9671..14f956b 100644 --- a/packages/json-csv-node/src/index.cts +++ b/packages/json-csv-node/src/index.cts @@ -7,7 +7,7 @@ import { StringWriter } from './string-writer.cjs' export { StringWriter } from './string-writer.cjs' -type StreamCallback = (err?: Error | null, result?: Transform) => void; +type StreamCallback = (err?: Error | null, result?: Transform) => void type BufferedCallback = (err?: Error | null, result?: string) => void /** @@ -56,8 +56,8 @@ export const buffered = (data: Record[], options: Partial callback(null, result)) - .catch((err) => callback(err)) + .then(result => callback(null, result)) + .catch(err => callback(err)) } /** diff --git a/samples/advanced-stream.cjs b/samples/advanced-stream.cjs index 67ea1ca..5ed3467 100644 --- a/samples/advanced-stream.cjs +++ b/samples/advanced-stream.cjs @@ -2,63 +2,63 @@ const { toCsvStream } = require('@iwsio/json-csv-node') const { Readable } = require('stream') const items = [ - { - downloaded: false, - contact: { - company: 'Widgets, LLC', - name: 'John Doe', - email: 'john@widgets.somewhere' - }, - registration: { - year: 2013, - level: 3 - } - }, - { - downloaded: false, - contact: { - company: 'Sprockets, LLC', - name: 'Jane Doe', - email: 'jane@sprockets.somewhere' - }, - registration: { - year: 2013, - level: 2 - } - } + { + downloaded: false, + contact: { + company: 'Widgets, LLC', + name: 'John Doe', + email: 'john@widgets.somewhere' + }, + registration: { + year: 2013, + level: 3 + } + }, + { + downloaded: false, + contact: { + company: 'Sprockets, LLC', + name: 'Jane Doe', + email: 'jane@sprockets.somewhere' + }, + registration: { + year: 2013, + level: 2 + } + } ] const options = { - fields: [ - { - name: 'contact.company', - label: 'Company' - }, - { - name: 'contact.name', - label: 'Name' - }, - { - name: 'contact.email', - label: 'Email' - }, - { - name: 'registration.year', - label: 'Year' - }, - { - name: 'registration.level', - label: 'Level', - transform: (value) => { - switch (value) { - case 1: return 'Test 1' - case 2: return 'Test 2' - default: return 'Unknown' - } - } - }] + fields: [ + { + name: 'contact.company', + label: 'Company' + }, + { + name: 'contact.name', + label: 'Name' + }, + { + name: 'contact.email', + label: 'Email' + }, + { + name: 'registration.year', + label: 'Year' + }, + { + name: 'registration.level', + label: 'Level', + transform: (value) => { + switch (value) { + case 1: return 'Test 1' + case 2: return 'Test 2' + default: return 'Unknown' + } + } + }] } Readable.from(items) - .pipe(toCsvStream(options)) - .pipe(process.stdout) + .pipe(toCsvStream(options)) + .pipe(process.stdout) diff --git a/samples/advanced-stream.mjs b/samples/advanced-stream.mjs index 16ad572..6bff880 100644 --- a/samples/advanced-stream.mjs +++ b/samples/advanced-stream.mjs @@ -2,63 +2,63 @@ import { toCsvStream } from '@iwsio/json-csv-node' import { Readable } from 'stream' const items = [ - { - downloaded: false, - contact: { - company: 'Widgets, LLC', - name: 'John Doe', - email: 'john@widgets.somewhere' - }, - registration: { - year: 2013, - level: 3 - } - }, - { - downloaded: false, - contact: { - company: 'Sprockets, LLC', - name: 'Jane Doe', - email: 'jane@sprockets.somewhere' - }, - registration: { - year: 2013, - level: 2 - } - } + { + downloaded: false, + contact: { + company: 'Widgets, LLC', + name: 'John Doe', + email: 'john@widgets.somewhere' + }, + registration: { + year: 2013, + level: 3 + } + }, + { + downloaded: false, + contact: { + company: 'Sprockets, LLC', + name: 'Jane Doe', + email: 'jane@sprockets.somewhere' + }, + registration: { + year: 2013, + level: 2 + } + } ] const options = { - fields: [ - { - name: 'contact.company', - label: 'Company' - }, - { - name: 'contact.name', - label: 'Name' - }, - { - name: 'contact.email', - label: 'Email' - }, - { - name: 'registration.year', - label: 'Year' - }, - { - name: 'registration.level', - label: 'Level', - transform: (value) => { - switch (value) { - case 1: return 'Test 1' - case 2: return 'Test 2' - default: return 'Unknown' - } - } - }] + fields: [ + { + name: 'contact.company', + label: 'Company' + }, + { + name: 'contact.name', + label: 'Name' + }, + { + name: 'contact.email', + label: 'Email' + }, + { + name: 'registration.year', + label: 'Year' + }, + { + name: 'registration.level', + label: 'Level', + transform: (value) => { + switch (value) { + case 1: return 'Test 1' + case 2: return 'Test 2' + default: return 'Unknown' + } + } + }] } Readable.from(items) - .pipe(toCsvStream(options)) - .pipe(process.stdout) + .pipe(toCsvStream(options)) + .pipe(process.stdout) diff --git a/samples/advanced.cjs b/samples/advanced.cjs index 87899e6..c0a4cf4 100644 --- a/samples/advanced.cjs +++ b/samples/advanced.cjs @@ -1,75 +1,75 @@ const { toCsv } = require('@iwsio/json-csv-node') const items = [ - { - downloaded: false, - contact: { - company: 'Widgets, LLC', - name: 'John Doe', - email: 'john@widgets.somewhere' - }, - registration: { - year: 2013, - level: 3 - } - }, - { - downloaded: true, - contact: { - company: 'Sprockets, LLC', - name: 'Jane Doe', - email: 'jane@sprockets.somewhere' - }, - registration: { - year: 2013, - level: 2 - } - } + { + downloaded: false, + contact: { + company: 'Widgets, LLC', + name: 'John Doe', + email: 'john@widgets.somewhere' + }, + registration: { + year: 2013, + level: 3 + } + }, + { + downloaded: true, + contact: { + company: 'Sprockets, LLC', + name: 'Jane Doe', + email: 'jane@sprockets.somewhere' + }, + registration: { + year: 2013, + level: 2 + } + } ] const options = { - fields: [ - { - name: 'contact.company', - label: 'Company' - }, - { - name: 'contact.name', - label: 'Name' - }, - { - name: 'contact.email', - label: 'Email' - }, - { - name: 'downloaded', - label: 'Downloaded', - transform: (v) => v ? 'downloaded' : 'pending' - }, - { - name: 'registration.year', - label: 'Year' - }, - { - name: 'registration.level', - label: 'Level', - transform: function(value) { - switch (value) { - case 1: return 'Test 1' - case 2: return 'Test 2' - default: return 'Unknown' - } - } - } - ] + fields: [ + { + name: 'contact.company', + label: 'Company' + }, + { + name: 'contact.name', + label: 'Name' + }, + { + name: 'contact.email', + label: 'Email' + }, + { + name: 'downloaded', + label: 'Downloaded', + transform: v => v ? 'downloaded' : 'pending' + }, + { + name: 'registration.year', + label: 'Year' + }, + { + name: 'registration.level', + label: 'Level', + transform: function (value) { + switch (value) { + case 1: return 'Test 1' + case 2: return 'Test 2' + default: return 'Unknown' + } + } + } + ] } async function writeCsv() { - try { - const result = await toCsv(items, options) - console.log(result) - } catch (err) { - console.error(err) - } + try { + const result = await toCsv(items, options) + console.log(result) + } catch (err) { + console.error(err) + } } writeCsv() diff --git a/samples/advanced.mjs b/samples/advanced.mjs index 0b85183..2c29203 100644 --- a/samples/advanced.mjs +++ b/samples/advanced.mjs @@ -1,76 +1,75 @@ import { toCsv } from '@iwsio/json-csv-node' -import csv from '@iwsio/json-csv-node' const items = [ - { - downloaded: false, - contact: { - company: 'Widgets, LLC', - name: 'John Doe', - email: 'john@widgets.somewhere' - }, - registration: { - year: 2013, - level: 3 - } - }, - { - downloaded: true, - contact: { - company: 'Sprockets, LLC', - name: 'Jane Doe', - email: 'jane@sprockets.somewhere' - }, - registration: { - year: 2013, - level: 2 - } - } + { + downloaded: false, + contact: { + company: 'Widgets, LLC', + name: 'John Doe', + email: 'john@widgets.somewhere' + }, + registration: { + year: 2013, + level: 3 + } + }, + { + downloaded: true, + contact: { + company: 'Sprockets, LLC', + name: 'Jane Doe', + email: 'jane@sprockets.somewhere' + }, + registration: { + year: 2013, + level: 2 + } + } ] const options = { - fields: [ - { - name: 'contact.company', - label: 'Company' - }, - { - name: 'contact.name', - label: 'Name' - }, - { - name: 'contact.email', - label: 'Email' - }, - { - name: 'downloaded', - label: 'Downloaded', - transform: (v) => v ? 'downloaded' : 'pending' - }, - { - name: 'registration.year', - label: 'Year' - }, - { - name: 'registration.level', - label: 'Level', - transform: function(value) { - switch (value) { - case 1: return 'Test 1' - case 2: return 'Test 2' - default: return 'Unknown' - } - } - } - ] + fields: [ + { + name: 'contact.company', + label: 'Company' + }, + { + name: 'contact.name', + label: 'Name' + }, + { + name: 'contact.email', + label: 'Email' + }, + { + name: 'downloaded', + label: 'Downloaded', + transform: v => v ? 'downloaded' : 'pending' + }, + { + name: 'registration.year', + label: 'Year' + }, + { + name: 'registration.level', + label: 'Level', + transform: function (value) { + switch (value) { + case 1: return 'Test 1' + case 2: return 'Test 2' + default: return 'Unknown' + } + } + } + ] } async function writeCsv() { - try { - const result = await toCsv(items, options) - console.log(result) - } catch (err) { - console.error(err) - } + try { + const result = await toCsv(items, options) + console.log(result) + } catch (err) { + console.error(err) + } } writeCsv() diff --git a/samples/package.json b/samples/package.json index 534b8af..39b7a26 100644 --- a/samples/package.json +++ b/samples/package.json @@ -17,13 +17,6 @@ "author": "Nathan Bridgewater", "license": "ISC", "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", "npm-run-all": "^4.1.5" } } diff --git a/samples/simple-stream.cjs b/samples/simple-stream.cjs index 9d9d7cf..9ab64d7 100644 --- a/samples/simple-stream.cjs +++ b/samples/simple-stream.cjs @@ -2,45 +2,45 @@ const jsonCsv = require('@iwsio/json-csv-node') const { Readable } = require('stream') const items = [ - { - name: 'fred', - email: 'fred@somewhere', - amount: 1.02 - }, - { - name: 'jo', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a comma,', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a quote"', - email: 'jo@somewhere', - amount: 1.02 - }] + { + name: 'fred', + email: 'fred@somewhere', + amount: 1.02 + }, + { + name: 'jo', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a comma,', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a quote"', + email: 'jo@somewhere', + amount: 1.02 + }] const options = { - fields: [ - { - name: 'name', - label: 'Name', - quoted: true - }, - { - name: 'email', - label: 'Email' - }, - { - name: 'amount', - label: 'Amount' - } - ] + fields: [ + { + name: 'name', + label: 'Name', + quoted: true + }, + { + name: 'email', + label: 'Email' + }, + { + name: 'amount', + label: 'Amount' + } + ] } Readable.from(items) - .pipe(jsonCsv.stream(options)) - .pipe(process.stdout) + .pipe(jsonCsv.stream(options)) + .pipe(process.stdout) diff --git a/samples/simple-stream.mjs b/samples/simple-stream.mjs index 9d63e4f..9f1cfdb 100644 --- a/samples/simple-stream.mjs +++ b/samples/simple-stream.mjs @@ -2,45 +2,45 @@ import { stream } from '@iwsio/json-csv-node' import { Readable } from 'stream' const items = [ - { - name: 'fred', - email: 'fred@somewhere', - amount: 1.02 - }, - { - name: 'jo', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a comma,', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a quote"', - email: 'jo@somewhere', - amount: 1.02 - }] + { + name: 'fred', + email: 'fred@somewhere', + amount: 1.02 + }, + { + name: 'jo', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a comma,', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a quote"', + email: 'jo@somewhere', + amount: 1.02 + }] const options = { - fields: [ - { - name: 'name', - label: 'Name', - quoted: true - }, - { - name: 'email', - label: 'Email' - }, - { - name: 'amount', - label: 'Amount' - } - ] + fields: [ + { + name: 'name', + label: 'Name', + quoted: true + }, + { + name: 'email', + label: 'Email' + }, + { + name: 'amount', + label: 'Amount' + } + ] } Readable.from(items) - .pipe(stream(options)) - .pipe(process.stdout) + .pipe(stream(options)) + .pipe(process.stdout) diff --git a/samples/simple.cjs b/samples/simple.cjs index 2a978e4..0d58799 100644 --- a/samples/simple.cjs +++ b/samples/simple.cjs @@ -1,53 +1,53 @@ const jsonCsv = require('@iwsio/json-csv-node') const items = [ - { - name: 'fred', - email: 'fred@somewhere', - amount: 1.02 - }, - { - name: 'jo', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a comma,', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a quote"', - email: 'jo@somewhere', - amount: 1.02 - } + { + name: 'fred', + email: 'fred@somewhere', + amount: 1.02 + }, + { + name: 'jo', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a comma,', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a quote"', + email: 'jo@somewhere', + amount: 1.02 + } ] const options = { - fields: [ - { - name: 'name', - label: 'Name', - quoted: true - }, - { - name: 'email', - label: 'Email' - }, - { - name: 'amount', - label: 'Amount' - } - ] + fields: [ + { + name: 'name', + label: 'Name', + quoted: true + }, + { + name: 'email', + label: 'Email' + }, + { + name: 'amount', + label: 'Amount' + } + ] } async function writeCsv() { - try { - const result = await jsonCsv.buffered(items, options) - console.log(result) - } catch (err) { - console.error(err) - } + try { + const result = await jsonCsv.buffered(items, options) + console.log(result) + } catch (err) { + console.error(err) + } } writeCsv() diff --git a/samples/simple.mjs b/samples/simple.mjs index 1353fc1..1225a52 100644 --- a/samples/simple.mjs +++ b/samples/simple.mjs @@ -1,53 +1,53 @@ import { buffered } from '@iwsio/json-csv-node' const items = [ - { - name: 'fred', - email: 'fred@somewhere', - amount: 1.02 - }, - { - name: 'jo', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a comma,', - email: 'jo@somewhere', - amount: 1.02 - }, - { - name: 'jo with a quote"', - email: 'jo@somewhere', - amount: 1.02 - } + { + name: 'fred', + email: 'fred@somewhere', + amount: 1.02 + }, + { + name: 'jo', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a comma,', + email: 'jo@somewhere', + amount: 1.02 + }, + { + name: 'jo with a quote"', + email: 'jo@somewhere', + amount: 1.02 + } ] const options = { - fields: [ - { - name: 'name', - label: 'Name', - quoted: true - }, - { - name: 'email', - label: 'Email' - }, - { - name: 'amount', - label: 'Amount' - } - ] + fields: [ + { + name: 'name', + label: 'Name', + quoted: true + }, + { + name: 'email', + label: 'Email' + }, + { + name: 'amount', + label: 'Amount' + } + ] } async function writeCsv() { - try { - const result = await buffered(items, options) - console.log(result) - } catch (err) { - console.error(err) - } + try { + const result = await buffered(items, options) + console.log(result) + } catch (err) { + console.error(err) + } } writeCsv() diff --git a/test-runner-core/.eslintignore b/test-runner-core/.eslintignore deleted file mode 100644 index f06235c..0000000 --- a/test-runner-core/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist diff --git a/test-runner-core/.eslintrc.json b/test-runner-core/.eslintrc.json deleted file mode 100644 index b729050..0000000 --- a/test-runner-core/.eslintrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": ["../eslint-base.json"], - "rules": { - "@typescript-eslint/no-var-requires": "off", - "camelcase": "off" - } -} \ No newline at end of file diff --git a/test-runner-core/package.json b/test-runner-core/package.json index 01f2733..a267909 100644 --- a/test-runner-core/package.json +++ b/test-runner-core/package.json @@ -13,16 +13,7 @@ "author": "Nathan Bridgewater", "license": "ISC", "dependencies": { - "chai": "^4.4.1", + "chai": "^4.5.0", "mocha": "^9.2.2" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1" } } diff --git a/test-runner-core/test/exporter.js b/test-runner-core/test/exporter.js index 0d5cfbf..65415f2 100644 --- a/test-runner-core/test/exporter.js +++ b/test-runner-core/test/exporter.js @@ -1,11 +1,11 @@ const { buffered } = require('../../packages/json-csv-core/dist/exporter') -describe('buffered', function() { - describe('buffered simple data with default options', function() { - before(function() { +describe('buffered', function () { + describe('buffered simple data with default options', function () { + before(function () { const options = { fields: [ - { name: 'name', label: 'Name', transform: (v) => `${v != null ? v : ''}`.toUpperCase() }, + { name: 'name', label: 'Name', transform: v => `${v != null ? v : ''}`.toUpperCase() }, { name: 'age', label: 'Age' } ] } @@ -21,7 +21,7 @@ describe('buffered', function() { ] this.result = buffered(this.source, options) }) - it('should have the correct output', function() { + it('should have the correct output', function () { expect(this.result).to.equal('Name,Age\r\nFRED,14\r\nGEORGE,24\r\nFRANK,53\r\nSUSIE,43\r\n,44\r\n,45\r\n"TEST,TEST",43\r\n,\r\n') }) }) diff --git a/test-runner-core/test/field-value-prep.js b/test-runner-core/test/field-value-prep.js index ede7491..ad62760 100644 --- a/test-runner-core/test/field-value-prep.js +++ b/test-runner-core/test/field-value-prep.js @@ -1,31 +1,31 @@ const { prepValue } = require('../../packages/json-csv-core/dist/exporter') -describe('Field value prep', function() { - it('surround with quotes (and double-qoute inner) if any quotes detected within the value', function() { +describe('Field value prep', function () { + it('surround with quotes (and double-qoute inner) if any quotes detected within the value', function () { const test = 'someString"' const result = prepValue(test, false, ',') expect(result).to.equal('"someString"""') }) - it('surround with quotes if any commas detected within the value', function() { + it('surround with quotes if any commas detected within the value', function () { const test = 'someString,' const result = prepValue(test, false, ',') expect(result).to.equal('"someString,"') }) - it('surround with quotes if any fieldSeparator detected within the value', function() { + it('surround with quotes if any fieldSeparator detected within the value', function () { const test = 'someString;' const result = prepValue(test, false, ';') expect(result).to.equal('"someString;"') }) - it('surround with quotes if force quote option is true', function() { + it('surround with quotes if force quote option is true', function () { const test = 'someString' const result = prepValue(test, true, ',') expect(result).to.equal('"someString"') }) - it('should not quote the value if it does not contain field separator nor is forced.', function() { + it('should not quote the value if it does not contain field separator nor is forced.', function () { const test = 'someString' const result = prepValue(test, false, ',') expect(result).to.equal('someString') diff --git a/test-runner-core/test/getValue.js b/test-runner-core/test/getValue.js index c80709e..f91cfa5 100644 --- a/test-runner-core/test/getValue.js +++ b/test-runner-core/test/getValue.js @@ -1,19 +1,19 @@ const { getValue } = require('../../packages/json-csv-core/dist/exporter') -describe('Value Evaluator', function() { - it('should evaluate value of contact.name', function() { +describe('Value Evaluator', function () { + it('should evaluate value of contact.name', function () { const test = { contact: { name: 'some name' } } const result = getValue(test, 'contact.name') expect(result).to.equal('some name') }) - it('should evaluate value of contact.name.middle.initial', function() { + it('should evaluate value of contact.name.middle.initial', function () { const test = { contact: { name: { middle: { initial: 'L' } } } } const result = getValue(test, 'contact.name.middle.initial') expect(result).to.equal('L') }) - it('should evaluate undefined value of contact.name.middle.initial as blank string', function() { + it('should evaluate undefined value of contact.name.middle.initial as blank string', function () { const test = { contact: { name: 'test' } } const result = getValue(test, 'contact.test.somethingelse') expect(result).to.equal('') diff --git a/test-runner-core/test/module-exports.js b/test-runner-core/test/module-exports.js index b321dbd..d7c3f00 100644 --- a/test-runner-core/test/module-exports.js +++ b/test-runner-core/test/module-exports.js @@ -6,15 +6,15 @@ const direct_default = require('../../packages/json-csv-core/dist/exporter') const { buffered: index_named, toCsv } = buffered_index const { buffered: direct_named, toCsv: direct_toCsv } = direct_default -describe('module exports', function() { - it('index named export should exist', function() { expect(index_named).to.be.a('function') }) - it('toCsv named export should exist', function() { expect(toCsv).to.be.a('function') }) - it('index default export should be a func', function() { expect(buffered_index.default).to.be.a('function') }) - it('index default export should work', function() { +describe('module exports', function () { + it('index named export should exist', function () { expect(index_named).to.be.a('function') }) + it('toCsv named export should exist', function () { expect(toCsv).to.be.a('function') }) + it('index default export should be a func', function () { expect(buffered_index.default).to.be.a('function') }) + it('index default export should work', function () { const result = buffered_index.default([{ name: 'test' }], { fields: [{ name: 'name', label: 'Name' }] }) expect(result).to.eq('Name\r\ntest\r\n') }) - it('direct default export should be a func', function() { expect(direct_default.default).to.be.a('function') }) - it('direct named export should exist', function() { expect(direct_named).to.be.a('function') }) - it('direct toCsv export should exist', function() { expect(direct_toCsv).to.be.a('function') }) + it('direct default export should be a func', function () { expect(direct_default.default).to.be.a('function') }) + it('direct named export should exist', function () { expect(direct_named).to.be.a('function') }) + it('direct toCsv export should exist', function () { expect(direct_toCsv).to.be.a('function') }) }) diff --git a/test-runner/.eslintignore b/test-runner/.eslintignore deleted file mode 100644 index f06235c..0000000 --- a/test-runner/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist diff --git a/test-runner/.eslintrc.json b/test-runner/.eslintrc.json deleted file mode 100644 index fa1eba5..0000000 --- a/test-runner/.eslintrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": ["../eslint-base-node.json"], - "rules": { - "node/no-unsupported-features/node-builtins": "off", - "@typescript-eslint/no-var-requires": "off", - "camelcase": "off", - "node/no-extraneous-require": "off", - "no-unused-expressions": "off" - } -} \ No newline at end of file diff --git a/test-runner/package.json b/test-runner/package.json index 820f035..2d0dc53 100644 --- a/test-runner/package.json +++ b/test-runner/package.json @@ -3,20 +3,11 @@ "version": "6.1.0-alpha.1", "type": "module", "dependencies": { - "chai": "^4.4.1", + "chai": "^4.5.0", "coffeescript": "^2.7.0", "mocha": "^9.2.2", "should": "^13.2.3" }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1" - }, "scripts": { "test": "mocha $@", "lint": "eslint test" diff --git a/test-runner/test/async.cjs b/test-runner/test/async.cjs index 15860a6..f7f0e71 100644 --- a/test-runner/test/async.cjs +++ b/test-runner/test/async.cjs @@ -1,8 +1,8 @@ const { buffered } = require('@iwsio/json-csv-node') const { expect } = require('chai') -describe('CJS JSON - CSV, async', function() { - before(async function() { +describe('CJS JSON - CSV, async', function () { + before(async function () { this.data = [ { contact: { @@ -22,7 +22,7 @@ describe('CJS JSON - CSV, async', function() { { name: 'contact.name', label: 'contact', - filter: function() { + filter: function () { return 'something else' } }, { @@ -33,6 +33,6 @@ describe('CJS JSON - CSV, async', function() { } this.result = await buffered(this.data, options) }) - it('should work', function() { expect(this.result).to.eql('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) - it('should not throw error', function() { expect(this.err).to.not.exist }) + it('should work', function () { expect(this.result).to.eql('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) + it('should not throw error', function () { expect(this.err).to.not.exist }) }) diff --git a/test-runner/test/async.mjs b/test-runner/test/async.mjs index f6d42cf..4810e2a 100644 --- a/test-runner/test/async.mjs +++ b/test-runner/test/async.mjs @@ -1,8 +1,8 @@ import { buffered } from '@iwsio/json-csv-node' import { expect } from 'chai' -describe('ESM: JSON - CSV, async', function() { - before(async function() { +describe('ESM: JSON - CSV, async', function () { + before(async function () { this.data = [ { contact: { @@ -22,7 +22,7 @@ describe('ESM: JSON - CSV, async', function() { { name: 'contact.name', label: 'contact', - filter: function() { + filter: function () { return 'something else' } }, { @@ -33,6 +33,6 @@ describe('ESM: JSON - CSV, async', function() { } this.result = await buffered(this.data, options) }) - it('should work', function() { expect(this.result).to.eql('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) - it('should not throw error', function() { expect(this.err).to.not.exist }) + it('should work', function () { expect(this.result).to.eql('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) + it('should not throw error', function () { expect(this.err).to.not.exist }) }) diff --git a/test-runner/test/issue-1.cjs b/test-runner/test/issue-1.cjs index 764d1fe..4dd450d 100644 --- a/test-runner/test/issue-1.cjs +++ b/test-runner/test/issue-1.cjs @@ -1,10 +1,10 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('Issue 1', function() { - it('should contain a final endquote', function(done) { +describe('Issue 1', function () { + it('should contain a final endquote', function (done) { const items = [{ s: 'foo "bar"' }] // --> this should be turned into "foo ""bar""" - jsoncsv.buffered(items, { fields: [{ name: 's', label: 's' }] }, function(err, csv) { + jsoncsv.buffered(items, { fields: [{ name: 's', label: 's' }] }, function (err, csv) { csv.should.equal('s\r\n"foo ""bar"""\r\n') done() }) diff --git a/test-runner/test/issue-1.mjs b/test-runner/test/issue-1.mjs index 6bd9140..9a264b7 100644 --- a/test-runner/test/issue-1.mjs +++ b/test-runner/test/issue-1.mjs @@ -1,10 +1,10 @@ import { buffered } from '@iwsio/json-csv-node' import 'should' -describe('ESM: Issue 1', function() { - it('should contain a final endquote', function(done) { +describe('ESM: Issue 1', function () { + it('should contain a final endquote', function (done) { const items = [{ s: 'foo "bar"' }] // --> this should be turned into "foo ""bar""" - buffered(items, { fields: [{ name: 's', label: 's' }] }, function(err, csv) { + buffered(items, { fields: [{ name: 's', label: 's' }] }, function (err, csv) { csv.should.equal('s\r\n"foo ""bar"""\r\n') done() }) diff --git a/test-runner/test/issue-10.cjs b/test-runner/test/issue-10.cjs index 9f01d23..99bed49 100644 --- a/test-runner/test/issue-10.cjs +++ b/test-runner/test/issue-10.cjs @@ -1,9 +1,9 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('Issue 10', function() { - describe("@kameamea's test", function() { - before(function(done) { +describe('Issue 10', function () { + describe('@kameamea\'s test', function () { + before(function (done) { this.data = [{ contact: { name: '', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] jsoncsv.buffered(this.data, { @@ -23,10 +23,10 @@ describe('Issue 10', function() { done(err) }) }) - it('should convert list of data to csv', function() { this.result.should.equal('contact,amount\r\n,4.3\r\ntest2,5\r\n') }) + it('should convert list of data to csv', function () { this.result.should.equal('contact,amount\r\n,4.3\r\ntest2,5\r\n') }) }) - describe("@Elavarasan83's test", function() { - before(function(done) { + describe('@Elavarasan83\'s test', function () { + before(function (done) { this.data = [{ car: '', price: 40000, color: 'blue' }, { car: 'BMW', price: 35000, color: 'red' }, { car: 'Tata', price: 60000, color: 'green' }] jsoncsv.buffered(this.data, @@ -52,6 +52,6 @@ describe('Issue 10', function() { } ) }) - it('should convert list of data to csv', function() { this.result.should.equal('CAR,COLOR,PRICE\r\n,blue,40000\r\nBMW,red,35000\r\nTata,green,60000\r\n') }) + it('should convert list of data to csv', function () { this.result.should.equal('CAR,COLOR,PRICE\r\n,blue,40000\r\nBMW,red,35000\r\nTata,green,60000\r\n') }) }) }) diff --git a/test-runner/test/issue-10.mjs b/test-runner/test/issue-10.mjs index 06ac65e..8cf2052 100644 --- a/test-runner/test/issue-10.mjs +++ b/test-runner/test/issue-10.mjs @@ -1,9 +1,9 @@ import { buffered } from '@iwsio/json-csv-node' import 'should' -describe('ESM: Issue 10', function() { - describe("@kameamea's test", function() { - before(function(done) { +describe('ESM: Issue 10', function () { + describe('@kameamea\'s test', function () { + before(function (done) { this.data = [{ contact: { name: '', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] buffered(this.data, { @@ -23,10 +23,10 @@ describe('ESM: Issue 10', function() { done(err) }) }) - it('should convert list of data to csv', function() { this.result.should.equal('contact,amount\r\n,4.3\r\ntest2,5\r\n') }) + it('should convert list of data to csv', function () { this.result.should.equal('contact,amount\r\n,4.3\r\ntest2,5\r\n') }) }) - describe("@Elavarasan83's test", function() { - before(function(done) { + describe('@Elavarasan83\'s test', function () { + before(function (done) { this.data = [{ car: '', price: 40000, color: 'blue' }, { car: 'BMW', price: 35000, color: 'red' }, { car: 'Tata', price: 60000, color: 'green' }] buffered(this.data, @@ -52,6 +52,6 @@ describe('ESM: Issue 10', function() { } ) }) - it('should convert list of data to csv', function() { this.result.should.equal('CAR,COLOR,PRICE\r\n,blue,40000\r\nBMW,red,35000\r\nTata,green,60000\r\n') }) + it('should convert list of data to csv', function () { this.result.should.equal('CAR,COLOR,PRICE\r\n,blue,40000\r\nBMW,red,35000\r\nTata,green,60000\r\n') }) }) }) diff --git a/test-runner/test/issue-13.cjs b/test-runner/test/issue-13.cjs index 222466a..a722b23 100644 --- a/test-runner/test/issue-13.cjs +++ b/test-runner/test/issue-13.cjs @@ -1,19 +1,19 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('Issue 13', function() { - describe('When exporting fields containing literal periods as opposed to object separators', function() { - before(function(done) { +describe('Issue 13', function () { + describe('When exporting fields containing literal periods as opposed to object separators', function () { + before(function (done) { this.items = [{ 'website url': 'http ://www.somewhere.com', 'phone no.': '(555) 123-4567', 'contact person': 'JOHN DOE', - title: 'WWW Widgets Association Inc.', + 'title': 'WWW Widgets Association Inc.', 'service area': 'KANSAS CITY', - address: '123 MAIN ST KANSAS CITY, MO 64145', - hcr_data_url: 'https://github.com/LocalHousingOrgLists/Profile.aspx?applid=9', - email: 'somebodythis.github.com', - description: 'The WWW Widgets Association...' + 'address': '123 MAIN ST KANSAS CITY, MO 64145', + 'hcr_data_url': 'https://github.com/LocalHousingOrgLists/Profile.aspx?applid=9', + 'email': 'somebodythis.github.com', + 'description': 'The WWW Widgets Association...' }] this.options = [ { name: 'title', label: 'org name' }, @@ -32,14 +32,14 @@ describe('Issue 13', function() { done() }) }) - it('should export correct header row', function() { /^org name,website,email,phone,contact person,service area,address,hcr url,description\r\n/.test(this.csv).should.be.true() }) - it('should NOT export phone field because periods in names is a known issue.', function() { /\(555\) 123-4567/.test(this.csv).should.be.false() }) - it('should export title field', function() { /WWW Widgets Association Inc\./.test(this.csv).should.be.true() }) - it('should export email field', function() { /somebodythis.github\.com/.test(this.csv).should.be.true() }) - it('should export contact person field', function() { /JOHN DOE/.test(this.csv).should.be.true() }) - it('should export service area field', function() { /KANSAS CITY/.test(this.csv).should.be.true() }) - it('should export address field', function() { /123 MAIN ST KANSAS CITY, MO 64145/.test(this.csv).should.be.true() }) - it('should export hcr field', function() { /https:\/\/github\.com\/LocalHousingOrgLists\/Profile\.aspx\?applid=9/.test(this.csv).should.be.true() }) - it('should export description field', function() { /The WWW Widgets Association\.\.\./.test(this.csv).should.be.true() }) + it('should export correct header row', function () { /^org name,website,email,phone,contact person,service area,address,hcr url,description\r\n/.test(this.csv).should.be.true() }) + it('should NOT export phone field because periods in names is a known issue.', function () { /\(555\) 123-4567/.test(this.csv).should.be.false() }) + it('should export title field', function () { /WWW Widgets Association Inc\./.test(this.csv).should.be.true() }) + it('should export email field', function () { /somebodythis.github\.com/.test(this.csv).should.be.true() }) + it('should export contact person field', function () { /JOHN DOE/.test(this.csv).should.be.true() }) + it('should export service area field', function () { /KANSAS CITY/.test(this.csv).should.be.true() }) + it('should export address field', function () { /123 MAIN ST KANSAS CITY, MO 64145/.test(this.csv).should.be.true() }) + it('should export hcr field', function () { /https:\/\/github\.com\/LocalHousingOrgLists\/Profile\.aspx\?applid=9/.test(this.csv).should.be.true() }) + it('should export description field', function () { /The WWW Widgets Association\.\.\./.test(this.csv).should.be.true() }) }) }) diff --git a/test-runner/test/issue-13.mjs b/test-runner/test/issue-13.mjs index 08f2522..4438d0b 100644 --- a/test-runner/test/issue-13.mjs +++ b/test-runner/test/issue-13.mjs @@ -1,19 +1,19 @@ import { toCsv } from '@iwsio/json-csv-node' import 'should' -describe('ESM: Issue 13', function() { - describe('When exporting fields containing literal periods as opposed to object separators', function() { - before(function(done) { +describe('ESM: Issue 13', function () { + describe('When exporting fields containing literal periods as opposed to object separators', function () { + before(function (done) { this.items = [{ 'website url': 'http ://www.somewhere.com', 'phone no.': '(555) 123-4567', 'contact person': 'JOHN DOE', - title: 'WWW Widgets Association Inc.', + 'title': 'WWW Widgets Association Inc.', 'service area': 'KANSAS CITY', - address: '123 MAIN ST KANSAS CITY, MO 64145', - hcr_data_url: 'https://github.com/LocalHousingOrgLists/Profile.aspx?applid=9', - email: 'somebodythis.github.com', - description: 'The WWW Widgets Association...' + 'address': '123 MAIN ST KANSAS CITY, MO 64145', + 'hcr_data_url': 'https://github.com/LocalHousingOrgLists/Profile.aspx?applid=9', + 'email': 'somebodythis.github.com', + 'description': 'The WWW Widgets Association...' }] this.options = [ { name: 'title', label: 'org name' }, @@ -32,14 +32,14 @@ describe('ESM: Issue 13', function() { done() }) }) - it('should export correct header row', function() { /^org name,website,email,phone,contact person,service area,address,hcr url,description\r\n/.test(this.csv).should.be.true() }) - it('should NOT export phone field because periods in names is a known issue.', function() { /\(555\) 123-4567/.test(this.csv).should.be.false() }) - it('should export title field', function() { /WWW Widgets Association Inc\./.test(this.csv).should.be.true() }) - it('should export email field', function() { /somebodythis.github\.com/.test(this.csv).should.be.true() }) - it('should export contact person field', function() { /JOHN DOE/.test(this.csv).should.be.true() }) - it('should export service area field', function() { /KANSAS CITY/.test(this.csv).should.be.true() }) - it('should export address field', function() { /123 MAIN ST KANSAS CITY, MO 64145/.test(this.csv).should.be.true() }) - it('should export hcr field', function() { /https:\/\/github\.com\/LocalHousingOrgLists\/Profile\.aspx\?applid=9/.test(this.csv).should.be.true() }) - it('should export description field', function() { /The WWW Widgets Association\.\.\./.test(this.csv).should.be.true() }) + it('should export correct header row', function () { /^org name,website,email,phone,contact person,service area,address,hcr url,description\r\n/.test(this.csv).should.be.true() }) + it('should NOT export phone field because periods in names is a known issue.', function () { /\(555\) 123-4567/.test(this.csv).should.be.false() }) + it('should export title field', function () { /WWW Widgets Association Inc\./.test(this.csv).should.be.true() }) + it('should export email field', function () { /somebodythis.github\.com/.test(this.csv).should.be.true() }) + it('should export contact person field', function () { /JOHN DOE/.test(this.csv).should.be.true() }) + it('should export service area field', function () { /KANSAS CITY/.test(this.csv).should.be.true() }) + it('should export address field', function () { /123 MAIN ST KANSAS CITY, MO 64145/.test(this.csv).should.be.true() }) + it('should export hcr field', function () { /https:\/\/github\.com\/LocalHousingOrgLists\/Profile\.aspx\?applid=9/.test(this.csv).should.be.true() }) + it('should export description field', function () { /The WWW Widgets Association\.\.\./.test(this.csv).should.be.true() }) }) }) diff --git a/test-runner/test/issue-16.cjs b/test-runner/test/issue-16.cjs index 821bee0..600c69f 100644 --- a/test-runner/test/issue-16.cjs +++ b/test-runner/test/issue-16.cjs @@ -1,9 +1,9 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('Issue 16', function() { - describe('When exporting flexible schema data that may include a null element in the data source', function() { - before(function(done) { +describe('Issue 16', function () { + describe('When exporting flexible schema data that may include a null element in the data source', function () { + before(function (done) { this.items = [{ s: 5, y: { a: 1, b: 2 } }, null, { x: 4 }, { s: 1, x: 3, y: { a: 3, b: 4 } }] jsoncsv.buffered(this.items, { fields: [{ name: 's', label: 's' }, { name: 'x', label: 'x' }, { name: 'y.a', label: 'y_a' }] }, (err, csv) => { this.err = err @@ -11,6 +11,6 @@ describe('Issue 16', function() { done() }) }) - it('should export blanks for s and x', function() { this.csv.should.equal('s,x,y_a\r\n5,,1\r\n,,\r\n,4,\r\n1,3,3\r\n') }) + it('should export blanks for s and x', function () { this.csv.should.equal('s,x,y_a\r\n5,,1\r\n,,\r\n,4,\r\n1,3,3\r\n') }) }) }) diff --git a/test-runner/test/issue-16.mjs b/test-runner/test/issue-16.mjs index a0a19a3..6a1e5f2 100644 --- a/test-runner/test/issue-16.mjs +++ b/test-runner/test/issue-16.mjs @@ -1,9 +1,9 @@ import { buffered } from '@iwsio/json-csv-node' import 'should' -describe('ESM: Issue 16', function() { - describe('When exporting flexible schema data that may include a null element in the data source', function() { - before(function(done) { +describe('ESM: Issue 16', function () { + describe('When exporting flexible schema data that may include a null element in the data source', function () { + before(function (done) { this.items = [{ s: 5, y: { a: 1, b: 2 } }, null, { x: 4 }, { s: 1, x: 3, y: { a: 3, b: 4 } }] buffered(this.items, { fields: [{ name: 's', label: 's' }, { name: 'x', label: 'x' }, { name: 'y.a', label: 'y_a' }] }, (err, csv) => { this.err = err @@ -11,6 +11,6 @@ describe('ESM: Issue 16', function() { done() }) }) - it('should export blanks for s and x', function() { this.csv.should.equal('s,x,y_a\r\n5,,1\r\n,,\r\n,4,\r\n1,3,3\r\n') }) + it('should export blanks for s and x', function () { this.csv.should.equal('s,x,y_a\r\n5,,1\r\n,,\r\n,4,\r\n1,3,3\r\n') }) }) }) diff --git a/test-runner/test/issue-2.cjs b/test-runner/test/issue-2.cjs index 7966cf6..b670118 100644 --- a/test-runner/test/issue-2.cjs +++ b/test-runner/test/issue-2.cjs @@ -1,9 +1,9 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('Issue 2', function() { - describe('When providing a filter function that returns null or undefined', function() { - before(function(done) { +describe('Issue 2', function () { + describe('When providing a filter function that returns null or undefined', function () { + before(function (done) { this.items = [{ s: 5 }] jsoncsv.buffered(this.items, { fields: [{ name: 's', label: 's', filter: _v => undefined }] }, (err, csv) => { this.csv = csv @@ -11,7 +11,7 @@ describe('Issue 2', function() { done() }) }) - it('should filter before prepping the value', function() { this.csv.should.equal('s\r\n\r\n') }) - it('should not throw an error', function() { should.not.exist(this.err) }) + it('should filter before prepping the value', function () { this.csv.should.equal('s\r\n\r\n') }) + it('should not throw an error', function () { should.not.exist(this.err) }) }) }) diff --git a/test-runner/test/issue-2.mjs b/test-runner/test/issue-2.mjs index 0d2a8e0..00396fd 100644 --- a/test-runner/test/issue-2.mjs +++ b/test-runner/test/issue-2.mjs @@ -1,9 +1,9 @@ import { buffered } from '@iwsio/json-csv-node' import should from 'should' -describe('ESM: Issue 2', function() { - describe('When providing a filter function that returns null or undefined', function() { - before(function(done) { +describe('ESM: Issue 2', function () { + describe('When providing a filter function that returns null or undefined', function () { + before(function (done) { this.items = [{ s: 5 }] buffered(this.items, { fields: [{ name: 's', label: 's', filter: _v => undefined }] }, (err, csv) => { this.csv = csv @@ -11,7 +11,7 @@ describe('ESM: Issue 2', function() { done() }) }) - it('should filter before prepping the value', function() { this.csv.should.equal('s\r\n\r\n') }) - it('should not throw an error', function() { should.not.exist(this.err) }) + it('should filter before prepping the value', function () { this.csv.should.equal('s\r\n\r\n') }) + it('should not throw an error', function () { should.not.exist(this.err) }) }) }) diff --git a/test-runner/test/issue-21.cjs b/test-runner/test/issue-21.cjs index 44c4837..4ea79d9 100644 --- a/test-runner/test/issue-21.cjs +++ b/test-runner/test/issue-21.cjs @@ -1,9 +1,9 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('Issue 21', function() { - describe('When exporting a column, concatenated from two source fields', function() { - before(function(done) { +describe('Issue 21', function () { + describe('When exporting a column, concatenated from two source fields', function () { + before(function (done) { this.items = [{ a: 'first', b: 'second' }, { a: 'third', b: 'fourth' }, { a: 'fifth', b: 'sixth' }] jsoncsv.csvBuffered(this.items, { fields: [ @@ -22,6 +22,6 @@ describe('Issue 21', function() { return done() }) - it('should export concatenated a and b', function() { return this.csv.should.equal('c\r\nfirstsecond\r\nthirdfourth\r\nfifthsixth\r\n') }) + it('should export concatenated a and b', function () { return this.csv.should.equal('c\r\nfirstsecond\r\nthirdfourth\r\nfifthsixth\r\n') }) }) }) diff --git a/test-runner/test/issue-21.mjs b/test-runner/test/issue-21.mjs index d4a1aae..c4ca577 100644 --- a/test-runner/test/issue-21.mjs +++ b/test-runner/test/issue-21.mjs @@ -1,9 +1,9 @@ import { buffered } from '@iwsio/json-csv-node' import 'should' -describe('ESM: Issue 21', function() { - describe('When exporting a column, concatenated from two source fields', function() { - before(function(done) { +describe('ESM: Issue 21', function () { + describe('When exporting a column, concatenated from two source fields', function () { + before(function (done) { this.items = [{ a: 'first', b: 'second' }, { a: 'third', b: 'fourth' }, { a: 'fifth', b: 'sixth' }] buffered(this.items, { fields: [ @@ -22,6 +22,6 @@ describe('ESM: Issue 21', function() { return done() }) - it('should export concatenated a and b', function() { return this.csv.should.equal('c\r\nfirstsecond\r\nthirdfourth\r\nfifthsixth\r\n') }) + it('should export concatenated a and b', function () { return this.csv.should.equal('c\r\nfirstsecond\r\nthirdfourth\r\nfifthsixth\r\n') }) }) }) diff --git a/test-runner/test/issue-23.cjs b/test-runner/test/issue-23.cjs index 66b92e2..8f71f20 100644 --- a/test-runner/test/issue-23.cjs +++ b/test-runner/test/issue-23.cjs @@ -1,9 +1,9 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('Issue 23', function() { - describe('When excluding label definitions', function() { - before(function(done) { +describe('Issue 23', function () { + describe('When excluding label definitions', function () { + before(function (done) { this.items = [{ a: 'first', b: 'second' }, { a: 'third', b: 'fourth' }, { a: 'fifth', b: 'sixth' }] jsoncsv.csvBuffered(this.items, { fields: [ @@ -17,12 +17,12 @@ describe('Issue 23', function() { done() }) - it('should export a and b', function() { return this.csv.should.equal('a,b\r\nfirst,second\r\nthird,fourth\r\nfifth,sixth\r\n') }) + it('should export a and b', function () { return this.csv.should.equal('a,b\r\nfirst,second\r\nthird,fourth\r\nfifth,sixth\r\n') }) }) // also this issue came up (because of the first one) - return describe('When exporting a column that resolves undefined in the data set', function() { - before(function(done) { + return describe('When exporting a column that resolves undefined in the data set', function () { + before(function (done) { this.items = [{ a: 'first', b: 'second' }, { a: 'third', b: 'fourth' }, { a: 'fifth', b: 'sixth' }] jsoncsv.csvBuffered(this.items, { fields: [ @@ -37,6 +37,6 @@ describe('Issue 23', function() { return done() }) - return it('should export a, b, and c', function() { return this.csv.should.equal('a,b,c\r\nfirst,second,\r\nthird,fourth,\r\nfifth,sixth,\r\n') }) + return it('should export a, b, and c', function () { return this.csv.should.equal('a,b,c\r\nfirst,second,\r\nthird,fourth,\r\nfifth,sixth,\r\n') }) }) }) diff --git a/test-runner/test/issue-23.mjs b/test-runner/test/issue-23.mjs index 4411f89..4572888 100644 --- a/test-runner/test/issue-23.mjs +++ b/test-runner/test/issue-23.mjs @@ -1,9 +1,9 @@ import { buffered } from '@iwsio/json-csv-node' import 'should' -describe('ESM: Issue 23', function() { - describe('When excluding label definitions', function() { - before(function(done) { +describe('ESM: Issue 23', function () { + describe('When excluding label definitions', function () { + before(function (done) { this.items = [{ a: 'first', b: 'second' }, { a: 'third', b: 'fourth' }, { a: 'fifth', b: 'sixth' }] buffered(this.items, { fields: [ @@ -17,12 +17,12 @@ describe('ESM: Issue 23', function() { done() }) - it('should export a and b', function() { return this.csv.should.equal('a,b\r\nfirst,second\r\nthird,fourth\r\nfifth,sixth\r\n') }) + it('should export a and b', function () { return this.csv.should.equal('a,b\r\nfirst,second\r\nthird,fourth\r\nfifth,sixth\r\n') }) }) // also this issue came up (because of the first one) - return describe('When exporting a column that resolves undefined in the data set', function() { - before(function(done) { + return describe('When exporting a column that resolves undefined in the data set', function () { + before(function (done) { this.items = [{ a: 'first', b: 'second' }, { a: 'third', b: 'fourth' }, { a: 'fifth', b: 'sixth' }] buffered(this.items, { fields: [ @@ -37,6 +37,6 @@ describe('ESM: Issue 23', function() { return done() }) - return it('should export a, b, and c', function() { return this.csv.should.equal('a,b,c\r\nfirst,second,\r\nthird,fourth,\r\nfifth,sixth,\r\n') }) + return it('should export a, b, and c', function () { return this.csv.should.equal('a,b,c\r\nfirst,second,\r\nthird,fourth,\r\nfifth,sixth,\r\n') }) }) }) diff --git a/test-runner/test/json-csv.cjs b/test-runner/test/json-csv.cjs index ddbfb5b..9823519 100644 --- a/test-runner/test/json-csv.cjs +++ b/test-runner/test/json-csv.cjs @@ -2,10 +2,10 @@ require('should') const { toCsv, toCsvStream, StringWriter } = require('@iwsio/json-csv-node') const { Readable } = require('stream') -describe('CJS: JSON - CSV', function() { - describe('buffered', function() { - describe('When converting a buffer of data to CSV using fieldSeparator', function() { - before(function(done) { +describe('CJS: JSON - CSV', function () { + describe('buffered', function () { + describe('When converting a buffer of data to CSV using fieldSeparator', function () { + before(function (done) { this.data = [{ contact: { name: 'test', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] toCsv(this.data, { fields: [{ @@ -25,10 +25,10 @@ describe('CJS: JSON - CSV', function() { }) }) - it('should convert list of data to csv using fieldSeparator', function() { return this.result.should.equal('contact;amount\r\ntest;4.3\r\ntest2;5\r\n') }) + it('should convert list of data to csv using fieldSeparator', function () { return this.result.should.equal('contact;amount\r\ntest;4.3\r\ntest2;5\r\n') }) }) - describe('When converting a buffer of data to CSV with field filters', function() { - before(function(done) { + describe('When converting a buffer of data to CSV with field filters', function () { + before(function (done) { this.data = [{ contact: { name: 'test', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] toCsv(this.data, { fields: [{ @@ -49,17 +49,18 @@ describe('CJS: JSON - CSV', function() { done(err) }) }) - it('should convert list of data to csv using filters', function() { return this.result.should.equal('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) + it('should convert list of data to csv using filters', function () { return this.result.should.equal('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) }) - return describe('When filter is provided and the value is falsey', function() { - before(function(done) { + return describe('When filter is provided and the value is falsey', function () { + before(function (done) { this.data = [{ contact: { name: 'test', thing: false, amount: 4.3 } }, { contact: { thing: true, name: null, amount: 5 } }] toCsv(this.data, { fields: [{ name: 'contact.thing', label: 'thing', filter(value) { - if (value === true) { return 'Yes' } else { return 'No' } + if (value === true) return 'Yes' + else return 'No' } }, { @@ -77,12 +78,12 @@ describe('CJS: JSON - CSV', function() { done() }) }) - it('should write empty data', function() { return this.result.should.equal('thing,name,amount\r\nNo,test,4.3\r\nYes,,5\r\n') }) + it('should write empty data', function () { return this.result.should.equal('thing,name,amount\r\nNo,test,4.3\r\nYes,,5\r\n') }) }) }) - describe('stream', function() { - return describe('When piping data through the Exporter to a buffer', function() { - before(function(done) { + describe('stream', function () { + return describe('When piping data through the Exporter to a buffer', function () { + before(function (done) { this.data = [{ contact: { name: 'test', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] this.fields = [{ @@ -105,7 +106,7 @@ describe('CJS: JSON - CSV', function() { }) }) - it('should contain CSV result', function() { return this.result.should.equal('contact,amount\r\ntest,4.3\r\ntest2,5\r\n') }) + it('should contain CSV result', function () { return this.result.should.equal('contact,amount\r\ntest,4.3\r\ntest2,5\r\n') }) }) }) }) diff --git a/test-runner/test/json-csv.mjs b/test-runner/test/json-csv.mjs index 45d633d..3c53d23 100644 --- a/test-runner/test/json-csv.mjs +++ b/test-runner/test/json-csv.mjs @@ -2,10 +2,10 @@ import 'should' import { toCsv, toCsvStream, StringWriter } from '@iwsio/json-csv-node' import { Readable } from 'stream' -describe('ESM: JSON - CSV', function() { - describe('buffered', function() { - describe('When converting a buffer of data to CSV using fieldSeparator', function() { - before(function(done) { +describe('ESM: JSON - CSV', function () { + describe('buffered', function () { + describe('When converting a buffer of data to CSV using fieldSeparator', function () { + before(function (done) { this.data = [{ contact: { name: 'test', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] toCsv(this.data, { fields: [{ @@ -25,10 +25,10 @@ describe('ESM: JSON - CSV', function() { }) }) - it('should convert list of data to csv using fieldSeparator', function() { return this.result.should.equal('contact;amount\r\ntest;4.3\r\ntest2;5\r\n') }) + it('should convert list of data to csv using fieldSeparator', function () { return this.result.should.equal('contact;amount\r\ntest;4.3\r\ntest2;5\r\n') }) }) - describe('When converting a buffer of data to CSV with field filters', function() { - before(function(done) { + describe('When converting a buffer of data to CSV with field filters', function () { + before(function (done) { this.data = [{ contact: { name: 'test', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] toCsv(this.data, { fields: [{ @@ -49,17 +49,18 @@ describe('ESM: JSON - CSV', function() { done(err) }) }) - it('should convert list of data to csv using filters', function() { return this.result.should.equal('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) + it('should convert list of data to csv using filters', function () { return this.result.should.equal('contact,amount\r\nsomething else,4.3\r\nsomething else,5\r\n') }) }) - return describe('When filter is provided and the value is falsey', function() { - before(function(done) { + return describe('When filter is provided and the value is falsey', function () { + before(function (done) { this.data = [{ contact: { name: 'test', thing: false, amount: 4.3 } }, { contact: { thing: true, name: null, amount: 5 } }] toCsv(this.data, { fields: [{ name: 'contact.thing', label: 'thing', filter(value) { - if (value === true) { return 'Yes' } else { return 'No' } + if (value === true) return 'Yes' + else return 'No' } }, { @@ -77,12 +78,12 @@ describe('ESM: JSON - CSV', function() { done() }) }) - it('should write empty data', function() { return this.result.should.equal('thing,name,amount\r\nNo,test,4.3\r\nYes,,5\r\n') }) + it('should write empty data', function () { return this.result.should.equal('thing,name,amount\r\nNo,test,4.3\r\nYes,,5\r\n') }) }) }) - describe('stream', function() { - return describe('When piping data through the Exporter to a buffer', function() { - before(function(done) { + describe('stream', function () { + return describe('When piping data through the Exporter to a buffer', function () { + before(function (done) { this.data = [{ contact: { name: 'test', amount: 4.3 } }, { contact: { name: 'test2', amount: 5 } }] this.fields = [{ @@ -105,7 +106,7 @@ describe('ESM: JSON - CSV', function() { }) }) - it('should contain CSV result', function() { return this.result.should.equal('contact,amount\r\ntest,4.3\r\ntest2,5\r\n') }) + it('should contain CSV result', function () { return this.result.should.equal('contact,amount\r\ntest,4.3\r\ntest2,5\r\n') }) }) }) }) diff --git a/test-runner/test/module-exports.cjs b/test-runner/test/module-exports.cjs index e6d2d2a..6dea912 100644 --- a/test-runner/test/module-exports.cjs +++ b/test-runner/test/module-exports.cjs @@ -2,8 +2,8 @@ const index_default = require('@iwsio/json-csv-node') const { csv, csvBuffered, bufferedSync, stream, buffered, toCsv, toCsvStream, StringWriter } = require('@iwsio/json-csv-node') const { expect } = require('chai') -describe('CJS, Node16+ Module exports', function() { - it('should export defaults', function() { +describe('CJS, Node16+ Module exports', function () { + it('should export defaults', function () { expect(index_default.buffered).to.be.a('function') expect(index_default.bufferedSync).to.be.a('function') expect(index_default.toCsv).to.be.a('function') @@ -16,7 +16,7 @@ describe('CJS, Node16+ Module exports', function() { expect(index_default.csvBuffered).to.be.a('function') }) - it('should export individuals', function() { + it('should export individuals', function () { expect(buffered).to.be.a('function') expect(bufferedSync).to.be.a('function') expect(toCsv).to.be.a('function') diff --git a/test-runner/test/module-exports.mjs b/test-runner/test/module-exports.mjs index 60d6954..de444c3 100644 --- a/test-runner/test/module-exports.mjs +++ b/test-runner/test/module-exports.mjs @@ -1,8 +1,8 @@ import index_default, { csv, csvBuffered, bufferedSync, stream, buffered, toCsv, toCsvStream, StringWriter } from '@iwsio/json-csv-node' import { expect } from 'chai' -describe('ESM: Module exports', function() { - it('should export defaults', function() { +describe('ESM: Module exports', function () { + it('should export defaults', function () { expect(index_default.buffered).to.be.a('function') expect(index_default.bufferedSync).to.be.a('function') expect(index_default.toCsv).to.be.a('function') @@ -15,7 +15,7 @@ describe('ESM: Module exports', function() { expect(index_default.csvBuffered).to.be.a('function') }) - it('should export individuals', function() { + it('should export individuals', function () { expect(buffered).to.be.a('function') expect(bufferedSync).to.be.a('function') expect(toCsv).to.be.a('function') diff --git a/test-runner/test/no-header.cjs b/test-runner/test/no-header.cjs index 2e23152..5eea5e6 100644 --- a/test-runner/test/no-header.cjs +++ b/test-runner/test/no-header.cjs @@ -1,8 +1,8 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('No Header Row', function() { - return it('should not contain a header', function(done) { +describe('No Header Row', function () { + return it('should not contain a header', function (done) { const items = [ { k: 'foo' }, { k: 'bar' } @@ -10,7 +10,7 @@ describe('No Header Row', function() { jsoncsv.toCsv(items, { ignoreHeader: true, fields: [{ name: 'k' }] // Label not needed - }, function(err, csv) { + }, function (err, csv) { csv.should.equal('foo\r\nbar\r\n') return done() }) diff --git a/test-runner/test/no-header.mjs b/test-runner/test/no-header.mjs index 07e3e84..e163d3f 100644 --- a/test-runner/test/no-header.mjs +++ b/test-runner/test/no-header.mjs @@ -1,8 +1,8 @@ import { toCsv } from '@iwsio/json-csv-node' import 'should' -describe('ESM: No Header Row', function() { - return it('should not contain a header', function(done) { +describe('ESM: No Header Row', function () { + return it('should not contain a header', function (done) { const items = [ { k: 'foo' }, { k: 'bar' } @@ -10,7 +10,7 @@ describe('ESM: No Header Row', function() { toCsv(items, { ignoreHeader: true, fields: [{ name: 'k' }] // Label not needed - }, function(err, csv) { + }, function (err, csv) { csv.should.equal('foo\r\nbar\r\n') return done() }) diff --git a/test-runner/test/or-operator.cjs b/test-runner/test/or-operator.cjs index 3020ecb..ff54cb7 100644 --- a/test-runner/test/or-operator.cjs +++ b/test-runner/test/or-operator.cjs @@ -1,31 +1,31 @@ const jsoncsv = require('@iwsio/json-csv-node') require('should') -describe('OR || operator', function() { - it('should merge column1, 2 or 3 into combinedCol (from 2 to single column two entries)', function(done) { +describe('OR || operator', function () { + it('should merge column1, 2 or 3 into combinedCol (from 2 to single column two entries)', function (done) { const arrayItems = [ { column1: 'foo1' }, { column2: 'foo2' }] // --> all 2 columns should be merged one column 'combinedCol' - jsoncsv.toCsv(arrayItems, { fields: [{ name: 'column1||column2', label: 'combinedCol' }] }, function(err, csv) { + jsoncsv.toCsv(arrayItems, { fields: [{ name: 'column1||column2', label: 'combinedCol' }] }, function (err, csv) { csv.should.equal('combinedCol\r\nfoo1\r\nfoo2\r\n') return done() }) }) - it('should use column1, 2 or 3 into combinedCol (from 3 to single columns 3 entries)', function(done) { + it('should use column1, 2 or 3 into combinedCol (from 3 to single columns 3 entries)', function (done) { const arrayItems = [ { column1: 'foo1' }, { column2: 'foo2' }, { column3: 'foo3' }] // --> all 3 columns should be merged one column 'combinedCol' - jsoncsv.toCsv(arrayItems, { fields: [{ name: 'column1||column2||column3', label: 'combinedCol' }] }, function(err, csv) { + jsoncsv.toCsv(arrayItems, { fields: [{ name: 'column1||column2||column3', label: 'combinedCol' }] }, function (err, csv) { csv.should.equal('combinedCol\r\nfoo1\r\nfoo2\r\nfoo3\r\n') return done() }) }) - it('should merge column1, 2 or 3 into combinedCol and then parse others (from 3 to single column with other columns)', function(done) { + it('should merge column1, 2 or 3 into combinedCol and then parse others (from 3 to single column with other columns)', function (done) { const arrayItems = [ { column1: 'foo1', otherData: 'baz1' }, { column1: 'fooIgnored', column2: 'foo2', otherData: 'baz2' }, @@ -37,13 +37,13 @@ describe('OR || operator', function() { { name: 'otherData', label: 'otherColumn' }, { name: 'anotherData', label: 'anotherColumn' }], fieldSeparator: ';' - }, function(err, csv) { + }, function (err, csv) { csv.should.equal('combinedCol;otherColumn;anotherColumn\r\nfoo1;baz1;\r\nfoo2;baz2;\r\nfoo3;baz3;daz3\r\n') return done() }) }) - return it('should merge column1, 2 or 3 into combinedCol ignoring empty column (from 3 to single column with other columns)', function(done) { + return it('should merge column1, 2 or 3 into combinedCol ignoring empty column (from 3 to single column with other columns)', function (done) { const arrayItems = [ { column1: 'foo1', otherData: 'baz1' }, { column1: 'fooIgnored', column2: 'foo2', otherData: 'baz2' }, @@ -56,7 +56,7 @@ describe('OR || operator', function() { { name: 'otherData', label: 'otherColumn' }, { name: 'anotherData', label: 'anotherColumn' }], fieldSeparator: ';' - }, function(err, csv) { + }, function (err, csv) { csv.should.equal('combinedCol;otherColumn;anotherColumn\r\nfoo1;baz1;\r\nfoo2;baz2;\r\nfoo3;baz3;\r\nfoo4;baz4;daz4\r\n') return done() }) diff --git a/test-runner/test/or-operator.mjs b/test-runner/test/or-operator.mjs index 11256aa..d7c0e3c 100644 --- a/test-runner/test/or-operator.mjs +++ b/test-runner/test/or-operator.mjs @@ -1,31 +1,31 @@ import { toCsv } from '@iwsio/json-csv-node' import 'should' -describe('ESM: OR || operator', function() { - it('should merge column1, 2 or 3 into combinedCol (from 2 to single column two entries)', function(done) { +describe('ESM: OR || operator', function () { + it('should merge column1, 2 or 3 into combinedCol (from 2 to single column two entries)', function (done) { const arrayItems = [ { column1: 'foo1' }, { column2: 'foo2' }] // --> all 2 columns should be merged one column 'combinedCol' - toCsv(arrayItems, { fields: [{ name: 'column1||column2', label: 'combinedCol' }] }, function(err, csv) { + toCsv(arrayItems, { fields: [{ name: 'column1||column2', label: 'combinedCol' }] }, function (err, csv) { csv.should.equal('combinedCol\r\nfoo1\r\nfoo2\r\n') return done() }) }) - it('should use column1, 2 or 3 into combinedCol (from 3 to single columns 3 entries)', function(done) { + it('should use column1, 2 or 3 into combinedCol (from 3 to single columns 3 entries)', function (done) { const arrayItems = [ { column1: 'foo1' }, { column2: 'foo2' }, { column3: 'foo3' }] // --> all 3 columns should be merged one column 'combinedCol' - toCsv(arrayItems, { fields: [{ name: 'column1||column2||column3', label: 'combinedCol' }] }, function(err, csv) { + toCsv(arrayItems, { fields: [{ name: 'column1||column2||column3', label: 'combinedCol' }] }, function (err, csv) { csv.should.equal('combinedCol\r\nfoo1\r\nfoo2\r\nfoo3\r\n') return done() }) }) - it('should merge column1, 2 or 3 into combinedCol and then parse others (from 3 to single column with other columns)', function(done) { + it('should merge column1, 2 or 3 into combinedCol and then parse others (from 3 to single column with other columns)', function (done) { const arrayItems = [ { column1: 'foo1', otherData: 'baz1' }, { column1: 'fooIgnored', column2: 'foo2', otherData: 'baz2' }, @@ -37,13 +37,13 @@ describe('ESM: OR || operator', function() { { name: 'otherData', label: 'otherColumn' }, { name: 'anotherData', label: 'anotherColumn' }], fieldSeparator: ';' - }, function(err, csv) { + }, function (err, csv) { csv.should.equal('combinedCol;otherColumn;anotherColumn\r\nfoo1;baz1;\r\nfoo2;baz2;\r\nfoo3;baz3;daz3\r\n') return done() }) }) - return it('should merge column1, 2 or 3 into combinedCol ignoring empty column (from 3 to single column with other columns)', function(done) { + return it('should merge column1, 2 or 3 into combinedCol ignoring empty column (from 3 to single column with other columns)', function (done) { const arrayItems = [ { column1: 'foo1', otherData: 'baz1' }, { column1: 'fooIgnored', column2: 'foo2', otherData: 'baz2' }, @@ -56,7 +56,7 @@ describe('ESM: OR || operator', function() { { name: 'otherData', label: 'otherColumn' }, { name: 'anotherData', label: 'anotherColumn' }], fieldSeparator: ';' - }, function(err, csv) { + }, function (err, csv) { csv.should.equal('combinedCol;otherColumn;anotherColumn\r\nfoo1;baz1;\r\nfoo2;baz2;\r\nfoo3;baz3;\r\nfoo4;baz4;daz4\r\n') return done() }) diff --git a/test-runner/test/string-writer.cjs b/test-runner/test/string-writer.cjs index f292d74..0b22959 100644 --- a/test-runner/test/string-writer.cjs +++ b/test-runner/test/string-writer.cjs @@ -2,9 +2,9 @@ const { StringWriter } = require('@iwsio/json-csv-node') const { Readable } = require('stream') const { expect } = require('chai') -describe('CJS BufferedWriter', function() { - describe('utf8 encoding', function() { - before(function(done) { +describe('CJS BufferedWriter', function () { + describe('utf8 encoding', function () { + before(function (done) { async function * generateReadableChunk() { yield Buffer.from('abcd', 'utf8') } @@ -18,10 +18,10 @@ describe('CJS BufferedWriter', function() { done() }) }) - it('should work', function() { expect(this.result).to.equal('abcd') }) + it('should work', function () { expect(this.result).to.equal('abcd') }) }) - describe('hex encoding', function() { - before(function(done) { + describe('hex encoding', function () { + before(function (done) { async function * generateReadableChunk() { yield Buffer.from('abcd', 'utf8') } @@ -35,10 +35,10 @@ describe('CJS BufferedWriter', function() { done() }) }) - it('should work', function() { expect(this.result).to.equal('61626364') }) + it('should work', function () { expect(this.result).to.equal('61626364') }) }) - describe('comment example', function() { - before(function(done) { + describe('comment example', function () { + before(function (done) { const writer = new StringWriter({ defaultEncoding: 'utf8' }) Readable.from(['1', '2', '3']) .pipe(writer) @@ -48,6 +48,6 @@ describe('CJS BufferedWriter', function() { done() }) }) - it('should work', function() { expect(this.result).to.equal('123') }) + it('should work', function () { expect(this.result).to.equal('123') }) }) }) diff --git a/test-runner/test/string-writer.mjs b/test-runner/test/string-writer.mjs index cfda773..7e80619 100644 --- a/test-runner/test/string-writer.mjs +++ b/test-runner/test/string-writer.mjs @@ -2,9 +2,9 @@ import { StringWriter } from '@iwsio/json-csv-node' import { Readable } from 'stream' import { expect } from 'chai' -describe('ESM: BufferedWriter', function() { - describe('utf8 encoding', function() { - before(function(done) { +describe('ESM: BufferedWriter', function () { + describe('utf8 encoding', function () { + before(function (done) { async function * generateReadableChunk() { yield Buffer.from('abcd', 'utf8') } @@ -18,10 +18,10 @@ describe('ESM: BufferedWriter', function() { done() }) }) - it('should work', function() { expect(this.result).to.equal('abcd') }) + it('should work', function () { expect(this.result).to.equal('abcd') }) }) - describe('hex encoding', function() { - before(function(done) { + describe('hex encoding', function () { + before(function (done) { async function * generateReadableChunk() { yield Buffer.from('abcd', 'utf8') } @@ -35,10 +35,10 @@ describe('ESM: BufferedWriter', function() { done() }) }) - it('should work', function() { expect(this.result).to.equal('61626364') }) + it('should work', function () { expect(this.result).to.equal('61626364') }) }) - describe('comment example', function() { - before(function(done) { + describe('comment example', function () { + before(function (done) { const writer = new StringWriter({ defaultEncoding: 'utf8' }) Readable.from(['1', '2', '3']) .pipe(writer) @@ -48,6 +48,6 @@ describe('ESM: BufferedWriter', function() { done() }) }) - it('should work', function() { expect(this.result).to.equal('123') }) + it('should work', function () { expect(this.result).to.equal('123') }) }) }) diff --git a/tsconfig-base.json b/tsconfig-base.json index b3d7b0e..414a409 100644 --- a/tsconfig-base.json +++ b/tsconfig-base.json @@ -9,7 +9,7 @@ "forceConsistentCasingInFileNames": true, "incremental": true, "inlineSourceMap": false, - "lib": ["esnext"], + "lib": ["ES6"], "module": "NodeNext", "moduleResolution": "NodeNext", "resolveJsonModule": true,