From c0d2248b4cd17b5a6fd88b724c6e21fce7603c36 Mon Sep 17 00:00:00 2001 From: Nick Bernal Date: Thu, 13 Jun 2024 19:20:54 -0700 Subject: [PATCH 1/3] Created super-editor package and imported it into superdoc --- package-lock.json | 2449 +++++++++++++++-- packages/super-editor/.gitignore | 25 + packages/super-editor/README.md | 3 + packages/super-editor/index.html | 12 + packages/super-editor/package.json | 46 + packages/super-editor/src/App.vue | 51 + packages/super-editor/src/app.test.js | 10 + .../super-editor/src/classes/docx-zipper.js | 75 + .../src/classes/docx-zipper.test.js | 52 + .../src/classes/super-converter.js | 315 +++ .../src/classes/super-converter.test.js | 87 + .../src/components/SuperEditor.vue | 52 + .../components/docx-editor/ProseMirror.vue | 107 + .../src/components/docx-editor/commands.js | 5 + .../components/docx-editor/commands/enter.js | 28 + .../src/components/docx-editor/keymap.js | 25 + .../src/dev-components/BasicUpload.vue | 15 + packages/super-editor/src/index.js | 12 + packages/super-editor/src/main.js | 5 + .../super-editor/src/schemas/docx-schema.js | 82 + packages/super-editor/src/style.css | 8 + .../fixtures/fake-contract/fake-contract.docx | Bin 0 -> 14714 bytes .../fixtures/fake-contract/fake-contract.zip | Bin 0 -> 14714 bytes .../fake-contract/[Content_Types].xml | 2 + .../fake-contract/fake-contract/_rels/.rels | 2 + .../fake-contract/docProps/app.xml | 2 + .../fake-contract/docProps/core.xml | 2 + .../word/_rels/document.xml.rels | 2 + .../fake-contract/word/document.xml | 2 + .../fake-contract/word/fontTable.xml | 2 + .../fake-contract/word/settings.xml | 2 + .../fake-contract/word/styles.xml | 2 + .../fake-contract/word/theme/theme1.xml | 2 + .../fake-contract/word/webSettings.xml | 2 + .../src/tests/fixtures/sample/sample.docx | Bin 0 -> 13175 bytes .../tests/fixtures/sample/sample.schema.json | 325 +++ .../src/tests/fixtures/sample/sample.zip | Bin 0 -> 13175 bytes .../sample/sample/[Content_Types].xml | 2 + .../tests/fixtures/sample/sample/_rels/.rels | 2 + .../fixtures/sample/sample/docProps/app.xml | 2 + .../fixtures/sample/sample/docProps/core.xml | 2 + .../sample/word/_rels/document.xml.rels | 2 + .../fixtures/sample/sample/word/document.xml | 2 + .../fixtures/sample/sample/word/fontTable.xml | 2 + .../fixtures/sample/sample/word/settings.xml | 2 + .../fixtures/sample/sample/word/styles.xml | 2 + .../sample/sample/word/theme/theme1.xml | 2 + .../sample/sample/word/webSettings.xml | 2 + packages/super-editor/vite.config.js | 45 + packages/superdoc-vue2/package.json | 10 +- packages/superdoc/package.json | 8 +- packages/superdoc/src/Superdoc.vue | 14 +- packages/superdoc/src/index.js | 1 - packages/superdoc/vite.config.js | 4 +- 54 files changed, 3693 insertions(+), 222 deletions(-) create mode 100644 packages/super-editor/.gitignore create mode 100644 packages/super-editor/README.md create mode 100644 packages/super-editor/index.html create mode 100644 packages/super-editor/package.json create mode 100644 packages/super-editor/src/App.vue create mode 100644 packages/super-editor/src/app.test.js create mode 100644 packages/super-editor/src/classes/docx-zipper.js create mode 100644 packages/super-editor/src/classes/docx-zipper.test.js create mode 100644 packages/super-editor/src/classes/super-converter.js create mode 100644 packages/super-editor/src/classes/super-converter.test.js create mode 100644 packages/super-editor/src/components/SuperEditor.vue create mode 100644 packages/super-editor/src/components/docx-editor/ProseMirror.vue create mode 100644 packages/super-editor/src/components/docx-editor/commands.js create mode 100644 packages/super-editor/src/components/docx-editor/commands/enter.js create mode 100644 packages/super-editor/src/components/docx-editor/keymap.js create mode 100644 packages/super-editor/src/dev-components/BasicUpload.vue create mode 100644 packages/super-editor/src/index.js create mode 100644 packages/super-editor/src/main.js create mode 100644 packages/super-editor/src/schemas/docx-schema.js create mode 100644 packages/super-editor/src/style.css create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract.docx create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract.zip create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/[Content_Types].xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/_rels/.rels create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/app.xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/core.xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/_rels/document.xml.rels create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/document.xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/fontTable.xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/settings.xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/styles.xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/theme/theme1.xml create mode 100644 packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/webSettings.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample.docx create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample.schema.json create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample.zip create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/[Content_Types].xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/_rels/.rels create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/docProps/app.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/docProps/core.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/word/_rels/document.xml.rels create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/word/document.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/word/fontTable.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/word/settings.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/word/styles.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/word/theme/theme1.xml create mode 100644 packages/super-editor/src/tests/fixtures/sample/sample/word/webSettings.xml create mode 100644 packages/super-editor/vite.config.js diff --git a/package-lock.json b/package-lock.json index 8e7a3e8786..b6f708dc8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,487 @@ "packages/*" ] }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "license": "MIT", "bin": { "parser": "bin/babel-parser.js" @@ -23,10 +500,308 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", + "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", + "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz", + "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/runtime": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", - "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "dev": true, "license": "MIT", "dependencies": { @@ -36,6 +811,68 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@css-render/plugin-bem": { "version": "0.15.14", "resolved": "https://registry.npmjs.org/@css-render/plugin-bem/-/plugin-bem-0.15.14.tgz", @@ -64,9 +901,9 @@ "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -82,9 +919,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -100,9 +937,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -118,9 +955,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -136,9 +973,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -154,9 +991,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -172,9 +1009,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -190,9 +1027,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -208,9 +1045,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -226,9 +1063,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -244,9 +1081,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -262,9 +1099,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -280,9 +1117,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -298,9 +1135,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -316,9 +1153,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -334,9 +1171,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -352,9 +1189,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -370,9 +1207,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -388,9 +1225,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -406,9 +1243,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -424,9 +1261,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -442,9 +1279,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -460,9 +1297,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -494,9 +1331,9 @@ } }, "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.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, "license": "MIT", "engines": { @@ -549,6 +1386,7 @@ "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, "license": "Apache-2.0", "dependencies": { @@ -578,8 +1416,44 @@ "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, + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", @@ -587,6 +1461,17 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "license": "MIT" }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", @@ -653,6 +1538,20 @@ "node": ">= 8" } }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.18.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", @@ -908,9 +1807,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==", "dev": true, "license": "MIT" }, @@ -945,6 +1844,142 @@ "vue": "^3.2.25" } }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "vue": "*" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@vue/compiler-core": { "version": "3.4.27", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz", @@ -1004,10 +2039,104 @@ "@vue/shared": "3.4.27" } }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "license": "ISC" + }, "node_modules/@vue/devtools-api": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.2.tgz", - "integrity": "sha512-134clD8u7cBBXdmBbXI282gHGF7T/eAbD/G7mAK2llQF62IbI4ny28IVamZVMoJSvfImC2Xxnj732hXkJvUj6g==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz", + "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==", "license": "MIT" }, "node_modules/@vue/reactivity": { @@ -1196,6 +2325,13 @@ "dev": true, "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1203,6 +2339,13 @@ "devOptional": true, "license": "MIT" }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1221,6 +2364,39 @@ "concat-map": "0.0.1" } }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1231,6 +2407,37 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001633", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001633.tgz", + "integrity": "sha512-6sT0yf/z5jqf8tISAgpJDrmwOpLsrpnyCdD/lOZKvKkkJK4Dn0X5i7KF7THEZhOq+30bmhwBlNEaqPUiHiKtZg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, "node_modules/canvas": { "version": "2.11.2", "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", @@ -1304,6 +2511,19 @@ "color-support": "bin.js" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1318,6 +2538,27 @@ "license": "ISC", "optional": true }, + "node_modules/consolidate": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", + "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", + "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -1370,12 +2611,83 @@ "node": ">=4" } }, + "node_modules/cssstyle": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true, + "license": "MIT" + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -1429,6 +2741,13 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true, + "license": "MIT" + }, "node_modules/decompress-response": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", @@ -1449,6 +2768,26 @@ "dev": true, "license": "MIT" }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -1479,6 +2818,13 @@ "node": ">=6.0.0" } }, + "node_modules/electron-to-chromium": { + "version": "1.4.802", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.802.tgz", + "integrity": "sha512-TnTMUATbgNdPXVSHsxvNVSG0uEd6cSZsANjm8c9HbvflZVVn1yTRcmVXYT1Ma95/ssB/Dcd30AHweH2TE+dNpA==", + "dev": true, + "license": "ISC" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1506,9 +2852,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1519,29 +2865,39 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/escape-string-regexp": { @@ -1852,6 +3208,21 @@ "dev": true, "license": "ISC" }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -1920,6 +3291,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1946,6 +3318,16 @@ "node": ">=10" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -2028,11 +3410,19 @@ "license": "ISC", "optional": true }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true, + "license": "MIT" + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2061,6 +3451,56 @@ "node": ">=12.0.0" } }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -2075,6 +3515,19 @@ "node": ">= 6" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -2141,6 +3594,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -2191,6 +3645,13 @@ "node": ">=8" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2204,6 +3665,13 @@ "dev": true, "license": "ISC" }, + "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, + "license": "MIT" + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2217,6 +3685,134 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz", + "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.4", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.10", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.4", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.17.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -2238,6 +3834,19 @@ "dev": true, "license": "MIT" }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -2325,6 +3934,13 @@ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2332,6 +3948,23 @@ "dev": true, "license": "MIT" }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, "node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -2368,6 +4001,49 @@ "semver": "bin/semver.js" } }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-response": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", @@ -2483,9 +4159,9 @@ } }, "node_modules/nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "license": "MIT", "optional": true }, @@ -2535,6 +4211,13 @@ } } }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "license": "MIT" + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -2578,6 +4261,13 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nwsapi": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2673,6 +4363,19 @@ "node": ">=6" } }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2707,7 +4410,8 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path2d": { "version": "0.2.0", @@ -2738,6 +4442,19 @@ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "license": "ISC" }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/pinia": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", @@ -2823,6 +4540,7 @@ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -2842,6 +4560,7 @@ "resolved": "https://registry.npmjs.org/postcss-nested-import/-/postcss-nested-import-1.3.0.tgz", "integrity": "sha512-n0uARfX3SRntgA1A+fD1n+JvquCbbD43P5EOrRqbuVgzl2xVXA1J90gdmeZ57Xg7/GYs/j9GRKxQD9dzeBP7AA==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.22.4" }, @@ -2898,10 +4617,43 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, + "node_modules/prosemirror-commands": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", + "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz", + "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", + "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, "node_modules/prosemirror-model": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.21.0.tgz", - "integrity": "sha512-zLpS1mVCZLA7VTp82P+BfMiYVPcX1/z0Mf3gsjKZtzMWubwn2pN7CceMV0DycjlgE5JeXPR7UF4hJPbBV98oWA==", + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.21.1.tgz", + "integrity": "sha512-IVBAuMqOfltTr7yPypwpfdGT+6rGAteVOw2FO6GEvCGGa1ZwxLseqC1Eax/EChDvG/xGquB2d/hLdgh3THpsYg==", "license": "MIT", "dependencies": { "orderedmap": "^2.0.0" @@ -2917,9 +4669,9 @@ } }, "node_modules/prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.0.tgz", + "integrity": "sha512-nZOIq/AkBSzCENxUyLm5ltWE53e2PLk65ghMN8qLQptOmDVixZlPqtMeQdiNw0odL9vNpalEjl3upgRkuJ/Jyw==", "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", @@ -2948,9 +4700,9 @@ } }, "node_modules/prosemirror-view": { - "version": "1.33.7", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.7.tgz", - "integrity": "sha512-jo6eMQCtPRwcrA2jISBCnm0Dd2B+szS08BU1Ay+XGiozHo5EZMHfLQE8R5nO4vb1spTH2RW1woZIYXRiQsuP8g==", + "version": "1.33.8", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.8.tgz", + "integrity": "sha512-4PhMr/ufz2cdvFgpUAnZfs+0xij3RsFysreeG9V/utpwX7AJtYCDVyuRxzWoMJIEf4C7wVihuBNMPpFLPCiLQw==", "license": "MIT", "dependencies": { "prosemirror-model": "^1.20.0", @@ -2958,6 +4710,20 @@ "prosemirror-transform": "^1.1.0" } }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true, + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2968,6 +4734,24 @@ "node": ">=6" } }, + "node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -3011,11 +4795,19 @@ "dev": true, "license": "MIT" }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, "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, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -3102,6 +4894,19 @@ "fsevents": "~2.3.2" } }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" + }, + "node_modules/rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3132,12 +4937,32 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/seemly": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/seemly/-/seemly-0.3.8.tgz", @@ -3234,6 +5059,26 @@ "simple-concat": "^1.0.0" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, "node_modules/source-map-js": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", @@ -3301,6 +5146,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/super": { + "resolved": "packages/super-editor", + "link": true + }, + "node_modules/super-editor": { + "resolved": "packages/super-editor", + "link": true + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3319,6 +5172,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3326,6 +5180,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", @@ -3351,6 +5218,42 @@ "dev": true, "license": "MIT" }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -3401,6 +5304,37 @@ "node": ">= 10.0.0" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3411,6 +5345,17 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3444,13 +5389,13 @@ } }, "node_modules/vite": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz", - "integrity": "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.0.tgz", + "integrity": "sha512-hA6vAVK977NyW1Qw+fLvqSo7xDPej7von7C3DwwqPRmnnnK36XEBC/J3j1V5lP8fbt7y0TgTKJbpNGSwM+Bdeg==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.20.1", + "esbuild": "^0.21.3", "postcss": "^8.4.38", "rollup": "^4.13.0" }, @@ -3553,9 +5498,9 @@ } }, "node_modules/vue-eslint-parser": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", - "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", "dev": true, "license": "MIT", "dependencies": { @@ -3577,6 +5522,33 @@ "eslint": ">=6.0.0" } }, + "node_modules/vue-template-babel-compiler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vue-template-babel-compiler/-/vue-template-babel-compiler-1.2.0.tgz", + "integrity": "sha512-CScBSX1/wCdmmZ/Lvj/63p2CCVTS0FMj0F69VRBo73CuJrjvPAPGmeNJ7D/cwt/VS2PduowRWbO8N4Zh4Z3b0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.14.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-proposal-optional-chaining": "^7.14.2", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.5", + "@babel/types": "^7.14.5", + "deepmerge": "^4.2.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.6.0" + } + }, "node_modules/vue-template-compiler": { "version": "2.7.16", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", @@ -3589,6 +5561,13 @@ "he": "^1.2.0" } }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true, + "license": "MIT" + }, "node_modules/vueuc": { "version": "0.4.58", "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.58.tgz", @@ -3608,6 +5587,35 @@ "vue": "^3.0.11" } }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -3615,6 +5623,29 @@ "license": "BSD-2-Clause", "optional": true }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -3669,6 +5700,28 @@ "devOptional": true, "license": "ISC" }, + "node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xml-js": { "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", @@ -3691,6 +5744,13 @@ "node": ">=12" } }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -3711,9 +5771,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/super-editor": { + "version": "0.0.1-alpha.0", + "dependencies": { + "eventemitter3": "^5.0.1", + "jszip": "^3.10.1", + "lodash-es": "^4.17.21", + "pdfjs-dist": "^4.3.136", + "pinia": "^2.1.7", + "prosemirror-commands": "^1.5.2", + "prosemirror-history": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-model": "^1.21.0", + "prosemirror-schema-basic": "^1.2.2", + "prosemirror-schema-list": "^1.3.0", + "prosemirror-view": "^1.33.6", + "uuid": "^9.0.1", + "vue": "^3.4.21", + "xml-js": "^1.6.11" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", + "jsdom": "^24.1.0", + "naive-ui": "^2.38.2", + "postcss-nested": "^6.0.1", + "postcss-nested-import": "^1.3.0", + "vite": "^5.2.12" + } + }, "packages/superdoc": { "name": "@harbour-enterprises/superdoc", - "version": "1.0.0-alpha.8", + "version": "1.0.0-alpha.24", "dependencies": { "eventemitter3": "^5.0.1", "jszip": "^3.10.1", @@ -3724,6 +5812,7 @@ "prosemirror-schema-basic": "^1.2.2", "prosemirror-schema-list": "^1.3.0", "prosemirror-view": "^1.33.6", + "super": "file:../super-editor", "uuid": "^9.0.1", "vue": "^3.4.21", "xml-js": "^1.6.11" @@ -3738,12 +5827,12 @@ }, "packages/superdoc-vue2": { "name": "@harbour-enterprises/superdoc-vue2", - "version": "1.0.1", + "version": "1.0.0.alpha.0", "dependencies": { "uuid": "^9.0.1" }, "devDependencies": { - "@harbour-enterprises/superdoc": "^1.0.1", + "@harbour-enterprises/superdoc": "^1.0.0-alpha.23", "@vitejs/plugin-vue2": "^2.3.1", "eslint": "^8.35.0", "eslint-config-prettier": "^8.7.0", @@ -3757,7 +5846,7 @@ "vue": "^2.6.13" }, "peerDependencies": { - "@harbour-enterprises/superdoc": "^1.0.1", + "@harbour-enterprises/superdoc": "^1.0.0-alpha.23", "vue": "^2.6.13" } }, @@ -3817,6 +5906,8 @@ }, "packages/superdoc-vue2/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], @@ -4155,78 +6246,10 @@ "node": ">=12" } }, - "packages/superdoc-vue2/node_modules/@harbour-enterprises/superdoc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@harbour-enterprises/superdoc/-/superdoc-1.0.1.tgz", - "integrity": "sha512-XmoFz80VDj20CY1ZrOEVwPLLUuMBsxlP6j5hXlWtXAviSGc/0rrWwTaduDLRrNTRZpwnvAMiPcEO8I0WG8E+tQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^5.0.1", - "jszip": "^3.10.1", - "lodash-es": "^4.17.21", - "pdfjs-dist": "^4.3.136", - "pinia": "^2.1.7", - "prosemirror-model": "^1.21.0", - "prosemirror-schema-basic": "^1.2.2", - "prosemirror-schema-list": "^1.3.0", - "prosemirror-view": "^1.33.6", - "uuid": "^9.0.1", - "vue": "^3.4.21", - "xml-js": "^1.6.11" - } - }, - "packages/superdoc-vue2/node_modules/@harbour-enterprises/superdoc/node_modules/@vue/compiler-sfc": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz", - "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/compiler-core": "3.4.27", - "@vue/compiler-dom": "3.4.27", - "@vue/compiler-ssr": "3.4.27", - "@vue/shared": "3.4.27", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.38", - "source-map-js": "^1.2.0" - } - }, - "packages/superdoc-vue2/node_modules/@harbour-enterprises/superdoc/node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "packages/superdoc-vue2/node_modules/@harbour-enterprises/superdoc/node_modules/vue": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz", - "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.4.27", - "@vue/compiler-sfc": "3.4.27", - "@vue/runtime-dom": "3.4.27", - "@vue/server-renderer": "3.4.27", - "@vue/shared": "3.4.27" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "packages/superdoc-vue2/node_modules/@vitejs/plugin-vue2": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.3.1.tgz", + "integrity": "sha512-/ksaaz2SRLN11JQhLdEUhDzOn909WEk99q9t9w+N12GjQCljzv7GyvAbD/p20aBUjHkvpGOoQ+FCOkG+mjDF4A==", "dev": true, "license": "MIT", "engines": { @@ -4239,6 +6262,8 @@ }, "packages/superdoc-vue2/node_modules/@vue/compiler-sfc": { "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", "dev": true, "dependencies": { "@babel/parser": "^7.23.5", @@ -4251,6 +6276,8 @@ }, "packages/superdoc-vue2/node_modules/@vue/compiler-sfc/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -4259,6 +6286,8 @@ }, "packages/superdoc-vue2/node_modules/esbuild": { "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4296,6 +6325,8 @@ }, "packages/superdoc-vue2/node_modules/magic-string": { "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, "license": "MIT", "dependencies": { @@ -4307,6 +6338,8 @@ }, "packages/superdoc-vue2/node_modules/rollup": { "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "license": "MIT", "peer": true, @@ -4323,6 +6356,8 @@ }, "packages/superdoc-vue2/node_modules/vite": { "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", "dev": true, "license": "MIT", "peer": true, @@ -4378,6 +6413,8 @@ }, "packages/superdoc-vue2/node_modules/vite-plugin-vue2": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vite-plugin-vue2/-/vite-plugin-vue2-2.0.3.tgz", + "integrity": "sha512-t3Tu93GWsMHbpeIv66MTO5e/rRAo8/+/eWoUtFYuAdKDMyEnn1dqsrXh+CfG+SJAlxJvcTP8U0eXkzhLjKNyMg==", "dev": true, "license": "MIT", "dependencies": { @@ -4418,6 +6455,8 @@ }, "packages/superdoc-vue2/node_modules/vite-plugin-vue2/node_modules/rollup": { "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "license": "MIT", "bin": { diff --git a/packages/super-editor/.gitignore b/packages/super-editor/.gitignore new file mode 100644 index 0000000000..07f0cbcce1 --- /dev/null +++ b/packages/super-editor/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/super-editor/README.md b/packages/super-editor/README.md new file mode 100644 index 0000000000..12bb31f1c1 --- /dev/null +++ b/packages/super-editor/README.md @@ -0,0 +1,3 @@ +# Super Editor (docx editor) + +Main superdoc text editor component diff --git a/packages/super-editor/index.html b/packages/super-editor/index.html new file mode 100644 index 0000000000..f17fc7505e --- /dev/null +++ b/packages/super-editor/index.html @@ -0,0 +1,12 @@ + + + + + + Super Editor - Dev mode + + +
+ + + diff --git a/packages/super-editor/package.json b/packages/super-editor/package.json new file mode 100644 index 0000000000..74b7a8df7e --- /dev/null +++ b/packages/super-editor/package.json @@ -0,0 +1,46 @@ +{ + "name": "super-editor", + "version": "0.0.1-alpha.0", + "type": "module", + "files": [ + "dist" + ], + "exports": { + ".": { + "import": "./dist/super-editor.es.js", + "require": "./dist/super-editor.cjs.js" + } + }, + "main": "./dist/super-editor.cjs.js", + "module": "./dist/super-editor.es.js", + "scripts": { + "dev": "vite", + "build": "vite build", + "test": "vitest" + }, + "dependencies": { + "eventemitter3": "^5.0.1", + "jszip": "^3.10.1", + "lodash-es": "^4.17.21", + "pdfjs-dist": "^4.3.136", + "pinia": "^2.1.7", + "prosemirror-commands": "^1.5.2", + "prosemirror-history": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-model": "^1.21.0", + "prosemirror-schema-basic": "^1.2.2", + "prosemirror-schema-list": "^1.3.0", + "prosemirror-view": "^1.33.6", + "uuid": "^9.0.1", + "vue": "^3.4.21", + "xml-js": "^1.6.11" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", + "jsdom": "^24.1.0", + "naive-ui": "^2.38.2", + "postcss-nested": "^6.0.1", + "postcss-nested-import": "^1.3.0", + "vite": "^5.2.12" + } +} diff --git a/packages/super-editor/src/App.vue b/packages/super-editor/src/App.vue new file mode 100644 index 0000000000..d825d408f1 --- /dev/null +++ b/packages/super-editor/src/App.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/packages/super-editor/src/app.test.js b/packages/super-editor/src/app.test.js new file mode 100644 index 0000000000..8b1eebc0f0 --- /dev/null +++ b/packages/super-editor/src/app.test.js @@ -0,0 +1,10 @@ +import { mount } from '@vue/test-utils'; +import { describe, it, expect } from 'vitest'; +import App from './App.vue'; + +describe('Developer app', () => { + it('renders properly', () => { + const wrapper = mount(App); + expect(wrapper.text()).toContain('Development playground'); + }); +}); diff --git a/packages/super-editor/src/classes/docx-zipper.js b/packages/super-editor/src/classes/docx-zipper.js new file mode 100644 index 0000000000..160c994986 --- /dev/null +++ b/packages/super-editor/src/classes/docx-zipper.js @@ -0,0 +1,75 @@ +import JSZip from 'jszip'; + +/** + * Class to handle unzipping and zipping of docx files + */ +class DocxZipper { + + constructor(params = {}) { + this.debug = params.debug || false; + this.zip = new JSZip(); + this.files = []; + } + + /** + * Get XML data from the zipped docx + * + * [Content_Types].xml + * _rels/.rels + * word/document.xml + * word/_rels/document.xml.rels + * word/footnotes.xml + * word/endnotes.xml + * word/header1.xml + * word/theme/theme1.xml + * word/settings.xml + * word/styles.xml + * word/webSettings.xml + * word/fontTable.xml + * docProps/core.xml + * docProps/app.xml + * */ + async getXmlData(file) { + const extractedFiles = await this.unzip(file); + const files = Object.entries(extractedFiles.files); + + for (const file of files) { + const [_, zipEntry] = file; + if (zipEntry.name.endsWith('.xml')) { + const content = await zipEntry.async("string") + this.files.push({ + name: zipEntry.name, + content, + }); + } + } + return this.files; + } + + async unzip(file) { + const zip = await this.zip.loadAsync(file); + return zip; + } + + async updateZip(originalZip, newDocumentXmlContent) { + const updatedZip = new JSZip(); + + // Create an array of promises to read all files + const filePromises = []; + + originalZip.forEach((relativePath, zipEntry) => { + const promise = zipEntry.async("uint8array").then((content) => { + updatedZip.file(zipEntry.name, content); + }); + filePromises.push(promise); + }); + + // Wait for all promises to resolve + await Promise.all(filePromises); + + updatedZip.file("word/document.xml", newDocumentXmlContent); + return updatedZip; + } +} + +export default DocxZipper; \ No newline at end of file diff --git a/packages/super-editor/src/classes/docx-zipper.test.js b/packages/super-editor/src/classes/docx-zipper.test.js new file mode 100644 index 0000000000..a6fbdfbeb5 --- /dev/null +++ b/packages/super-editor/src/classes/docx-zipper.test.js @@ -0,0 +1,52 @@ +import path from 'path'; +import fs from 'fs'; +import { describe, it, expect } from 'vitest'; +import DocxZipper from './docx-zipper'; + +async function readFileAsBuffer(filePath) { + const resolvedPath = path.resolve(__dirname, filePath); + return new Promise((resolve, reject) => { + fs.readFile(resolvedPath, (err, data) => { + if (err) { + reject(err); + } else { + // Convert file content to a Buffer + const buffer = Buffer.from(data); + resolve(buffer); + } + }); + }); +} + +describe('DocxZipper - file extraction', () => { + + let zipper; + beforeEach(() => { + zipper = new DocxZipper(); + }); + + it('It can unzip a docx', async () => { + const fileContent = await readFileAsBuffer('../tests/fixtures/sample/sample.docx'); + const fileObject = Buffer.from(fileContent); + const unzippedXml = await zipper.unzip(fileObject); + expect(unzippedXml).toHaveProperty('files'); + }); + + it('It can extract xml files', async () => { + const fileContent = await readFileAsBuffer('../tests/fixtures/sample/sample.docx'); + const fileObject = Buffer.from(fileContent); + const unzippedXml = await zipper.getXmlData(fileObject); + expect(unzippedXml).toBeInstanceOf(Array); + + unzippedXml.forEach((file) => { + expect(file).toHaveProperty('name'); + expect(file.name).toMatch(/\.xml$/); + expect(file).toHaveProperty('content'); + expect(file.content).toMatch(/<\?xml/); + }); + + // Make sure we have document.xml + const documentXml = unzippedXml.find(file => file.name === 'word/document.xml'); + expect(documentXml).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/packages/super-editor/src/classes/super-converter.js b/packages/super-editor/src/classes/super-converter.js new file mode 100644 index 0000000000..905dadd3a7 --- /dev/null +++ b/packages/super-editor/src/classes/super-converter.js @@ -0,0 +1,315 @@ +import xmljs from 'xml-js'; + + +/** + * Class to translate from DOCX XML to Prose Mirror Schema and back + * + * Will need to be updated as we find new docx tags. + */ +class SuperConverter { + + static allowedElements = Object.freeze({ + 'w:document': 'doc', + 'w:body': 'body', + 'w:p': 'paragraph', + 'w:r': 'run', + 'w:t': 'text', + + // Formatting only + 'w:sectPr': 'sectionProperties', + 'w:rPr': 'runProperties', + }); + + constructor(params = null) { + // Suppress logging when true + this.debug = params?.debug || false; + + // XML inputs + this.xml = params?.xml; + this.declaration = null; + + // The JSON converted XML before any processing. This is simply the result of xml2json + this.initialJSON = null; + + // This is the JSON schema that we will be working with + this.json = params?.json; + + // Parse the initial XML, if provided + this.log('Original XML:', this.xml) + if (this.xml) this.parseFromXml(); + } + + log(...args) { + if (this.debug) console.debug(...args); + } + + getTagName(name) { + const keys = Object.keys(SuperConverter.allowedElements) + return keys.find(key => SuperConverter.allowedElements[key] === name); + } + + parseFromXml() { + const result = xmljs.xml2json(this.xml, null, 2); + this.initialJSON = JSON.parse(result); + this.declaration = this.initialJSON.declaration; + } + + getElementName(element) { + const name = element.name || element.type; + return SuperConverter.allowedElements[name]; + } + + getSchema() { + const json = JSON.parse(JSON.stringify(this.initialJSON)); + const startElements = json.elements; + const result = this.convertToJson(startElements[0]); + + this.log('\nSchema updated:', result) + return result; + } + + + /** + * convertToJson + * + * Start with the first element. It is the element + * + * For each element in element.elements + * What element is this? + * Do we have special handling? + * Append it to the tree + */ + convertToJson(element) { + const name = this.getElementName(element); + if (!name) { + this.log('[convertToJson] Missing name', element) + return null + } + + // Start with the basic schema + const item = { + type: name, + content: [], + attrs: { + type: element.type, + attributes: {}, + } + } + + if (name === 'text') { + if (!element.elements) return null; + item.text = element.elements[0]?.text; + } + element.attributes && (item.attrs.attributes = element.attributes); + + // Special handling for some elements + if (item.type === 'text') { + item.content = element.elements; + return item; + } + + if (element.elements && element.elements.length > 0) { + + const currentElements = element.elements; + const sectionPropertiesIndex = currentElements.findIndex(el => el.name === 'w:sectPr'); + const runPropertiesIndex = currentElements.findIndex(el => el.name === 'w:rPr'); + + // Spcial handling for section properties + if (sectionPropertiesIndex > -1) { + const properties = currentElements[sectionPropertiesIndex]; + item.attrs.attributes.sectionProperties = properties; + currentElements.splice(sectionPropertiesIndex, 1); + } + + // Handle elements that are really run properties + // This should be moved out to its own function/functions as we will get more complex + if (runPropertiesIndex > -1) { + const properties = currentElements[runPropertiesIndex]; + item.attrs.attributes.runProperties = properties; + currentElements.splice(runPropertiesIndex, 1); + + const marks = []; + for (let mark of properties.elements) { + const { name } = mark; + + // For now, let's manually handle bold and italic + if (name === 'w:b') marks.push({ type: 'strong' }); + else if (name === 'w:i') marks.push({ type: 'em' }); + } + + if (marks.length) item.marks = marks; + this.log('Run Properties:', properties) + } + + currentElements.forEach(child => { + const newChild = this.convertToJson(child) + if (newChild && Array.isArray(newChild)) { + item.content.push(...newChild); + } else if (newChild) { + item.content.push(newChild); + } + }); + } + return item; + } + + /** + * + * Interim conversion from prose mirror schema to original JSON + * + */ + schemaToXmlJson(data) { + // Remove selection for now + const json = JSON.parse(JSON.stringify(data)); + delete json.selection; + + const firstElement = json.doc; + const result = this.convertElementToJsonXml(firstElement); + + this.log('\n\n XML', result, '\n\n') + return { + declaration: this.declaration, + elements: [result], + } + } + + convertElementToJsonXml(element) { + const currentType = element.type; + const name = this.getTagName(currentType); + const reversedElement = { + type: currentType, + name, + } + + if (element.type === 'text') { + reversedElement.text = element.text; + } + + const hasElements = element.content && element.content.length > 0; + if (hasElements) reversedElement.elements = []; + + // This restores the original attributes, which likely contain formatting / marks + // TODO: Need to actually get the marks on the document as well for export + // Which would be available in a list of element.marks, if any + if (element.attrs?.attributes) { + const runProperties = element.attrs.attributes.runProperties; + if (runProperties && hasElements) { + delete element.attrs.attributes.runProperties; + reversedElement.elements.push(runProperties); + } + + if (element.marks) { + // If a text element gets a mark, then we need to bump up that mark to the run level? + + //const runProps = reversedElement.elements.find(el => el.name === 'w:rPr'); + //this.log('Run runProps (output):', runProps, element); + + // for (let mark of element.marks) { + // const { type } = mark; + // this.log('Mark:', type) + + // if (type === 'strong') reversedElement.elements.unshift({ name: 'w:b', type: 'element' }); + // else if (type === 'em') reversedElement.elements.unshift({ name: 'w:i', type: 'element' }); + // } + } + + const sectionProperties = element.attrs.attributes.properties; + if (sectionProperties) { + delete element.attrs.attributes.properties; + reversedElement.elements.push(sectionProperties); + } + reversedElement.attributes = { ...element.attrs.attributes }; + } + + if (hasElements) { + reversedElement.elements.push(...element.content.map(this.convertElementToJsonXml.bind(this))); + } + + this.log('Reversed Element:', reversedElement) + return reversedElement; + } + + + +/** + * + * Converting from JSON to DOCX XML + * + */ + generateTag(element) { + let tag = `<${element.name}`; + for (let key in element.attributes) { + tag += ` ${key}="${element.attributes[key]}"`; + } + + if (element.name === 'w:t') { + tag += ' xml:space="preserve"' + } + tag += '>'; + return tag; + } + + /** + * Recursively process elements into XML tags manually + */ + processElement(elements) { + let tags = ''; + + for (let element of elements) { + + // Extract properties if present + let properties = ''; + if (element.attributes?.properties) { + properties = element.attributes.properties; + delete element.attributes.properties; + } + + // Generate the opening tag + const tag = this.generateTag(element); + + // Add the opening tag to the result + tags += tag; + + if (element.type === 'text') { + this.log('Text:', element); + tags += element.text; + } + + // Process child elements if any + if (element.elements?.length > 0) { + tags += this.processElement(element.elements); + } + + // Add the closing tag + const closingTag = ``; + tags += closingTag; + + } + + return tags; + } + + /** + * Convert to XML from JSON + */ + jsonToXml(data) { + this.log('\n\n XML DATA', data) + let xmlTag = `'; + + // Document tag + let documentTag = `'; + } +} + +export default SuperConverter; diff --git a/packages/super-editor/src/classes/super-converter.test.js b/packages/super-editor/src/classes/super-converter.test.js new file mode 100644 index 0000000000..80f2221765 --- /dev/null +++ b/packages/super-editor/src/classes/super-converter.test.js @@ -0,0 +1,87 @@ +import path from 'path'; +import fs from 'fs'; +import { describe, it, expect } from 'vitest'; +import SuperConverter from './super-converter'; + +// Helpers to read files +const readFileSync = (pathName) => fs.readFileSync(path.resolve(__dirname, pathName), 'utf-8'); +const getSchemaPath = (fileName) => `../tests/fixtures/${fileName}/${fileName}.schema.json`; + +// Available test files +const testFiles = [ + 'sample', + 'fake-contract' +]; + +// Run tests for each of our test files +const showParserLogging = false; +testFiles.forEach((fileName) => { + + // Run input tests (ie: from docx XML to SCHEMA) + runInputTests(fileName); + + // Run output tests (ie: from SCHEMA to docx XML) + // TODO +}); + +function runInputTests(fileName) { + describe(`XML to SCHEMA tests: ${fileName}`, () => { + let parser; + let currentTestFile = fileName; + let currentXML; + + beforeEach(() => { + const pathName = `../tests/fixtures/${currentTestFile}/${currentTestFile}/word/document.xml`; + currentXML = readFileSync(pathName); + parser = new SuperConverter({ xml: currentXML, debug: showParserLogging }); + }); + + it('can create instance with XML', () => { + expect(parser).toBeTruthy(); + expect(parser).toBeInstanceOf(SuperConverter); + + // When we initialize the instance with XML, it is automatically parsed into initialJSON + expect(parser.xml).toBe(currentXML); + expect(parser.initialJSON).not.toBeNull(); + }); + + it('can parse docx XML into SCHEMA', () => { + expect(parser).toBeTruthy(); + expect(parser).toBeInstanceOf(SuperConverter); + + const schema = parser.getSchema(); + expect(schema).toBeTruthy(); + + // The schema begins with some expected properties + expect(schema).toHaveProperty('content'); + expect(schema).toHaveProperty('type'); + expect(schema).toHaveProperty('attrs'); + expect(schema.type).toBe('doc'); + }); + + it('correctly parses the docx body', () => { + const schema = parser.getSchema(); + expect(schema.content).toHaveLength(1); + + const body = schema.content[0]; + expect(body.type).toBe('body'); + expect(body).toHaveProperty('content'); + expect(body).toHaveProperty('attrs'); + + const attrs = body.attrs; + expect(attrs).toHaveProperty('type'); + expect(attrs.type).toBe('element'); + expect(attrs).toHaveProperty('attributes'); + + // Attributes are the main page details, which should always be present + // This comes from the tag, which we place under the sectionProperties key + const attributes = attrs.attributes.sectionProperties; + expect(attributes).toHaveProperty('type'); + expect(attributes).toHaveProperty('elements'); + + // The properties are inside teh elements array + const properties = attributes.elements; + expect(properties).toBeTruthy(); + }) + }); +} \ No newline at end of file diff --git a/packages/super-editor/src/components/SuperEditor.vue b/packages/super-editor/src/components/SuperEditor.vue new file mode 100644 index 0000000000..ba76030175 --- /dev/null +++ b/packages/super-editor/src/components/SuperEditor.vue @@ -0,0 +1,52 @@ + + + + + \ No newline at end of file diff --git a/packages/super-editor/src/components/docx-editor/ProseMirror.vue b/packages/super-editor/src/components/docx-editor/ProseMirror.vue new file mode 100644 index 0000000000..bf274b12bc --- /dev/null +++ b/packages/super-editor/src/components/docx-editor/ProseMirror.vue @@ -0,0 +1,107 @@ + + + + + + + diff --git a/packages/super-editor/src/components/docx-editor/commands.js b/packages/super-editor/src/components/docx-editor/commands.js new file mode 100644 index 0000000000..9b803bfa90 --- /dev/null +++ b/packages/super-editor/src/components/docx-editor/commands.js @@ -0,0 +1,5 @@ +import { enter } from './commands/enter'; + +export default { + enter +} \ No newline at end of file diff --git a/packages/super-editor/src/components/docx-editor/commands/enter.js b/packages/super-editor/src/components/docx-editor/commands/enter.js new file mode 100644 index 0000000000..fe3d2905a5 --- /dev/null +++ b/packages/super-editor/src/components/docx-editor/commands/enter.js @@ -0,0 +1,28 @@ +export const enter = (state, dispatch) => { + const { $from, $to } = state.selection; + + // Check if selection is empty and within the same parent node + if (!state.selection.empty || !$from.sameParent($to)) return false; + + const parentType = $from.parent.type.name; + + // Helper function to split the node + const splitNode = (pos) => { + if (dispatch) { + const tr = state.tr.split(pos); + dispatch(tr.scrollIntoView()); + } + }; + + // Logic for splitting different parent types + if (parentType === "paragraph") { + splitNode($from.pos); + return true; + } else if (parentType === "run") { + const parentPos = $from.before($from.depth - 1); + splitNode(parentPos); + return true; + } + + return false; +}; \ No newline at end of file diff --git a/packages/super-editor/src/components/docx-editor/keymap.js b/packages/super-editor/src/components/docx-editor/keymap.js new file mode 100644 index 0000000000..29fabcbff1 --- /dev/null +++ b/packages/super-editor/src/components/docx-editor/keymap.js @@ -0,0 +1,25 @@ +import { keymap } from "prosemirror-keymap" +import { toggleMark } from "prosemirror-commands" +import { undo, redo } from "prosemirror-history" +import { chainCommands, splitBlock } from "prosemirror-commands"; +import { DocxSchema } from '@schemas/docx-schema'; +import SuperCommands from './commands'; + +export default function() { + return keymap( + { + "Mod-z": undo, + "Mod-shift-z": redo, + "Mod-y": redo, + "Mod-b": toggleMark(DocxSchema.marks.strong), + "Mod-i": toggleMark(DocxSchema.marks.em), + "Enter": chainCommands(SuperCommands.enter), + + // Just as an example + "Mod-s": (state, dispatch) => { + console.log('Mod-S pressed. State:', state); + return true; + }, + } + ); +} \ No newline at end of file diff --git a/packages/super-editor/src/dev-components/BasicUpload.vue b/packages/super-editor/src/dev-components/BasicUpload.vue new file mode 100644 index 0000000000..636e292605 --- /dev/null +++ b/packages/super-editor/src/dev-components/BasicUpload.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/packages/super-editor/src/index.js b/packages/super-editor/src/index.js new file mode 100644 index 0000000000..a015e68f28 --- /dev/null +++ b/packages/super-editor/src/index.js @@ -0,0 +1,12 @@ +import SuperConverter from "@classes/super-converter"; +import DocxZipper from '@classes/docx-zipper'; +import SuperEditor from '@components/SuperEditor.vue'; + +export { + // Classes + SuperConverter, + DocxZipper, + + // Components + SuperEditor +} \ No newline at end of file diff --git a/packages/super-editor/src/main.js b/packages/super-editor/src/main.js new file mode 100644 index 0000000000..2425c0f745 --- /dev/null +++ b/packages/super-editor/src/main.js @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/packages/super-editor/src/schemas/docx-schema.js b/packages/super-editor/src/schemas/docx-schema.js new file mode 100644 index 0000000000..c99e4189e0 --- /dev/null +++ b/packages/super-editor/src/schemas/docx-schema.js @@ -0,0 +1,82 @@ +import { Schema } from "prosemirror-model" + +/** + * Custom schema for docx files with prose mirror + * Reference: https://github.com/ProseMirror/prosemirror-schema-basic/blob/master/src/schema-basic.ts + */ +const DocxSchema = new Schema({ + nodes: { + + text: { + inline: true, + group: "inline", + }, + + run: { + content: "text*", + toDOM() { return ["run", 0]; }, + parseDOM: [{ tag: "run" }], + inline: true, + group: "inline", + attrs: { + attributes: { default: {} }, + type: { default: null }, + }, + }, + + paragraph: { + content: "inline*", + inline: false, + group: "block", + toDOM() { return ["p", 0]; }, + parseDOM: [{ tag: "p" }], + attrs: { + attributes: { default: {} }, + type: { default: null }, + }, + }, + + body: { + content: "paragraph+", + toDOM() { return ["body", 0]; }, + attrs: { + attributes: { default: {} }, + type: { default: null }, + }, + }, + + doc: { + content: "body", + toDOM() { return ["doc", 0]; }, + parseDOM: [{ tag: "doc" }], + attrs: { + attributes: { default: {} }, + type: { default: null }, + }, + }, + + }, + marks: { + strong: { + parseDOM: [ + { tag: "strong" }, + { tag: "b", getAttrs: (node) => node.style.fontWeight != "normal" && null }, + { style: "font-weight=400", clearMark: m => m.type.name == "strong" }, + { style: "font-weight", getAttrs: (value) => /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null }, + ], + toDOM() { return ["strong", 0]; } + }, + em: { + parseDOM: [ + { tag: "i" }, { tag: "em" }, + { style: "font-style=italic" }, + { style: "font-style=normal", clearMark: m => m.type.name == "em" } + ], + toDOM() { return ["em", 0]; } + } + } +}); + +export { + DocxSchema +} \ No newline at end of file diff --git a/packages/super-editor/src/style.css b/packages/super-editor/src/style.css new file mode 100644 index 0000000000..2738f9a9d6 --- /dev/null +++ b/packages/super-editor/src/style.css @@ -0,0 +1,8 @@ +body, html { + margin: 0; + padding: 0; + background-color: #f0f0f0; + min-height: 100%; + font-family: Arial, Helvetica, sans-serif; + font-size: 14px; +} diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract.docx b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract.docx new file mode 100644 index 0000000000000000000000000000000000000000..1d2276618e1bcaf1c9b7129f9f75fb5152b0f4e1 GIT binary patch literal 14714 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 fmrQ?w|I3KVN + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/_rels/.rels b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/_rels/.rels new file mode 100644 index 0000000000..fdd8c4f371 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/_rels/.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/app.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/app.xml new file mode 100644 index 0000000000..6a67526cc9 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/app.xml @@ -0,0 +1,2 @@ + +426033441Microsoft Office Word0288falsefalse4036falsefalse16.0000 \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/core.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/core.xml new file mode 100644 index 0000000000..5913de20d8 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/docProps/core.xml @@ -0,0 +1,2 @@ + +Nick BernalNick Bernal42024-05-16T16:19:00Z2024-05-16T16:15:00Z2024-05-16T16:19:00Z \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/_rels/document.xml.rels b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/_rels/document.xml.rels new file mode 100644 index 0000000000..0079d06931 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/_rels/document.xml.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/document.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/document.xml new file mode 100644 index 0000000000..d441cd95be --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/document.xml @@ -0,0 +1,2 @@ + +Generic License AgreementThis License Agreement ("Agreement") is made and entered into as of [Date] by and between ____________ , located at ____________ and ____________, located at ____________ ("Licensee").1. Grant of License Licensor hereby grants to Licensee a non-exclusive, non-transferable, revocable license to use the [Licensed Material/Product/Software] ("Licensed Material") solely for ____________ in accordance with the terms and conditions set forth in this Agreement.2. Term and Termination This Agreement shall commence on the date first written above and continue for a period of [term length] unless terminated earlier in accordance with this Agreement. Either party may terminate this Agreement upon ____ days' written notice to the other party. Licensor may terminate this Agreement immediately if Licensee breaches any of its obligations under this Agreement.3. License Fee In consideration for the rights granted herein, Licensee agrees to pay Licensor a license fee of ____________ payable in ____________ installments. Payment is due [payment terms].4. Use Restrictions Licensee agrees to use the Licensed Material solely for the purposes specified in this Agreement. Licensee shall not (a) copy, modify, or create derivative works of the Licensed Material; (b) distribute, sell, or lease the Licensed Material to any third party; (c) reverse engineer, decompile, or disassemble the Licensed Material; or (d) remove any proprietary notices or labels from the Licensed Material.5. Ownership and Intellectual Property Licensor retains all rights, title, and interest in and to the Licensed Material, including all intellectual property rights. Licensee acknowledges that no title to the intellectual property in the Licensed Material is transferred to Licensee under this Agreement.6. Confidentiality Licensee agrees to maintain the confidentiality of any proprietary information disclosed by Licensor under this Agreement. Licensee shall not disclose any such information to any third party without the prior written consent of Licensor.7. Warranties and Disclaimers Licensor warrants that it has the right to grant the license herein. Except as expressly provided in this Agreement, the Licensed Material is provided "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose.8. Limitation of Liability In no event shall Licensor be liable for any indirect, incidental, special, or consequential damages arising out of or in connection with this Agreement, whether in an action in contract, tort, or otherwise, even if Licensor has been advised of the possibility of such damages. Licensor's total liability for any claim arising out of or relating to this Agreement shall not exceed the amount of the license fee paid by Licensee to Licensor.9. Governing Law This Agreement shall be governed by and construed in accordance with the laws of the State of _______ , without regard to its conflict of law principles. Any legal action or proceeding arising under this Agreement will be brought exclusively in the federal or state courts located in _________________, and the parties hereby consent to the personal jurisdiction and venue therein.10. Entire Agreement This Agreement constitutes the entire agreement between the parties regarding the subject matter hereof and supersedes all prior agreements and understandings, whether written or oral, relating to such subject matter. Any modifications or amendments to this Agreement must be in writing and signed by both parties.IN WITNESS WHEREOF, the parties hereto have executed this License Agreement as of the day and year first above written.By: ___________________________Name: ___________________________Title: ___________________________Date: ___________________________By: ___________________________Name: ___________________________Title: ___________________________Date: ___________________________ \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/fontTable.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/fontTable.xml new file mode 100644 index 0000000000..e089428ca7 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/fontTable.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/settings.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/settings.xml new file mode 100644 index 0000000000..fa0d893a1e --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/settings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/styles.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/styles.xml new file mode 100644 index 0000000000..9af29eae10 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/styles.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/theme/theme1.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/theme/theme1.xml new file mode 100644 index 0000000000..a4458fa17d --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/theme/theme1.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/webSettings.xml b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/webSettings.xml new file mode 100644 index 0000000000..181c2dc1e8 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/fake-contract/fake-contract/word/webSettings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample.docx b/packages/super-editor/src/tests/fixtures/sample/sample.docx new file mode 100644 index 0000000000000000000000000000000000000000..eceac1b9f0f064147fd7a4c65788654042dbe96d GIT binary patch literal 13175 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 literal 0 HcmV?d00001 diff --git a/packages/super-editor/src/tests/fixtures/sample/sample.schema.json b/packages/super-editor/src/tests/fixtures/sample/sample.schema.json new file mode 100644 index 0000000000..266acab6de --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample.schema.json @@ -0,0 +1,325 @@ +{ + "type": "doc", + "content": [ + { + "type": "body", + "content": [ + { + "type": "paragraph", + "content": [ + { + "type": "run", + "content": [ + { + "type": "text", + "content": [ + { + "type": "text", + "text": "This is a basic docx document with " + } + ], + "attrs": { + "type": "element", + "attributes": { + "xml:space": "preserve" + } + }, + "text": "This is a basic docx document with " + } + ], + "attrs": { + "type": "element", + "attributes": {} + } + }, + { + "type": "run", + "content": [ + { + "type": "text", + "content": [ + { + "type": "text", + "text": "bold" + } + ], + "attrs": { + "type": "element", + "attributes": {} + }, + "text": "bold" + } + ], + "attrs": { + "type": "element", + "attributes": { + "w:rsidRPr": "00746728", + "runProperties": { + "type": "element", + "name": "w:rPr", + "elements": [ + { + "type": "element", + "name": "w:b" + }, + { + "type": "element", + "name": "w:bCs" + } + ] + } + } + }, + "marks": [ + { + "type": "strong" + } + ] + }, + { + "type": "run", + "content": [ + { + "type": "text", + "content": [ + { + "type": "text", + "text": " and " + } + ], + "attrs": { + "type": "element", + "attributes": { + "xml:space": "preserve" + } + }, + "text": " and " + } + ], + "attrs": { + "type": "element", + "attributes": {} + } + }, + { + "type": "run", + "content": [ + { + "type": "text", + "content": [ + { + "type": "text", + "text": "italics" + } + ], + "attrs": { + "type": "element", + "attributes": {} + }, + "text": "italics" + } + ], + "attrs": { + "type": "element", + "attributes": { + "w:rsidRPr": "00746728", + "runProperties": { + "type": "element", + "name": "w:rPr", + "elements": [ + { + "type": "element", + "name": "w:i" + }, + { + "type": "element", + "name": "w:iCs" + } + ] + } + } + }, + "marks": [ + { + "type": "em" + } + ] + }, + { + "type": "run", + "content": [ + { + "type": "text", + "content": [ + { + "type": "text", + "text": ". " + } + ], + "attrs": { + "type": "element", + "attributes": { + "xml:space": "preserve" + } + }, + "text": ". " + } + ], + "attrs": { + "type": "element", + "attributes": {} + } + } + ], + "attrs": { + "type": "element", + "attributes": { + "w14:paraId": "44621174", + "w14:textId": "6D5C378D", + "w:rsidR": "003C58BC", + "w:rsidRDefault": "00746728" + } + } + }, + { + "type": "paragraph", + "content": [], + "attrs": { + "type": "element", + "attributes": { + "w14:paraId": "755418E4", + "w14:textId": "77777777", + "w:rsidR": "00746728", + "w:rsidRDefault": "00746728" + } + } + }, + { + "type": "paragraph", + "content": [ + { + "type": "run", + "content": [ + { + "type": "text", + "content": [ + { + "type": "text", + "text": "Here is a new paragraph." + } + ], + "attrs": { + "type": "element", + "attributes": {} + }, + "text": "Here is a new paragraph." + } + ], + "attrs": { + "type": "element", + "attributes": {} + } + } + ], + "attrs": { + "type": "element", + "attributes": { + "w14:paraId": "1026E62B", + "w14:textId": "3F58C8E7", + "w:rsidR": "00746728", + "w:rsidRDefault": "00746728" + } + } + } + ], + "attrs": { + "type": "element", + "attributes": { + "sectionProperties": { + "type": "element", + "name": "w:sectPr", + "attributes": { + "w:rsidR": "00746728" + }, + "elements": [ + { + "type": "element", + "name": "w:pgSz", + "attributes": { + "w:w": "12240", + "w:h": "15840" + } + }, + { + "type": "element", + "name": "w:pgMar", + "attributes": { + "w:top": "1440", + "w:right": "1440", + "w:bottom": "1440", + "w:left": "1440", + "w:header": "720", + "w:footer": "720", + "w:gutter": "0" + } + }, + { + "type": "element", + "name": "w:cols", + "attributes": { + "w:space": "720" + } + }, + { + "type": "element", + "name": "w:docGrid", + "attributes": { + "w:linePitch": "360" + } + } + ] + } + } + } + } + ], + "attrs": { + "type": "element", + "attributes": { + "xmlns:wpc": "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", + "xmlns:cx": "http://schemas.microsoft.com/office/drawing/2014/chartex", + "xmlns:cx1": "http://schemas.microsoft.com/office/drawing/2015/9/8/chartex", + "xmlns:cx2": "http://schemas.microsoft.com/office/drawing/2015/10/21/chartex", + "xmlns:cx3": "http://schemas.microsoft.com/office/drawing/2016/5/9/chartex", + "xmlns:cx4": "http://schemas.microsoft.com/office/drawing/2016/5/10/chartex", + "xmlns:cx5": "http://schemas.microsoft.com/office/drawing/2016/5/11/chartex", + "xmlns:cx6": "http://schemas.microsoft.com/office/drawing/2016/5/12/chartex", + "xmlns:cx7": "http://schemas.microsoft.com/office/drawing/2016/5/13/chartex", + "xmlns:cx8": "http://schemas.microsoft.com/office/drawing/2016/5/14/chartex", + "xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006", + "xmlns:aink": "http://schemas.microsoft.com/office/drawing/2016/ink", + "xmlns:am3d": "http://schemas.microsoft.com/office/drawing/2017/model3d", + "xmlns:o": "urn:schemas-microsoft-com:office:office", + "xmlns:oel": "http://schemas.microsoft.com/office/2019/extlst", + "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "xmlns:m": "http://schemas.openxmlformats.org/officeDocument/2006/math", + "xmlns:v": "urn:schemas-microsoft-com:vml", + "xmlns:wp14": "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", + "xmlns:wp": "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + "xmlns:w10": "urn:schemas-microsoft-com:office:word", + "xmlns:w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "xmlns:w14": "http://schemas.microsoft.com/office/word/2010/wordml", + "xmlns:w15": "http://schemas.microsoft.com/office/word/2012/wordml", + "xmlns:w16cex": "http://schemas.microsoft.com/office/word/2018/wordml/cex", + "xmlns:w16cid": "http://schemas.microsoft.com/office/word/2016/wordml/cid", + "xmlns:w16": "http://schemas.microsoft.com/office/word/2018/wordml", + "xmlns:w16sdtdh": "http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash", + "xmlns:w16se": "http://schemas.microsoft.com/office/word/2015/wordml/symex", + "xmlns:wpg": "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", + "xmlns:wpi": "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", + "xmlns:wne": "http://schemas.microsoft.com/office/word/2006/wordml", + "xmlns:wps": "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", + "mc:Ignorable": "w14 w15 w16se w16cid w16 w16cex w16sdtdh wp14" + } + } +} \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample.zip b/packages/super-editor/src/tests/fixtures/sample/sample.zip new file mode 100644 index 0000000000000000000000000000000000000000..eceac1b9f0f064147fd7a4c65788654042dbe96d GIT binary patch literal 13175 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 literal 0 HcmV?d00001 diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/[Content_Types].xml b/packages/super-editor/src/tests/fixtures/sample/sample/[Content_Types].xml new file mode 100644 index 0000000000..aa8ac0e7c5 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/[Content_Types].xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/_rels/.rels b/packages/super-editor/src/tests/fixtures/sample/sample/_rels/.rels new file mode 100644 index 0000000000..fdd8c4f371 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/_rels/.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/docProps/app.xml b/packages/super-editor/src/tests/fixtures/sample/sample/docProps/app.xml new file mode 100644 index 0000000000..dfea2d07c5 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/docProps/app.xml @@ -0,0 +1,2 @@ + +011169Microsoft Office Word011falsefalse79falsefalse16.0000 \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/docProps/core.xml b/packages/super-editor/src/tests/fixtures/sample/sample/docProps/core.xml new file mode 100644 index 0000000000..4d46797bbe --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/docProps/core.xml @@ -0,0 +1,2 @@ + +Nick BernalNick Bernal32024-05-01T21:39:00Z2024-06-11T15:32:00Z \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/word/_rels/document.xml.rels b/packages/super-editor/src/tests/fixtures/sample/sample/word/_rels/document.xml.rels new file mode 100644 index 0000000000..0079d06931 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/word/_rels/document.xml.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/word/document.xml b/packages/super-editor/src/tests/fixtures/sample/sample/word/document.xml new file mode 100644 index 0000000000..8dfdf8ea5b --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/word/document.xml @@ -0,0 +1,2 @@ + +This is a basic docx document with bold and italics. Here is a new paragraph. \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/word/fontTable.xml b/packages/super-editor/src/tests/fixtures/sample/sample/word/fontTable.xml new file mode 100644 index 0000000000..e1edcf0007 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/word/fontTable.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/word/settings.xml b/packages/super-editor/src/tests/fixtures/sample/sample/word/settings.xml new file mode 100644 index 0000000000..90453f3eb4 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/word/settings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/word/styles.xml b/packages/super-editor/src/tests/fixtures/sample/sample/word/styles.xml new file mode 100644 index 0000000000..6dac1ac313 --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/word/styles.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/word/theme/theme1.xml b/packages/super-editor/src/tests/fixtures/sample/sample/word/theme/theme1.xml new file mode 100644 index 0000000000..5add55f6ca --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/word/theme/theme1.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/src/tests/fixtures/sample/sample/word/webSettings.xml b/packages/super-editor/src/tests/fixtures/sample/sample/word/webSettings.xml new file mode 100644 index 0000000000..71f223e71f --- /dev/null +++ b/packages/super-editor/src/tests/fixtures/sample/sample/word/webSettings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/super-editor/vite.config.js b/packages/super-editor/vite.config.js new file mode 100644 index 0000000000..b4df1a08bf --- /dev/null +++ b/packages/super-editor/vite.config.js @@ -0,0 +1,45 @@ +import { defineConfig } from 'vite' +import { fileURLToPath, URL } from 'node:url' +import vue from '@vitejs/plugin-vue' + +export default defineConfig({ + plugins: [vue()], + test: { + globals: true, + environment: 'jsdom', + }, + build: { + target: 'es2022', + lib: { + entry: "src/index.js", + formats: ['es', 'cjs'], + name: "super-editor", + fileName: (format) => `super-editor.${format}.js` + }, + rollupOptions: { + external: ['vue'], + output: { + globals: { + vue: 'Vue' + } + } + }, + minify: false, + sourcemap: true, + esbuild: { + drop: [], + }, + }, + server: { + port: 9096, + }, + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + '@classes': fileURLToPath(new URL('./src/classes', import.meta.url)), + '@components': fileURLToPath(new URL('./src/components', import.meta.url)), + '@schemas': fileURLToPath(new URL('./src/schemas', import.meta.url)), + }, + extensions: ['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json'], + }, +}) diff --git a/packages/superdoc-vue2/package.json b/packages/superdoc-vue2/package.json index 19ec59844c..cb6bdc4b4a 100644 --- a/packages/superdoc-vue2/package.json +++ b/packages/superdoc-vue2/package.json @@ -1,6 +1,6 @@ { "name": "@harbour-enterprises/superdoc-vue2", - "version": "1.0.1", + "version": "1.0.0.alpha.0", "type": "module", "files": [ "dist" @@ -24,7 +24,7 @@ "test:ci": "NODE_ENV=test vitest --silent" }, "devDependencies": { - "@harbour-enterprises/superdoc": "^1.0.1", + "@harbour-enterprises/superdoc": "^1.0.0-alpha.23", "@vitejs/plugin-vue2": "^2.3.1", "eslint": "^8.35.0", "eslint-config-prettier": "^8.7.0", @@ -38,13 +38,9 @@ "vue": "^2.6.13" }, "peerDependencies": { - "@harbour-enterprises/superdoc": "^1.0.1", + "@harbour-enterprises/superdoc": "^1.0.0-alpha.23", "vue": "^2.6.13" }, - "repository": "https://github.com/Harbour-Enterprises/Superdoc.git", - "publishConfig": { - "registry": "https://npm.pkg.github.com/" - }, "dependencies": { "uuid": "^9.0.1" } diff --git a/packages/superdoc/package.json b/packages/superdoc/package.json index 9bbf053ea0..e4857e5e81 100644 --- a/packages/superdoc/package.json +++ b/packages/superdoc/package.json @@ -1,7 +1,7 @@ { "name": "@harbour-enterprises/superdoc", "type": "module", - "version": "1.0.0-alpha.8", + "version": "1.0.0-alpha.24", "files": [ "dist" ], @@ -17,10 +17,11 @@ "scripts": { "dev": "vite", "build": "vite build", - "preview": "vite preview" + "deploy": "npm version prerelease && npm run build && npm publish" }, "dependencies": { "eventemitter3": "^5.0.1", + "super": "file:../super-editor", "jszip": "^3.10.1", "lodash-es": "^4.17.21", "pdfjs-dist": "^4.3.136", @@ -39,6 +40,5 @@ "postcss-nested": "^6.0.1", "postcss-nested-import": "^1.3.0", "vite": "^5.2.12" - }, - "repository": "https://github.com/Harbour-Enterprises/Superdoc.git" + } } diff --git a/packages/superdoc/src/Superdoc.vue b/packages/superdoc/src/Superdoc.vue index 1d63064f7b..ec0bf10c99 100644 --- a/packages/superdoc/src/Superdoc.vue +++ b/packages/superdoc/src/Superdoc.vue @@ -10,6 +10,8 @@ import HrbrFieldsLayer from '@/components/HrbrFieldsLayer/HrbrFieldsLayer.vue'; import { useSuperdocStore } from '@/stores/superdoc-store'; import { useCommentsStore } from '@/stores/comments-store'; +import { SuperEditor } from 'super'; + // Stores const superdocStore = useSuperdocStore(); const commentsStore = useCommentsStore(); @@ -136,6 +138,7 @@ onBeforeUnmount(() => {