diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 65a20457b6..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,272 +0,0 @@ -/* -👋 Hi! This file was autogenerated by tslint-to-eslint-config. -https://github.com/typescript-eslint/tslint-to-eslint-config - -It represents the closest reasonable ESLint configuration to this -project's original TSLint configuration. - -We recommend eventually switching this configuration to extend from -the recommended rulesets in typescript-eslint. -https://github.com/typescript-eslint/tslint-to-eslint-config/blob/master/docs/FAQs.md - -Happy linting! 💖 -*/ -module.exports = { - extends: "eslint:recommended", - env: { - browser: true, - es6: true, - node: true, - }, - parser: "@typescript-eslint/parser", - parserOptions: { - project: "tsconfig.json", - sourceType: "module", - }, - plugins: [ - "eslint-plugin-import", - "eslint-plugin-no-null", - "eslint-plugin-unicorn", - "eslint-plugin-jsdoc", - "eslint-plugin-prefer-arrow", - "@typescript-eslint", - "functional", - ], - root: true, - rules: { - "no-undef": "off", - "no-extra-boolean-cast": "off", - "no-alert": "error", - "no-self-compare": "error", - "no-unreachable-loop": "error", - "no-template-curly-in-string": "error", - "no-unused-private-class-members": "error", - "no-extend-native": "error", - "no-floating-decimal": "error", - "no-implied-eval": "error", - "no-iterator": "error", - "no-lone-blocks": "error", - "no-loop-func": "error", - "no-new-object": "error", - "no-proto": "error", - "no-useless-catch": "error", - "one-var-declaration-per-line": "error", - "prefer-arrow-callback": "error", - "prefer-destructuring": "error", - "prefer-exponentiation-operator": "error", - "prefer-promise-reject-errors": "error", - "prefer-regex-literals": "error", - "prefer-spread": "error", - "prefer-template": "error", - "require-await": "error", - "@typescript-eslint/adjacent-overload-signatures": "error", - "@typescript-eslint/array-type": [ - "error", - { - default: "array", - }, - ], - "@typescript-eslint/ban-types": [ - "error", - { - types: { - Object: { - message: "Avoid using the `Object` type. Did you mean `object`?", - }, - Function: { - message: "Avoid using the `Function` type. Prefer a specific function type, like `() => void`.", - }, - Boolean: { - message: "Avoid using the `Boolean` type. Did you mean `boolean`?", - }, - Number: { - message: "Avoid using the `Number` type. Did you mean `number`?", - }, - String: { - message: "Avoid using the `String` type. Did you mean `string`?", - }, - Symbol: { - message: "Avoid using the `Symbol` type. Did you mean `symbol`?", - }, - }, - }, - ], - "@typescript-eslint/consistent-type-assertions": "error", - "@typescript-eslint/dot-notation": "error", - "@typescript-eslint/explicit-function-return-type": [ - "error", - { - allowExpressions: true, - allowTypedFunctionExpressions: true, - allowHigherOrderFunctions: false, - allowDirectConstAssertionInArrowFunctions: true, - allowConciseArrowFunctionExpressionsStartingWithVoid: true, - }, - ], - "@typescript-eslint/explicit-member-accessibility": [ - "error", - { - accessibility: "explicit", - overrides: { - accessors: "explicit", - }, - }, - ], - "@typescript-eslint/explicit-module-boundary-types": [ - "error", - { - allowArgumentsExplicitlyTypedAsAny: true, - allowDirectConstAssertionInArrowFunctions: true, - allowHigherOrderFunctions: false, - allowTypedFunctionExpressions: false, - }, - ], - "@typescript-eslint/naming-convention": [ - "error", - { - selector: ["objectLiteralProperty"], - leadingUnderscore: "allow", - format: ["camelCase", "PascalCase"], - filter: { - regex: "(^[a-z]+:.+)|_attr|[0-9]", - match: false, - }, - }, - ], - "@typescript-eslint/no-empty-function": "error", - "@typescript-eslint/no-empty-interface": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-parameter-properties": "off", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-shadow": [ - "error", - { - hoist: "all", - }, - ], - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unused-expressions": "error", - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "error", - "@typescript-eslint/prefer-function-type": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/prefer-readonly": "error", - "@typescript-eslint/triple-slash-reference": [ - "error", - { - path: "always", - types: "prefer-import", - lib: "always", - }, - ], - "@typescript-eslint/typedef": [ - "error", - { - parameter: true, - propertyDeclaration: true, - }, - ], - "@typescript-eslint/unified-signatures": "error", - "arrow-body-style": "error", - complexity: "off", - "consistent-return": "error", - "constructor-super": "error", - curly: "error", - "dot-notation": "off", - eqeqeq: ["error", "smart"], - "guard-for-in": "error", - "id-denylist": ["error", "any", "Number", "number", "String", "string", "Boolean", "boolean", "Undefined", "undefined"], - "id-match": "error", - "import/no-default-export": "error", - "import/no-extraneous-dependencies": "off", - "import/no-internal-modules": "off", - "import/order": "error", - indent: "off", - "jsdoc/check-alignment": "error", - "jsdoc/check-indentation": "off", - "jsdoc/newline-after-description": "error", - "max-classes-per-file": "off", - "max-len": "off", - "new-parens": "error", - "no-bitwise": "error", - "no-caller": "error", - "no-cond-assign": "error", - "no-console": "error", - "no-debugger": "error", - "no-duplicate-case": "error", - "no-duplicate-imports": "error", - "no-empty": "error", - "no-empty-function": "off", - "no-eval": "error", - "no-extra-bind": "error", - "no-fallthrough": "off", - "no-invalid-this": "off", - "no-multiple-empty-lines": "error", - "no-new-func": "error", - "no-new-wrappers": "error", - "no-null/no-null": "error", - "no-param-reassign": "error", - "no-redeclare": "error", - "no-return-await": "error", - "no-sequences": "error", - "no-shadow": "off", - "no-sparse-arrays": "error", - "no-throw-literal": "error", - "no-trailing-spaces": "error", - "no-undef-init": "error", - "no-underscore-dangle": ["error", { allow: ["_attr"] }], - "no-unsafe-finally": "error", - "no-unused-expressions": "off", - "no-unused-labels": "error", - "no-use-before-define": "off", - "no-useless-constructor": "error", - "no-var": "error", - "object-shorthand": "off", - "one-var": ["error", "never"], - "prefer-arrow/prefer-arrow-functions": "error", - "prefer-const": "error", - "prefer-object-spread": "error", - radix: "error", - "space-in-parens": ["error", "never"], - "spaced-comment": [ - "error", - "always", - { - markers: ["/"], - }, - ], - "unicorn/filename-case": "error", - "unicorn/prefer-ternary": "error", - "use-isnan": "error", - "valid-typeof": "off", - "functional/immutable-data": [ - "error", - { - assumeTypes: true, - ignoreImmediateMutation: true, - ignoreAccessorPattern: ["**.root*", "**.numberingReferences*", "**.sections*", "**.properties*"], - }, - ], - "functional/prefer-property-signatures": "error", - "functional/no-mixed-types": "error", - // TODO: Deprecated. Use prefer-immutable-types and type-declaration-immutability instead - "functional/prefer-readonly-type": "error", - // "functional/prefer-immutable-types": "error", - // "functional/type-declaration-immutability": "error", - "no-unused-vars": ["error", { argsIgnorePattern: "^[_]+$" }], - }, - overrides: [ - { - files: ["*.spec.ts"], - rules: { - "@typescript-eslint/no-unused-expressions": "off", - "@typescript-eslint/dot-notation": "off", - "prefer-destructuring": "off", - "@typescript-eslint/explicit-function-return-type": "off", - }, - }, - ], -}; diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000000..e181037506 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,236 @@ +extends: eslint:recommended +env: + browser: true + es6: true + node: true +parser: "@typescript-eslint/parser" +parserOptions: + project: tsconfig.json + sourceType: module +plugins: + - eslint-plugin-import + - eslint-plugin-no-null + - eslint-plugin-unicorn + - eslint-plugin-jsdoc + - eslint-plugin-prefer-arrow + - "@typescript-eslint" + - functional +root: true +rules: + no-undef: "off" + no-extra-boolean-cast: "off" + no-alert: error + no-self-compare: error + no-unreachable-loop: error + no-template-curly-in-string: error + no-unused-private-class-members: error + no-extend-native: error + no-floating-decimal: error + no-implied-eval: error + no-iterator: error + no-lone-blocks: error + no-loop-func: error + no-new-object: error + no-proto: error + no-useless-catch: error + one-var-declaration-per-line: error + prefer-arrow-callback: error + prefer-destructuring: error + prefer-exponentiation-operator: error + prefer-promise-reject-errors: error + prefer-regex-literals: error + prefer-spread: error + prefer-template: error + require-await: error + "@typescript-eslint/adjacent-overload-signatures": error + "@typescript-eslint/array-type": + - error + - default: array + "@typescript-eslint/ban-types": + - error + - types: + Object: + message: Avoid using the `Object` type. Did you mean `object`? + Function: + message: >- + Avoid using the `Function` type. Prefer a specific function type, + like `() => void`. + Boolean: + message: Avoid using the `Boolean` type. Did you mean `boolean`? + Number: + message: Avoid using the `Number` type. Did you mean `number`? + String: + message: Avoid using the `String` type. Did you mean `string`? + Symbol: + message: Avoid using the `Symbol` type. Did you mean `symbol`? + "@typescript-eslint/consistent-type-assertions": error + "@typescript-eslint/dot-notation": error + "@typescript-eslint/explicit-function-return-type": + - error + - allowExpressions: true + allowTypedFunctionExpressions: true + allowHigherOrderFunctions: false + allowDirectConstAssertionInArrowFunctions: true + allowConciseArrowFunctionExpressionsStartingWithVoid: true + "@typescript-eslint/explicit-member-accessibility": + - error + - accessibility: explicit + overrides: + accessors: explicit + "@typescript-eslint/explicit-module-boundary-types": + - error + - allowArgumentsExplicitlyTypedAsAny: true + allowDirectConstAssertionInArrowFunctions: true + allowHigherOrderFunctions: false + allowTypedFunctionExpressions: false + "@typescript-eslint/naming-convention": + - error + - selector: + - objectLiteralProperty + leadingUnderscore: allow + format: + - camelCase + - PascalCase + filter: + regex: (^[a-z]+:.+)|_attr|[0-9] + match: false + "@typescript-eslint/no-empty-function": error + "@typescript-eslint/no-empty-interface": error + "@typescript-eslint/no-explicit-any": error + "@typescript-eslint/no-misused-new": error + "@typescript-eslint/no-namespace": error + "@typescript-eslint/no-parameter-properties": "off" + "@typescript-eslint/no-require-imports": error + "@typescript-eslint/no-shadow": + - error + - hoist: all + "@typescript-eslint/no-this-alias": error + "@typescript-eslint/no-unused-expressions": error + "@typescript-eslint/no-use-before-define": "off" + "@typescript-eslint/no-var-requires": error + "@typescript-eslint/prefer-for-of": error + "@typescript-eslint/prefer-function-type": error + "@typescript-eslint/prefer-namespace-keyword": error + "@typescript-eslint/prefer-readonly": error + "@typescript-eslint/triple-slash-reference": + - error + - path: always + types: prefer-import + lib: always + "@typescript-eslint/typedef": + - error + - parameter: true + propertyDeclaration: true + "@typescript-eslint/unified-signatures": error + arrow-body-style: error + complexity: "off" + consistent-return: error + constructor-super: error + curly: error + dot-notation: "off" + eqeqeq: + - error + - smart + guard-for-in: error + id-denylist: + - error + - any + - Number + - number + - String + - string + - Boolean + - boolean + - Undefined + - undefined + id-match: error + import/no-default-export: error + import/no-extraneous-dependencies: "off" + import/no-internal-modules: "off" + import/order: error + indent: "off" + jsdoc/check-alignment: error + jsdoc/check-indentation: "off" + jsdoc/newline-after-description: error + max-classes-per-file: "off" + max-len: "off" + new-parens: error + no-bitwise: error + no-caller: error + no-cond-assign: error + no-console: error + no-debugger: error + no-duplicate-case: error + no-duplicate-imports: error + no-empty: error + no-empty-function: "off" + no-eval: error + no-extra-bind: error + no-fallthrough: "off" + no-invalid-this: "off" + no-multiple-empty-lines: error + no-new-func: error + no-new-wrappers: error + no-null/no-null: error + no-param-reassign: error + no-redeclare: error + no-return-await: error + no-sequences: error + no-shadow: "off" + no-sparse-arrays: error + no-throw-literal: error + no-trailing-spaces: error + no-undef-init: error + no-underscore-dangle: + - error + - allow: + - _attr + no-unsafe-finally: error + no-unused-expressions: "off" + no-unused-labels: error + no-use-before-define: "off" + no-useless-constructor: error + no-var: error + object-shorthand: "off" + one-var: + - error + - never + prefer-arrow/prefer-arrow-functions: error + prefer-const: error + prefer-object-spread: error + radix: error + space-in-parens: + - error + - never + spaced-comment: + - error + - always + - markers: + - / + unicorn/filename-case: error + unicorn/prefer-ternary: error + use-isnan: error + valid-typeof: "off" + functional/immutable-data: + - error + - assumeTypes: true + ignoreImmediateMutation: true + ignoreAccessorPattern: + - "**.root*" + - "**.numberingReferences*" + - "**.sections*" + - "**.properties*" + functional/prefer-property-signatures: error + functional/no-mixed-types: error + functional/prefer-readonly-type: error + no-unused-vars: + - error + - argsIgnorePattern: ^[_]+$ +overrides: + - files: + - "*.spec.ts" + rules: + "@typescript-eslint/no-unused-expressions": "off" + "@typescript-eslint/dot-notation": "off" + prefer-destructuring: "off" + "@typescript-eslint/explicit-function-return-type": "off" diff --git a/demo/index.ts b/demo/index.ts index 2e5b41cd1b..45a55ba285 100644 --- a/demo/index.ts +++ b/demo/index.ts @@ -39,5 +39,3 @@ prompt.get(schema as any, async (_, result) => { // console.error("Something went wrong with the demo"); // } }); - -exports = {}; diff --git a/package-lock.json b/package-lock.json index 9f3b3c129c..c13f32cd74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "@types/sinon": "^10.0.0", "@types/unzipper": "^0.10.4", "@types/webpack": "^5.0.0", + "@types/xml": "^1.0.8", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", "buffer": "^6.0.3", @@ -62,6 +63,8 @@ "typedoc": "^0.23.2", "typescript": "5.0.3", "unzipper": "^0.10.11", + "vite": "^4.3.2", + "vite-tsconfig-paths": "^4.2.0", "webpack": "^5.28.0", "webpack-cli": "^5.0.0" }, @@ -815,6 +818,358 @@ "node": "^14 || ^16 || ^17 || ^18 || ^19" } }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", @@ -1404,6 +1759,15 @@ "webpack": "^5" } }, + "node_modules/@types/xml": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/xml/-/xml-1.0.8.tgz", + "integrity": "sha512-IptEZBtDwSPayCP8FmbordhAdjdxsif4zH29xTbBRacZeCHFHZp8OxyG1/CrS8AS0MziJUPTGWCTKbYtvHGYPg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.57.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz", @@ -4266,6 +4630,43 @@ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, + "node_modules/esbuild": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -5989,6 +6390,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -7947,9 +8354,15 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8805,6 +9218,34 @@ "node": ">=4" } }, + "node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/pre-commit": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", @@ -9555,6 +9996,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.2.tgz", + "integrity": "sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9915,6 +10372,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -10648,6 +11114,26 @@ "node": ">=0.3.1" } }, + "node_modules/tsconfck": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.1.tgz", + "integrity": "sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==", + "dev": true, + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^14.13.1 || ^16 || >=18" + }, + "peerDependencies": { + "typescript": "^4.3.5 || ^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -11147,6 +11633,96 @@ "extsprintf": "^1.2.0" } }, + "node_modules/vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^2.1.0" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vite-tsconfig-paths/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vite-tsconfig-paths/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", @@ -12488,6 +13064,160 @@ "jsdoc-type-pratt-parser": "~4.0.0" } }, + "@esbuild/android-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", + "dev": true, + "optional": true + }, "@eslint-community/eslint-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", @@ -12996,6 +13726,15 @@ "webpack": "^5" } }, + "@types/xml": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/xml/-/xml-1.0.8.tgz", + "integrity": "sha512-IptEZBtDwSPayCP8FmbordhAdjdxsif4zH29xTbBRacZeCHFHZp8OxyG1/CrS8AS0MziJUPTGWCTKbYtvHGYPg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@typescript-eslint/eslint-plugin": { "version": "5.57.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz", @@ -15126,6 +15865,36 @@ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, + "esbuild": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -16380,6 +17149,12 @@ "slash": "^3.0.0" } }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -17829,9 +18604,9 @@ "dev": true }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" }, "natural-compare": { "version": "1.4.0", @@ -18478,6 +19253,17 @@ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, + "postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, "pre-commit": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", @@ -19033,6 +19819,15 @@ "glob": "^9.2.0" } }, + "rollup": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.2.tgz", + "integrity": "sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -19319,6 +20114,12 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -19856,6 +20657,13 @@ } } }, + "tsconfck": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.1.tgz", + "integrity": "sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==", + "dev": true, + "requires": {} + }, "tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -20244,6 +21052,46 @@ "extsprintf": "^1.2.0" } }, + "vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==", + "dev": true, + "requires": { + "esbuild": "^0.17.5", + "fsevents": "~2.3.2", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + } + }, + "vite-tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "vscode-languageserver-textdocument": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", diff --git a/package.json b/package.json index 851178af02..8f6c354fb7 100644 --- a/package.json +++ b/package.json @@ -3,16 +3,19 @@ "version": "8.0.3", "description": "Easily generate .docx files with JS/TS with a nice declarative API. Works for Node and on the Browser.", "main": "build/index.js", + "type": "module", "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", "pretest": "rimraf ./build", "test": "mocha --config=.mocharc.json", "test.coverage": "nyc npm test", "test.watch": "npm test -- --watch", "prepublishOnly": "npm run build --production", - "lint": "eslint -c .eslintrc.js --ext .ts src", - "build": "npm run webpack && npm run fix-types", + "lint": "eslint --ext .ts src", "webpack": "rimraf ./build && webpack --config ./webpack.config.ts", - "demo": "ts-node --esm --skip-project ./demo/index.ts", + "demo": "ts-node --esm ./demo/index.ts", "typedoc": "rimraf ./build && typedoc src/index.ts --tsconfig tsconfig.typedoc.json", "style": "prettier -l \"{src,scripts,demo}/**/*.{ts,html}\"", "style.fix": "npm run style -- --write", @@ -70,6 +73,7 @@ "@types/sinon": "^10.0.0", "@types/unzipper": "^0.10.4", "@types/webpack": "^5.0.0", + "@types/xml": "^1.0.8", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", "buffer": "^6.0.3", @@ -107,6 +111,8 @@ "typedoc": "^0.23.2", "typescript": "5.0.3", "unzipper": "^0.10.11", + "vite": "^4.3.2", + "vite-tsconfig-paths": "^4.2.0", "webpack": "^5.28.0", "webpack-cli": "^5.0.0" }, diff --git a/src/export/packer/next-compiler.ts b/src/export/packer/next-compiler.ts index 39e2dbeb8b..92869b65cd 100644 --- a/src/export/packer/next-compiler.ts +++ b/src/export/packer/next-compiler.ts @@ -1,5 +1,5 @@ -import * as JSZip from "jszip"; -import * as xml from "xml"; +import JSZip from "jszip"; +import xml from "xml"; import { File } from "@file/file"; @@ -44,7 +44,7 @@ export class Compiler { this.numberingReplacer = new NumberingReplacer(); } - public compile(file: File, prettifyXml?: boolean | PrettifyType): JSZip { + public compile(file: File, prettifyXml?: PrettifyType): JSZip { const zip = new JSZip(); const xmlifiedFileMapping = this.xmlifyFile(file, prettifyXml); const map = new Map(Object.entries(xmlifiedFileMapping)); @@ -66,7 +66,7 @@ export class Compiler { return zip; } - private xmlifyFile(file: File, prettify?: boolean | PrettifyType): IXmlifyedFileMapping { + private xmlifyFile(file: File, prettify?: PrettifyType): IXmlifyedFileMapping { const documentRelationshipCount = file.Document.Relationships.RelationshipCount + 1; const documentXmlData = xml( diff --git a/src/export/packer/packer.ts b/src/export/packer/packer.ts index 523d0226aa..9eb9c095f1 100644 --- a/src/export/packer/packer.ts +++ b/src/export/packer/packer.ts @@ -15,7 +15,7 @@ export enum PrettifyType { export class Packer { public static async toString(file: File, prettify?: boolean | PrettifyType): Promise { - const zip = this.compiler.compile(file, prettify); + const zip = this.compiler.compile(file, prettify === true ? PrettifyType.WITH_2_BLANKS : prettify === false ? undefined : prettify); const zipData = await zip.generateAsync({ type: "string", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", @@ -26,7 +26,7 @@ export class Packer { } public static async toBuffer(file: File, prettify?: boolean | PrettifyType): Promise { - const zip = this.compiler.compile(file, prettify); + const zip = this.compiler.compile(file, prettify === true ? PrettifyType.WITH_2_BLANKS : prettify === false ? undefined : prettify); const zipData = await zip.generateAsync({ type: "nodebuffer", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", @@ -37,7 +37,7 @@ export class Packer { } public static async toBase64String(file: File, prettify?: boolean | PrettifyType): Promise { - const zip = this.compiler.compile(file, prettify); + const zip = this.compiler.compile(file, prettify === true ? PrettifyType.WITH_2_BLANKS : prettify === false ? undefined : prettify); const zipData = await zip.generateAsync({ type: "base64", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", @@ -48,7 +48,7 @@ export class Packer { } public static async toBlob(file: File, prettify?: boolean | PrettifyType): Promise { - const zip = this.compiler.compile(file, prettify); + const zip = this.compiler.compile(file, prettify === true ? PrettifyType.WITH_2_BLANKS : prettify === false ? undefined : prettify); const zipData = await zip.generateAsync({ type: "blob", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", @@ -59,7 +59,7 @@ export class Packer { } public static toStream(file: File, prettify?: boolean | PrettifyType): Stream { - const zip = this.compiler.compile(file, prettify); + const zip = this.compiler.compile(file, prettify === true ? PrettifyType.WITH_2_BLANKS : prettify === false ? undefined : prettify); const zipData = zip.generateNodeStream({ type: "nodebuffer", streamFiles: true, diff --git a/src/file/core-properties/properties.spec.ts b/src/file/core-properties/properties.spec.ts index 5bcc83c2f6..f1dc16968c 100644 --- a/src/file/core-properties/properties.spec.ts +++ b/src/file/core-properties/properties.spec.ts @@ -44,7 +44,8 @@ describe("Properties", () => { expect(Object.keys(tree)).to.deep.equal(["cp:coreProperties"]); expect(tree["cp:coreProperties"]).to.be.an.instanceof(Array); - const key = (obj) => Object.keys(obj)[0]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const key = (obj: { readonly [key: string]: any }) => Object.keys(obj)[0]; expect(tree["cp:coreProperties"].map(key)).to.include.members([ "_attr", "cp:keywords", diff --git a/src/file/numbering/numbering.spec.ts b/src/file/numbering/numbering.spec.ts index ff4c781ebe..6058023518 100644 --- a/src/file/numbering/numbering.spec.ts +++ b/src/file/numbering/numbering.spec.ts @@ -25,7 +25,8 @@ describe("Numbering", () => { const tree = new Formatter().format(numbering); expect(Object.keys(tree)).to.deep.equal(["w:numbering"]); - const abstractNums = tree["w:numbering"].filter((el) => el["w:abstractNum"]); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const abstractNums: readonly any[] = tree["w:numbering"].filter((el) => el["w:abstractNum"]); expect(abstractNums).to.have.lengthOf(1); expect(abstractNums[0]["w:abstractNum"]).to.deep.include.members([ { _attr: { "w:abstractNumId": 0, "w15:restartNumberingAfterBreak": 0 } }, diff --git a/src/file/numbering/numbering.ts b/src/file/numbering/numbering.ts index 4ec5206327..272686ca8a 100644 --- a/src/file/numbering/numbering.ts +++ b/src/file/numbering/numbering.ts @@ -29,7 +29,8 @@ export interface INumberingOptions { export class Numbering extends XmlComponent { private readonly abstractNumberingMap = new Map(); private readonly concreteNumberingMap = new Map(); - private readonly referenceConfigMap = new Map(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private readonly referenceConfigMap = new Map>(); public constructor(options: INumberingOptions) { super("w:numbering"); @@ -231,7 +232,8 @@ export class Numbering extends XmlComponent { public get ConcreteNumbering(): readonly ConcreteNumbering[] { return Array.from(this.concreteNumberingMap.values()); } - public get ReferenceConfig(): readonly object[] { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + public get ReferenceConfig(): readonly Record[] { return Array.from(this.referenceConfigMap.values()); } } diff --git a/src/file/styles/external-styles-factory.spec.ts b/src/file/styles/external-styles-factory.spec.ts index 2931b67fdd..f410d867b3 100644 --- a/src/file/styles/external-styles-factory.spec.ts +++ b/src/file/styles/external-styles-factory.spec.ts @@ -3,7 +3,7 @@ import { expect } from "chai"; import { ExternalStylesFactory } from "./external-styles-factory"; describe("External styles factory", () => { - let externalStyles; + let externalStyles: string; beforeEach(() => { externalStyles = ` diff --git a/src/file/xml-components/default-attributes.ts b/src/file/xml-components/default-attributes.ts index 62d5cb60b4..7585785fbd 100644 --- a/src/file/xml-components/default-attributes.ts +++ b/src/file/xml-components/default-attributes.ts @@ -14,11 +14,14 @@ export abstract class XmlAttributeComponent extends BaseXmlCom } public prepForXml(_: IContext): IXmlableObject { - const attrs = {}; + // eslint-disable-next-line functional/prefer-readonly-type + const attrs: { [key: string]: string } = {}; Object.keys(this.root).forEach((key) => { - const value = this.root[key]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const value = (this.root as any)[key]; if (value !== undefined) { - const newKey = (this.xmlKeys && this.xmlKeys[key]) || key; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const newKey = (this.xmlKeys && (this.xmlKeys as any)[key]) || key; // eslint-disable-next-line functional/immutable-data attrs[newKey] = value; } diff --git a/src/file/xml-components/xmlable-object.ts b/src/file/xml-components/xmlable-object.ts index 3db8da55af..146e911a7c 100644 --- a/src/file/xml-components/xmlable-object.ts +++ b/src/file/xml-components/xmlable-object.ts @@ -2,7 +2,9 @@ export interface IXmlAttribute { readonly [key: string]: string | number | boolean; } export interface IXmlableObject extends Object { - readonly _attr?: IXmlAttribute; + // readonly _attr?: IXmlAttribute; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + readonly [key: string]: any; } // Needed because of: https://github.com/s-panferov/awesome-typescript-loader/issues/432 diff --git a/src/patcher/from-docx.spec.ts b/src/patcher/from-docx.spec.ts index 4ba5a30af5..c9d00207ca 100644 --- a/src/patcher/from-docx.spec.ts +++ b/src/patcher/from-docx.spec.ts @@ -1,7 +1,7 @@ import * as chai from "chai"; import * as sinon from "sinon"; -import * as JSZip from "jszip"; -import * as chaiAsPromised from "chai-as-promised"; +import JSZip from "jszip"; +import chaiAsPromised from "chai-as-promised"; import { ExternalHyperlink, ImageRun, Paragraph, TextRun } from "@file/paragraph"; diff --git a/src/patcher/from-docx.ts b/src/patcher/from-docx.ts index 62afd19091..e7480652fc 100644 --- a/src/patcher/from-docx.ts +++ b/src/patcher/from-docx.ts @@ -1,4 +1,4 @@ -import * as JSZip from "jszip"; +import JSZip from "jszip"; import { Element, js2xml } from "xml-js"; import { ConcreteHyperlink, ExternalHyperlink, ParagraphChild } from "@file/paragraph"; diff --git a/src/patcher/replacer.ts b/src/patcher/replacer.ts index bb0190ac51..17b6b1971a 100644 --- a/src/patcher/replacer.ts +++ b/src/patcher/replacer.ts @@ -1,5 +1,5 @@ import { Element } from "xml-js"; -import * as xml from "xml"; +import xml from "xml"; import { Formatter } from "@export/formatter"; import { IContext, XmlComponent } from "@file/xml-components"; diff --git a/src/patcher/util.ts b/src/patcher/util.ts index 6faef2fb97..7bbc0a2dfd 100644 --- a/src/patcher/util.ts +++ b/src/patcher/util.ts @@ -1,5 +1,5 @@ import { xml2js, Element } from "xml-js"; -import * as xml from "xml"; +import xml from "xml"; import { Formatter } from "@export/formatter"; import { Text } from "@file/paragraph/run/run-components/text"; diff --git a/tsconfig.lib.json b/tsconfig.build.json similarity index 100% rename from tsconfig.lib.json rename to tsconfig.build.json diff --git a/tsconfig.json b/tsconfig.json index 41262ad1d5..abc2d80b0d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,17 +1,32 @@ { "compilerOptions": { - "target": "es6", + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "strictNullChecks": true, "sourceMap": true, "removeComments": true, "preserveConstEnums": true, "outDir": "./build", "rootDir": "./src", - "module": "es6", - "moduleResolution": "node", "declaration": true, - "noUnusedLocals": true, - "noUnusedParameters": true, + "esModuleInterop": true, "baseUrl": "./src", "paths": { "@util/*": ["./util/*"], @@ -22,7 +37,10 @@ }, "ts-node": { "compilerOptions": { - "module": "commonjs" + "module": "ESNext", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true } }, "include": ["src"] diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000000..cf6d557234 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,23 @@ +import { defineConfig } from "vite"; +import { resolve } from "path"; +import tsconfigPaths from "vite-tsconfig-paths"; + +/** @type {import('vite').UserConfig} */ +export default defineConfig({ + plugins: [ + tsconfigPaths(), + + ], + build: { + lib: { + entry: [resolve(__dirname, "src/index.ts")], + name: "docx", + fileName: "index", + formats: ["iife", "es", "cjs", "umd"], + }, + outDir: resolve(__dirname, "dist"), + commonjsOptions: { + include: [/node_modules/], + }, + }, +});