diff --git a/.eslintrc.json b/.eslintrc.json index be858c772..acbe35c2a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,4 +1,5 @@ { + "root": true, "env": { "browser": true, "es2021": true, @@ -6,15 +7,27 @@ }, "extends": [ "eslint:recommended", + "plugin:@typescript-eslint/recommended", "plugin:vue/vue3-recommended", "plugin:prettier/recommended", "prettier" ], "parserOptions": { + "parser": { + "js": "espree", + "jsx": "espree", + "cjs": "espree", + "mjs": "espree", + "ts": "@typescript-eslint/parser" + }, "ecmaVersion": "latest", - "sourceType": "module" + "sourceType": "module", + "extraFileExtensions": [".vue"], + "ecmaFeatures": { + "jsx": true + } }, - "plugins": ["vue"], + "plugins": ["@typescript-eslint", "vue"], "rules": { "no-console": "off", "vue/no-v-html": "off", diff --git a/.npmrc b/.npmrc index 34717ad78..fe10d3115 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,3 @@ fetch-retry-mintimeout=20000 fetch-retry-maxtimeout=120000 +auto-install-peers=true diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 686295e60..000000000 --- a/jsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["src/*"] - } - }, - "exclude": ["node_modules", "dist"] -} diff --git a/lib/components/index.js b/lib/components/index.js index 67f1a74c1..31c3916e0 100644 --- a/lib/components/index.js +++ b/lib/components/index.js @@ -36,105 +36,105 @@ export { default as NavItem } from './nav/NavItem.vue' export { default as NavRow } from './nav/NavRow.vue' export { default as NavStack } from './nav/NavStack.vue' -export { default as AlignLeftIcon } from '@/assets/icons/align-left.svg' -export { default as ArchiveIcon } from '@/assets/icons/archive.svg' -export { default as AsteriskIcon } from '@/assets/icons/asterisk.svg' -export { default as BellIcon } from '@/assets/icons/bell.svg' -export { default as BellRingIcon } from '@/assets/icons/bell-ring.svg' -export { default as BookIcon } from '@/assets/icons/book.svg' -export { default as BoxIcon } from '@/assets/icons/box.svg' -export { default as CalendarIcon } from '@/assets/icons/calendar.svg' -export { default as ChartIcon } from '@/assets/icons/chart.svg' -export { default as CheckIcon } from '@/assets/icons/check.svg' -export { default as CheckCircleIcon } from '@/assets/icons/check-circle.svg' -export { default as ChevronLeftIcon } from '@/assets/icons/chevron-left.svg' -export { default as ChevronRightIcon } from '@/assets/icons/chevron-right.svg' -export { default as ClearIcon } from '@/assets/icons/clear.svg' -export { default as ClientIcon } from '@/assets/icons/client.svg' -export { default as ClipboardCopyIcon } from '@/assets/icons/clipboard-copy.svg' -export { default as CodeIcon } from '@/assets/icons/code.svg' -export { default as CoinsIcon } from '@/assets/icons/coins.svg' -export { default as ContractIcon } from '@/assets/icons/contract.svg' -export { default as CopyrightIcon } from '@/assets/icons/copyright.svg' -export { default as CurrencyIcon } from '@/assets/icons/currency.svg' -export { default as DashboardIcon } from '@/assets/icons/dashboard.svg' -export { default as DownloadIcon } from '@/assets/icons/download.svg' -export { default as DropdownIcon } from '@/assets/icons/dropdown.svg' -export { default as EditIcon } from '@/assets/icons/edit.svg' -export { default as ExitIcon } from '@/assets/icons/x.svg' -export { default as ExpandIcon } from '@/assets/icons/expand.svg' -export { default as ExternalIcon } from '@/assets/icons/external.svg' -export { default as EyeIcon } from '@/assets/icons/eye.svg' -export { default as EyeOffIcon } from '@/assets/icons/eye-off.svg' -export { default as FileIcon } from '@/assets/icons/file.svg' -export { default as FileTextIcon } from '@/assets/icons/file-text.svg' -export { default as FilterIcon } from '@/assets/icons/filter.svg' -export { default as FolderOpenIcon } from '@/assets/icons/folder-open.svg' -export { default as FolderSearchIcon } from '@/assets/icons/folder-search.svg' -export { default as GapIcon } from '@/assets/icons/gap.svg' -export { default as GitHubIcon } from '@/assets/icons/github.svg' -export { default as GlobeIcon } from '@/assets/icons/globe.svg' -export { default as GridIcon } from '@/assets/icons/grid.svg' -export { default as HamburgerIcon } from '@/assets/icons/hamburger.svg' -export { default as HammerIcon } from '@/assets/icons/hammer.svg' -export { default as HashIcon } from '@/assets/icons/hash.svg' -export { default as HeartIcon } from '@/assets/icons/heart.svg' -export { default as HeartHandshakeIcon } from '@/assets/icons/heart-handshake.svg' -export { default as HistoryIcon } from '@/assets/icons/history.svg' -export { default as HomeIcon } from '@/assets/icons/home.svg' -export { default as ImageIcon } from '@/assets/icons/image.svg' -export { default as InfoIcon } from '@/assets/icons/info.svg' -export { default as IssuesIcon } from '@/assets/icons/issues.svg' -export { default as LeftArrowIcon } from '@/assets/icons/left-arrow.svg' -export { default as LibraryIcon } from '@/assets/icons/library.svg' -export { default as LightBulbIcon } from '@/assets/icons/light-bulb.svg' -export { default as LinkIcon } from '@/assets/icons/link.svg' -export { default as ListIcon } from '@/assets/icons/list.svg' -export { default as LockIcon } from '@/assets/icons/lock.svg' -export { default as LogInIcon } from '@/assets/icons/log-in.svg' -export { default as LogOutIcon } from '@/assets/icons/log-out.svg' -export { default as MoonIcon } from '@/assets/icons/moon.svg' -export { default as OmorphiaIcon } from '@/assets/icons/omorphia.svg' -export { default as PaintBrushIcon } from '@/assets/icons/paintbrush.svg' -export { default as PlayIcon } from '@/assets/icons/play.svg' -export { default as PlusIcon } from '@/assets/icons/plus.svg' -export { default as ReportIcon } from '@/assets/icons/report.svg' -export { default as RightArrowIcon } from '@/assets/icons/right-arrow.svg' -export { default as SaveIcon } from '@/assets/icons/save.svg' -export { default as ScaleIcon } from '@/assets/icons/scale.svg' -export { default as SearchIcon } from '@/assets/icons/search.svg' -export { default as SendIcon } from '@/assets/icons/send.svg' -export { default as ServerIcon } from '@/assets/icons/server.svg' -export { default as SettingsIcon } from '@/assets/icons/settings.svg' -export { default as ShieldIcon } from '@/assets/icons/shield.svg' -export { default as SlashIcon } from '@/assets/icons/slash.svg' -export { default as StarIcon } from '@/assets/icons/star.svg' -export { default as StopCircleIcon } from '@/assets/icons/stop-circle.svg' -export { default as SunIcon } from '@/assets/icons/sun.svg' -export { default as SunriseIcon } from '@/assets/icons/sunrise.svg' -export { default as TagIcon } from '@/assets/icons/tag.svg' -export { default as TagsIcon } from '@/assets/icons/tags.svg' -export { default as TerminalSquareIcon } from '@/assets/icons/terminal-square.svg' -export { default as TransferIcon } from '@/assets/icons/transfer.svg' -export { default as TrashIcon } from '@/assets/icons/trash.svg' -export { default as UndoIcon } from '@/assets/icons/undo.svg' -export { default as UnknownIcon } from '@/assets/icons/unknown.svg' -export { default as UnknownDonationIcon } from '@/assets/icons/unknown-donation.svg' -export { default as UpdatedIcon } from '@/assets/icons/updated.svg' -export { default as UploadIcon } from '@/assets/icons/upload.svg' -export { default as UserIcon } from '@/assets/icons/user.svg' -export { default as UserPlusIcon } from '@/assets/icons/user-plus.svg' -export { default as UserXIcon } from '@/assets/icons/user-x.svg' -export { default as UsersIcon } from '@/assets/icons/users.svg' -export { default as VersionIcon } from '@/assets/icons/version.svg' -export { default as WikiIcon } from '@/assets/icons/wiki.svg' -export { default as XIcon } from '@/assets/icons/x.svg' -export { default as XCircleIcon } from '@/assets/icons/x-circle.svg' -export { default as MailIcon } from '@/assets/icons/mail.svg' -export { default as ShareIcon } from '@/assets/icons/share.svg' +export { default as AlignLeftIcon } from '@/assets/icons/align-left.svg?component' +export { default as ArchiveIcon } from '@/assets/icons/archive.svg?component' +export { default as AsteriskIcon } from '@/assets/icons/asterisk.svg?component' +export { default as BellIcon } from '@/assets/icons/bell.svg?component' +export { default as BellRingIcon } from '@/assets/icons/bell-ring.svg?component' +export { default as BookIcon } from '@/assets/icons/book.svg?component' +export { default as BoxIcon } from '@/assets/icons/box.svg?component' +export { default as CalendarIcon } from '@/assets/icons/calendar.svg?component' +export { default as ChartIcon } from '@/assets/icons/chart.svg?component' +export { default as CheckIcon } from '@/assets/icons/check.svg?component' +export { default as CheckCircleIcon } from '@/assets/icons/check-circle.svg?component' +export { default as ChevronLeftIcon } from '@/assets/icons/chevron-left.svg?component' +export { default as ChevronRightIcon } from '@/assets/icons/chevron-right.svg?component' +export { default as ClearIcon } from '@/assets/icons/clear.svg?component' +export { default as ClientIcon } from '@/assets/icons/client.svg?component' +export { default as ClipboardCopyIcon } from '@/assets/icons/clipboard-copy.svg?component' +export { default as CodeIcon } from '@/assets/icons/code.svg?component' +export { default as CoinsIcon } from '@/assets/icons/coins.svg?component' +export { default as ContractIcon } from '@/assets/icons/contract.svg?component' +export { default as CopyrightIcon } from '@/assets/icons/copyright.svg?component' +export { default as CurrencyIcon } from '@/assets/icons/currency.svg?component' +export { default as DashboardIcon } from '@/assets/icons/dashboard.svg?component' +export { default as DownloadIcon } from '@/assets/icons/download.svg?component' +export { default as DropdownIcon } from '@/assets/icons/dropdown.svg?component' +export { default as EditIcon } from '@/assets/icons/edit.svg?component' +export { default as ExitIcon } from '@/assets/icons/x.svg?component' +export { default as ExpandIcon } from '@/assets/icons/expand.svg?component' +export { default as ExternalIcon } from '@/assets/icons/external.svg?component' +export { default as EyeIcon } from '@/assets/icons/eye.svg?component' +export { default as EyeOffIcon } from '@/assets/icons/eye-off.svg?component' +export { default as FileIcon } from '@/assets/icons/file.svg?component' +export { default as FileTextIcon } from '@/assets/icons/file-text.svg?component' +export { default as FilterIcon } from '@/assets/icons/filter.svg?component' +export { default as FolderOpenIcon } from '@/assets/icons/folder-open.svg?component' +export { default as FolderSearchIcon } from '@/assets/icons/folder-search.svg?component' +export { default as GapIcon } from '@/assets/icons/gap.svg?component' +export { default as GitHubIcon } from '@/assets/icons/github.svg?component' +export { default as GlobeIcon } from '@/assets/icons/globe.svg?component' +export { default as GridIcon } from '@/assets/icons/grid.svg?component' +export { default as HamburgerIcon } from '@/assets/icons/hamburger.svg?component' +export { default as HammerIcon } from '@/assets/icons/hammer.svg?component' +export { default as HashIcon } from '@/assets/icons/hash.svg?component' +export { default as HeartIcon } from '@/assets/icons/heart.svg?component' +export { default as HeartHandshakeIcon } from '@/assets/icons/heart-handshake.svg?component' +export { default as HistoryIcon } from '@/assets/icons/history.svg?component' +export { default as HomeIcon } from '@/assets/icons/home.svg?component' +export { default as ImageIcon } from '@/assets/icons/image.svg?component' +export { default as InfoIcon } from '@/assets/icons/info.svg?component' +export { default as IssuesIcon } from '@/assets/icons/issues.svg?component' +export { default as LeftArrowIcon } from '@/assets/icons/left-arrow.svg?component' +export { default as LibraryIcon } from '@/assets/icons/library.svg?component' +export { default as LightBulbIcon } from '@/assets/icons/light-bulb.svg?component' +export { default as LinkIcon } from '@/assets/icons/link.svg?component' +export { default as ListIcon } from '@/assets/icons/list.svg?component' +export { default as LockIcon } from '@/assets/icons/lock.svg?component' +export { default as LogInIcon } from '@/assets/icons/log-in.svg?component' +export { default as LogOutIcon } from '@/assets/icons/log-out.svg?component' +export { default as MoonIcon } from '@/assets/icons/moon.svg?component' +export { default as OmorphiaIcon } from '@/assets/icons/omorphia.svg?component' +export { default as PaintBrushIcon } from '@/assets/icons/paintbrush.svg?component' +export { default as PlayIcon } from '@/assets/icons/play.svg?component' +export { default as PlusIcon } from '@/assets/icons/plus.svg?component' +export { default as ReportIcon } from '@/assets/icons/report.svg?component' +export { default as RightArrowIcon } from '@/assets/icons/right-arrow.svg?component' +export { default as SaveIcon } from '@/assets/icons/save.svg?component' +export { default as ScaleIcon } from '@/assets/icons/scale.svg?component' +export { default as SearchIcon } from '@/assets/icons/search.svg?component' +export { default as SendIcon } from '@/assets/icons/send.svg?component' +export { default as ServerIcon } from '@/assets/icons/server.svg?component' +export { default as SettingsIcon } from '@/assets/icons/settings.svg?component' +export { default as ShieldIcon } from '@/assets/icons/shield.svg?component' +export { default as SlashIcon } from '@/assets/icons/slash.svg?component' +export { default as StarIcon } from '@/assets/icons/star.svg?component' +export { default as StopCircleIcon } from '@/assets/icons/stop-circle.svg?component' +export { default as SunIcon } from '@/assets/icons/sun.svg?component' +export { default as SunriseIcon } from '@/assets/icons/sunrise.svg?component' +export { default as TagIcon } from '@/assets/icons/tag.svg?component' +export { default as TagsIcon } from '@/assets/icons/tags.svg?component' +export { default as TerminalSquareIcon } from '@/assets/icons/terminal-square.svg?component' +export { default as TransferIcon } from '@/assets/icons/transfer.svg?component' +export { default as TrashIcon } from '@/assets/icons/trash.svg?component' +export { default as UndoIcon } from '@/assets/icons/undo.svg?component' +export { default as UnknownIcon } from '@/assets/icons/unknown.svg?component' +export { default as UnknownDonationIcon } from '@/assets/icons/unknown-donation.svg?component' +export { default as UpdatedIcon } from '@/assets/icons/updated.svg?component' +export { default as UploadIcon } from '@/assets/icons/upload.svg?component' +export { default as UserIcon } from '@/assets/icons/user.svg?component' +export { default as UserPlusIcon } from '@/assets/icons/user-plus.svg?component' +export { default as UserXIcon } from '@/assets/icons/user-x.svg?component' +export { default as UsersIcon } from '@/assets/icons/users.svg?component' +export { default as VersionIcon } from '@/assets/icons/version.svg?component' +export { default as WikiIcon } from '@/assets/icons/wiki.svg?component' +export { default as XIcon } from '@/assets/icons/x.svg?component' +export { default as XCircleIcon } from '@/assets/icons/x-circle.svg?component' +export { default as MailIcon } from '@/assets/icons/mail.svg?component' +export { default as ShareIcon } from '@/assets/icons/share.svg?component' -export { default as MastodonIcon } from '@/assets/external/mastodon.svg' -export { default as RedditIcon } from '@/assets/external/reddit.svg' -export { default as TwitterIcon } from '@/assets/external/twitter.svg' +export { default as MastodonIcon } from '@/assets/external/mastodon.svg?component' +export { default as RedditIcon } from '@/assets/external/reddit.svg?component' +export { default as TwitterIcon } from '@/assets/external/twitter.svg?component' -export { default as ModrinthIcon } from '@/assets/branding/logo.svg' +export { default as ModrinthIcon } from '@/assets/branding/logo.svg?component' diff --git a/lib/helpers/index.js b/lib/helpers/index.js index 0e4b90e76..1ecc93168 100644 --- a/lib/helpers/index.js +++ b/lib/helpers/index.js @@ -1,3 +1,3 @@ -export * from './highlight' -export * from './parse' -export * from './utils' +export * from './highlight.js' +export * from './parse.js' +export * from './utils.js' diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 52cf8c3a2..000000000 --- a/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -import * as components from './components' -import FloatingVue from 'floating-vue' - -function install(app) { - for (const key in components) { - app.component(key, components[key]) - } - app.use(FloatingVue) -} - -export default { install } -export * from './components' -export * from './helpers' - -import './assets/omorphia.scss' diff --git a/lib/index.ts b/lib/index.ts new file mode 100644 index 000000000..450660b8a --- /dev/null +++ b/lib/index.ts @@ -0,0 +1,16 @@ +import * as components from './components/index.js' +import FloatingVue from 'floating-vue' +import { Plugin } from 'vue' + +const plugin: Plugin = (app) => { + for (const key in components) { + app.component(key, components[key as keyof typeof components]) + } + app.use(FloatingVue) +} + +export default plugin +export * from './components/index.js' +export * from './helpers/index.js' + +import './assets/omorphia.scss' diff --git a/lib/vite-env.d.ts b/lib/vite-env.d.ts new file mode 100644 index 000000000..8cee15171 --- /dev/null +++ b/lib/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/package.json b/package.json index bd790694d..fcb830a3a 100644 --- a/package.json +++ b/package.json @@ -3,20 +3,20 @@ "type": "module", "version": "0.4.40", "files": [ - "dist", - "lib" + "dist" ], "main": "./dist/omorphia.umd.cjs", "module": "./dist/omorphia.js", "exports": { ".": { + "types": "./dist/index.d.ts", "import": "./dist/omorphia.js", - "require": "./dist/omorphia.umd.cjs" + "require": "./dist/omorphia.cjs" }, "./dist/style.css": "./dist/style.css" }, "scripts": { - "build": "vite build", + "build": "vue-tsc && vite build", "lint:js": "eslint --ext .js,.vue,.ts,.jsx,.tsx,.html,.vue .", "lint": "pnpm run lint:js && prettier --check .", "fix": "eslint --fix --ext .js,.vue,.ts,.jsx,.tsx,.html,.vue . && prettier --write .", @@ -31,13 +31,14 @@ "highlight.js": "^11.8.0", "markdown-it": "^13.0.1", "qrcode.vue": "^3.4.0", - "vue": "^3.3.4", "vue-chartjs": "^5.2.0", "vue-router": "^4.2.1", "vue-select": "^4.0.0-beta.6", "xss": "^1.0.14" }, "devDependencies": { + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", "@vitejs/plugin-vue": "^4.2.3", "eslint": "^8.41.0", "eslint-config-prettier": "^8.8.0", @@ -46,12 +47,19 @@ "postcss": "^8.4.24", "postcss-prefix-selector": "^1.16.0", "prettier": "^2.8.8", + "rollup-plugin-node-externals": "^6.1.2", "sass": "^1.62.1", "sass-loader": "^13.3.1", + "typescript": "^5.2.2", "vite": "^4.3.9", + "vite-plugin-dts": "^3.6.0", "vite-plugin-eslint": "^1.8.1", "vite-svg-loader": "^4.0.0", - "vitepress": "^1.0.0-beta.1" + "vitepress": "^1.0.0-beta.1", + "vue-tsc": "^1.8.16" + }, + "peerDependencies": { + "vue": "^3.3.4" }, "packageManager": "pnpm@8.5.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d92d0767..0db35ca51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,6 +36,12 @@ dependencies: version: 1.0.14 devDependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^6.7.4 + version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.7.4 + version: 6.7.4(eslint@8.41.0)(typescript@5.2.2) '@vitejs/plugin-vue': specifier: ^4.2.3 version: 4.2.3(vite@4.3.9)(vue@3.3.4) @@ -60,15 +66,24 @@ devDependencies: prettier: specifier: ^2.8.8 version: 2.8.8 + rollup-plugin-node-externals: + specifier: ^6.1.2 + version: 6.1.2(rollup@3.23.0) sass: specifier: ^1.62.1 version: 1.62.1 sass-loader: specifier: ^13.3.1 version: 13.3.1(sass@1.62.1)(webpack@5.84.1) + typescript: + specifier: ^5.2.2 + version: 5.2.2 vite: specifier: ^4.3.9 version: 4.3.9(sass@1.62.1) + vite-plugin-dts: + specifier: ^3.6.0 + version: 3.6.0(rollup@3.23.0)(typescript@5.2.2)(vite@4.3.9) vite-plugin-eslint: specifier: ^1.8.1 version: 1.8.1(eslint@8.41.0)(vite@4.3.9) @@ -78,6 +93,9 @@ devDependencies: vitepress: specifier: ^1.0.0-beta.1 version: 1.0.0-beta.1(@algolia/client-search@4.17.1)(sass@1.62.1) + vue-tsc: + specifier: ^1.8.16 + version: 1.8.16(typescript@5.2.2) packages: @@ -562,6 +580,49 @@ packages: resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} dev: false + /@microsoft/api-extractor-model@7.28.2: + resolution: {integrity: sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.61.0 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.38.0: + resolution: {integrity: sha512-e1LhZYnfw+JEebuY2bzhw0imDCl1nwjSThTrQqBXl40hrVo6xm3j/1EpUr89QyzgjqmAwek2ZkIVZbrhaR+cqg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.2 + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.61.0 + '@rushstack/rig-package': 0.5.1 + '@rushstack/ts-command-line': 4.16.1 + colors: 1.2.5 + lodash: 4.17.21 + resolve: 1.22.6 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.0.4 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: true + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -591,11 +652,63 @@ packages: picomatch: 2.3.1 dev: true + /@rollup/pluginutils@5.0.5(rollup@3.23.0): + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.23.0 + dev: true + + /@rushstack/node-core-library@3.61.0: + resolution: {integrity: sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + colors: 1.2.5 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.6 + semver: 7.5.4 + z-schema: 5.0.5 + dev: true + + /@rushstack/rig-package@0.5.1: + resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} + dependencies: + resolve: 1.22.6 + strip-json-comments: 3.1.1 + dev: true + + /@rushstack/ts-command-line@4.16.1: + resolution: {integrity: sha512-+OCsD553GYVLEmz12yiFjMOzuPeCiZ3f8wTiFHL30ZVXexTyPmgjwXEhg2K2P0a2lVf+8YBy7WtPoflB2Fp8/A==} + dependencies: + '@types/argparse': 1.0.38 + argparse: 1.0.10 + colors: 1.2.5 + string-argv: 0.3.2 + dev: true + /@trysound/sax@0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} dev: true + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: true + /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: @@ -622,10 +735,145 @@ packages: resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} dev: true + /@types/semver@7.5.3: + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + dev: true + /@types/web-bluetooth@0.0.17: resolution: {integrity: sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==} dev: true + /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.41.0)(typescript@5.2.2): + resolution: {integrity: sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 6.7.4(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/type-utils': 6.7.4(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.4 + debug: 4.3.4 + eslint: 8.41.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.7.4(eslint@8.41.0)(typescript@5.2.2): + resolution: {integrity: sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.4 + debug: 4.3.4 + eslint: 8.41.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.7.4: + resolution: {integrity: sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 + dev: true + + /@typescript-eslint/type-utils@6.7.4(eslint@8.41.0)(typescript@5.2.2): + resolution: {integrity: sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.41.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.41.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.7.4: + resolution: {integrity: sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.7.4(typescript@5.2.2): + resolution: {integrity: sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.7.4(eslint@8.41.0)(typescript@5.2.2): + resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + eslint: 8.41.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.7.4: + resolution: {integrity: sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.4 + eslint-visitor-keys: 3.4.1 + dev: true + /@vitejs/plugin-vue@4.2.3(vite@4.3.9)(vue@3.3.4): resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -637,6 +885,24 @@ packages: vue: 3.3.4 dev: true + /@volar/language-core@1.10.3: + resolution: {integrity: sha512-7Qgwu9bWUHN+cLrOkCbIVBkL+RVPREhvY07wY89dGxi4mY9mQCsUVRRp64F61lX7Nc27meMnvy0sWlzY0x6oQQ==} + dependencies: + '@volar/source-map': 1.10.3 + dev: true + + /@volar/source-map@1.10.3: + resolution: {integrity: sha512-QE9nwK3xsdBQGongHnC9SCR0itx7xUKQFsUDn5HbZY3pHpyXxdY1hSBG0eh9mE+aTKoM4KlqMvrb+19Tv9vS1Q==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.10.3: + resolution: {integrity: sha512-n0ar6xGYpRoSvgGMetm/JXP0QAXx+NOUvxCaWCfCjiFivQRSLJeydYDijhoGBUl5KSKosqq9In5L3e/m2TqTcQ==} + dependencies: + '@volar/language-core': 1.10.3 + dev: true + /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: @@ -674,6 +940,25 @@ packages: /@vue/devtools-api@6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} + /@vue/language-core@1.8.16(typescript@5.2.2): + resolution: {integrity: sha512-IAONyjgR3XImwgrtyQ7CCJlSXTlLesXG6/LpPjOBaXFiwknmGf1yDAXGa9fVH0lRplcnvOA7HNDI92OwWBi9qg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.10.3 + '@volar/source-map': 1.10.3 + '@vue/compiler-dom': 3.3.4 + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + minimatch: 9.0.3 + muggle-string: 0.3.1 + typescript: 5.2.2 + vue-template-compiler: 2.7.14 + dev: true + /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: @@ -713,6 +998,15 @@ packages: /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + /@vue/typescript@1.8.16(typescript@5.2.2): + resolution: {integrity: sha512-ywbY4bS4YJw8gYyPpOhwyutqzl0lqkYI7l3waZkOcQG4ZYgiu6KyHZc3aagEbH8saFQTQxi5+I3ATUN5KwfvNw==} + dependencies: + '@volar/typescript': 1.10.3 + '@vue/language-core': 1.8.16(typescript@5.2.2) + transitivePeerDependencies: + - typescript + dev: true + /@vueuse/core@10.1.2(vue@3.3.4): resolution: {integrity: sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==} dependencies: @@ -984,9 +1278,20 @@ packages: picomatch: 2.3.1 dev: true + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -1011,6 +1316,12 @@ packages: concat-map: 0.0.1 dev: true + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -1088,6 +1399,11 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /colors@1.2.5: + resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} + engines: {node: '>=0.1.90'} + dev: true + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1096,6 +1412,13 @@ packages: engines: {node: '>= 10'} dev: true + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + requiresBuild: true + dev: true + optional: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -1164,6 +1487,10 @@ packages: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1180,6 +1507,13 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1447,6 +1781,17 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -1511,6 +1856,15 @@ packages: tabbable: 6.1.2 dev: true + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -1559,6 +1913,18 @@ packages: type-fest: 0.20.2 dev: true + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true @@ -1572,6 +1938,16 @@ packages: engines: {node: '>=8'} dev: true + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + /highlight.js@11.8.0: resolution: {integrity: sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==} engines: {node: '>=12.0.0'} @@ -1594,6 +1970,11 @@ packages: resolve-from: 4.0.0 dev: true + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1617,6 +1998,12 @@ packages: binary-extensions: 2.2.0 dev: true + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.4 + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1652,6 +2039,10 @@ packages: supports-color: 8.1.1 dev: true + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1675,11 +2066,21 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + /klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} dev: true + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -1706,6 +2107,14 @@ packages: p-locate: 5.0.0 dev: true + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -1758,6 +2167,19 @@ packages: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -1776,6 +2198,13 @@ packages: brace-expansion: 1.1.11 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minisearch@6.1.0: resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==} dev: true @@ -1784,6 +2213,10 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1866,6 +2299,15 @@ packages: engines: {node: '>=8'} dev: true + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -1955,6 +2397,22 @@ packages: engines: {node: '>=4'} dev: true + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + dev: true + + /resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -1967,6 +2425,15 @@ packages: glob: 7.2.3 dev: true + /rollup-plugin-node-externals@6.1.2(rollup@3.23.0): + resolution: {integrity: sha512-2TWan0u0/zHcgPrKpIPgKSY8OMqwDAYD380I0hxx7iUQw8mrN34DWwG9sQUMEo5Yy4xd6/5QEAySYgiKN9fdBQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + rollup: ^3.0.0 || ^4.0.0 + dependencies: + rollup: 3.23.0 + dev: true + /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} @@ -2045,6 +2512,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: @@ -2072,6 +2547,11 @@ packages: vscode-textmate: 8.0.0 dev: true + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -2088,6 +2568,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2114,6 +2603,11 @@ packages: has-flag: 4.0.0 dev: true + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + /svgo@3.0.2: resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} engines: {node: '>=14.0.0'} @@ -2186,6 +2680,15 @@ packages: is-number: 7.0.0 dev: true + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2198,10 +2701,27 @@ packages: engines: {node: '>=10'} dev: true + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: false + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + /update-browserslist-db@1.0.11(browserslist@4.21.6): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -2223,6 +2743,35 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: true + + /vite-plugin-dts@3.6.0(rollup@3.23.0)(typescript@5.2.2)(vite@4.3.9): + resolution: {integrity: sha512-doxhDRFJCZD2sGjIp4V800nm8Y19GvmwckjG5vYPuiqJ7OBjc9NlW1Vp9Gkyh2aXlUs1jTDRH/lxWfcsPLOQHg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@microsoft/api-extractor': 7.38.0 + '@rollup/pluginutils': 5.0.5(rollup@3.23.0) + '@vue/language-core': 1.8.16(typescript@5.2.2) + debug: 4.3.4 + kolorist: 1.8.0 + typescript: 5.2.2 + vite: 4.3.9(sass@1.62.1) + vue-tsc: 1.8.16(typescript@5.2.2) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + dev: true + /vite-plugin-eslint@1.8.1(eslint@8.41.0)(vite@4.3.9): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: @@ -2364,7 +2913,7 @@ packages: espree: 9.5.2 esquery: 1.5.0 lodash: 4.17.21 - semver: 7.5.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true @@ -2394,6 +2943,25 @@ packages: vue: 3.3.4 dev: false + /vue-template-compiler@2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.16(typescript@5.2.2): + resolution: {integrity: sha512-PT2xOJNl2qkmmp8eHf4qapfzvcRTQLxQQhQAzY7sMjv0JKsud9vo+aotklh/VzM9ZfaSo1UlDGZy6zSSRc+8wA==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@vue/language-core': 1.8.16(typescript@5.2.2) + '@vue/typescript': 1.8.16(typescript@5.2.2) + semver: 7.5.4 + typescript: 5.2.2 + dev: true + /vue@3.3.4: resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} dependencies: @@ -2495,3 +3063,15 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true + + /z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.11.0 + optionalDependencies: + commander: 9.5.0 + dev: true diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..517d8284e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "allowJs": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["lib/**/*.js", "lib/**/*.ts", "lib/**/*.d.ts", "lib/**/*.tsx", "lib/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.js b/vite.config.ts similarity index 74% rename from vite.config.js rename to vite.config.ts index 52e06c2f4..8359a1abb 100644 --- a/vite.config.js +++ b/vite.config.ts @@ -3,24 +3,21 @@ import { defineConfig } from 'vite' import svgLoader from 'vite-svg-loader' import eslintPlugin from 'vite-plugin-eslint' import vue from '@vitejs/plugin-vue' +import dts from 'vite-plugin-dts' +import nodeExternals from 'rollup-plugin-node-externals' export default defineConfig({ build: { + minify: false, lib: { - entry: resolve(__dirname, 'lib/index.js'), + entry: resolve(__dirname, 'lib/index.ts'), name: 'Omorphia', fileName: 'omorphia', - }, - rollupOptions: { - external: ['vue'], - output: { - globals: { - vue: 'Vue', - }, - }, + formats: ['es', 'cjs'], }, }, plugins: [ + { enforce: 'pre', ...nodeExternals() }, vue(), svgLoader({ svgoConfig: { @@ -37,6 +34,7 @@ export default defineConfig({ }, }), eslintPlugin(), + dts(), ], resolve: { alias: {