diff --git a/.github/skills/convert-template/SKILL.md b/.github/skills/convert-template/SKILL.md new file mode 100644 index 0000000..add6565 --- /dev/null +++ b/.github/skills/convert-template/SKILL.md @@ -0,0 +1,111 @@ +--- +name: Convert Old Components to New (Auto) +description: Chuyển đổi các component cũ (Angular) sang component mới (Vue) +--- + +# Skill Map: Convert Old Components to New (Auto) + +## Quy tắc chung +- Template này sử dụng ngx-dynamic-hooks (Angular) với custom components +- Ràng buộc 2 chiều trong ngx-dynamic-hooks sử dụng attribute `update="propertyPath"` +- Chỉ trả về template string Vue (không kèm script, style, hoặc logic JS/TS) +- Nếu không có component tương ứng, ghi chú TODO để xử lý thủ công +- Props binding Angular `[prop]` chuyển sang Vue `:prop` +--- + +## Component Mappings + +**LƯU Ý QUAN TRỌNG:** Bạn PHẢI đọc file mapping tương ứng từ link để hiểu cách chuyển đổi chính xác mỗi component. + +### Layout Components +- [hoso-page → PageA4/PageA5](mappings/hoso-page.md) + +### Text & Display +- [hs → Interpolation](mappings/hs-interpolation.md) + +### Input Components +- [hs-input-check → Checkbox](mappings/hs-input-check.md) +- [hs-input-otp → InputOTP](mappings/hs-input-otp.md) +- [hs-input-text → Textarea](mappings/hs-input-text.md) +- [hs-input-wrapper → Custom Layout](mappings/hs-input-wrapper.md) +- [hs-textarea-line → Textarea](mappings/hs-textarea-line.md) + +### Date & Time +- [hs-datepicker → DatePicker](mappings/hs-datepicker.md) + +### Selection & Picker +- [hs-select-line → Select](mappings/hs-select-line.md) +- [hs-phong-giuong-picker → Custom Layout](mappings/hs-phong-giuong-picker.md) + +### Drawing & Signature +- [hs-paint → Paint](mappings/hs-paint.md) +- [hs-signature → Signature](mappings/hs-signature.md) + +### Medical Components +- [hs-icd-group → Custom Layout](mappings/hs-icd-group.md) + +--- + +--- + +## Bước cuối cùng: Tối ưu hóa Context Path + +### 1. Xử lý `context.tempData` + +Nếu gặp `context.tempData.xxx.yyy` + +👉 Bỏ `context.tempData.` + +👉 Giữ lại `xxx.yyy` + +**Ví dụ:** +``` +context.tempData.hsBenhAn.HoTen +→ hsBenhAn.HoTen +``` + +### 2. Xử lý `context.value` + +Nếu là `context.value` (chỉ 1 cấp) + +👉 Đổi thành `data.value` + +**Ví dụ:** +``` +context.value +→ data.value +``` + +### 3. Xử lý `context.xxx` + +Nếu là `context.xxx` (không qua tempData, chỉ 1 cấp) + +👉 Đổi thành `data.xxx` + +**Ví dụ:** +``` +context.hoTen +→ data.hoTen +``` + +--- + +## Xử lý Binding Expressions + +### Không dùng `concatWith()` - Dùng phép cộng chuỗi trực tiếp + +**Old:** +``` +hsBenhAn.MaKhoaBanDau?.concatWith(' - ')?.concatWith(hsBenhAn.TenKhoaBanDau) +``` + +**New:** +```vue +{{hsBenhAn.MaKhoaBanDau + ' - ' + hsBenhAn.TenKhoaBanDau}} +``` + +Hoặc trong prop binding: +```vue +:modelValue="hsBenhAn.MaKhoaBanDau + ' - ' + hsBenhAn.TenKhoaBanDau" +``` + diff --git a/.github/skills/convert-template/component-new.md b/.github/skills/convert-template/component-new.md new file mode 100644 index 0000000..ed9eb80 --- /dev/null +++ b/.github/skills/convert-template/component-new.md @@ -0,0 +1,220 @@ +--- +name: Component usage skill +--- + +# Component Usage Skill + +Tài liệu này cung cấp ví dụ sử dụng và mô tả props cho các component trong thư mục `forms` và `layouts`. + +## Checkbox + +### Mô tả +Checkbox cho phép chọn hoặc bỏ chọn một giá trị. Hỗ trợ trạng thái disabled, readonly, hiển thị text trước/sau, và nhiều kích thước. + +### Props +- `modelValue`: Giá trị hiện tại của checkbox (String, Number, Boolean, null) +- `value`: Giá trị của checkbox khi được chọn (String, Number, Boolean) **(bắt buộc)** +- `disabled`: Vô hiệu hóa checkbox (Boolean) +- `readonly`: Chỉ đọc, không cho phép thay đổi (Boolean) +- `beforeText`: Text hiển thị trước checkbox (String) hoặc slot `#beforeText` +- `afterText`: Text hiển thị sau checkbox (String) hoặc slot `#afterText` +- `size`: Kích thước: 'sm', 'md', 'lg', 'xl' (String) + +### Ví dụ +```vue + + + +``` + +--- + +## DatePicker + +### Mô tả +DatePicker nhập ngày/thời gian với định dạng tùy chỉnh, hỗ trợ mask, disabled, readonly, bước phút. Có thể truyền nhãn qua prop `label` hoặc slot `label`. + +### Props +- `modelValue`: Giá trị ngày (String) +- `format`: Định dạng ngày, ví dụ 'YYYY-MM-DD' hoặc 'YYYY-MM-DD HH:mm' (String) +- `placeholder`: Placeholder hiển thị (String) +- `disabled`: Vô hiệu hóa (Boolean) +- `readonly`: Chỉ đọc (Boolean) +- `minuteStep`: Bước phút khi chọn thời gian (Number) +- `label`: Nhãn hiển thị (String) + +### Ví dụ +```vue + + + + + +``` + +--- + +## DatePickerPortal + +### Mô tả +Popup chọn ngày/thời gian, dùng nội bộ cho DatePicker. Không dùng trực tiếp. + +--- + +## InputOTP + +### Mô tả +Nhập mã OTP hoặc chuỗi ký tự theo pattern, hỗ trợ mask, pad, kiểu số hoặc text, disabled, readonly. + +### Props +- `modelValue`: Giá trị hiện tại (String) +- `type`: Kiểu nhập ('text' | 'number') +- `readonly`: Chỉ đọc (Boolean) +- `disabled`: Vô hiệu hóa (Boolean) +- `maskLength`: Mảng độ dài từng ô (Array) +- `padChar`: Ký tự pad cho từng ô (String) +- `padStart`: Ký tự pad đầu chuỗi (String) +- `style`: CSS style cho wrapper (String) +- `class`: CSS class cho wrapper (String) + +### Ví dụ +```vue + + + +``` + +--- + +## Paint + +### Mô tả +Canvas vẽ, hỗ trợ chọn màu, độ dày nét, ảnh nền, chế độ bút/tẩy, xuất ảnh. + +### Props +- `modelValue`: Ảnh vẽ (base64) (String) +- `lineWidth`: Độ dày nét vẽ (Number) +- `color`: Màu nét vẽ (String) +- `src`: Ảnh nền (String) + +### Ví dụ +```vue + + +``` + +--- + +## Select + +### Mô tả +Select nhiều hoặc một giá trị, hỗ trợ tìm kiếm, custom label/value, disabled, readonly. Có thể truyền nhãn qua prop `label` hoặc slot `label`. + +### Props +- `modelValue`: Giá trị hiện tại (String, Number, Array) +- `items`: Danh sách lựa chọn (Array) +- `bindLabel`: Tên trường hiển thị (String) +- `bindValue`: Tên trường giá trị (String) +- `placeholder`: Placeholder (String) +- `multiple`: Chọn nhiều (Boolean) +- `disabled`: Vô hiệu hóa (Boolean) +- `readonly`: Chỉ đọc (Boolean) +- `label`: Nhãn hiển thị (String) + +### Ví dụ +```vue + + + + + +``` diff --git a/.github/skills/convert-template/mappings/hs-input-wrapper.md b/.github/skills/convert-template/mappings/hs-input-wrapper.md new file mode 100644 index 0000000..43a5382 --- /dev/null +++ b/.github/skills/convert-template/mappings/hs-input-wrapper.md @@ -0,0 +1,40 @@ +# hs-input-wrapper → div with v-model + +**Old:** `` +**New:** `
` + `v-model` trên `` + +## Props Mapping + +- `value` + `update` → `v-model` trên thẻ `` con +- `style` → `style` (chuyển lên div) +- `class` → `class` (chuyển lên div) +- Tất cả các attributes của `` con → giữ nguyên + +## Lưu ý về binding + +- `[value]="context.email"` + `update="email"` → Chuyển thành `v-model="data.email"` trên thẻ `` +- Bỏ wrapper, chỉ giữ lại thẻ `
` bao ngoài +- `v-model` của Vue tự xử lý two-way binding cho cả `text` và `checkbox` + +## Công thức chuyển đổi + +**Input text:** +```vue +
+ +
+``` + +**Input checkbox:** +```vue +
+ +
+``` + +**Với style/class:** +```vue +
+ +
+``` diff --git a/.github/skills/convert-template/mappings/hs-interpolation.md b/.github/skills/convert-template/mappings/hs-interpolation.md new file mode 100644 index 0000000..1b8d2f0 --- /dev/null +++ b/.github/skills/convert-template/mappings/hs-interpolation.md @@ -0,0 +1,34 @@ +# hs → Interpolation + +**Old:** `` +**New:** `{{ ... }}` + +## Quy tắc chuyển đổi + +- `` → `{{context.value}}` +- `` → `{{context.value}}` +- Nếu có style, bọc trong thẻ `` với style tương ứng + +## Ví dụ + +```vue + + + +{{context.hoTen}} + + + + +{{context.value}} +``` + +## Lưu ý + +**Vue 3 không hỗ trợ pipe `|`** - Để format date/time, dùng `moment()` trực tiếp: +```vue + +{{value | date : 'HH:mm dd/MM/yyyy'}} + +{{moment(value).format('HH:mm DD/MM/YYYY')}} +``` diff --git a/.github/skills/convert-template/mappings/hs-paint.md b/.github/skills/convert-template/mappings/hs-paint.md new file mode 100644 index 0000000..115a4da --- /dev/null +++ b/.github/skills/convert-template/mappings/hs-paint.md @@ -0,0 +1,22 @@ +# hs-paint → Paint + +**Old:** `` +**New:** `` + +## Props Mapping + +- `value` + `update` → `v-model` (ảnh vẽ base64, two-way binding) +- `style` → `style` + +## Lưu ý về binding + +Trong ngx-dynamic-hooks: +- `[value]="context.drawing"` + `update="drawing"` = two-way binding → `v-model="context.drawing"` +- Chỉ có `[value]="context.drawing"` (không có `update`) = one-way binding → `:modelValue="context.drawing"` +- **Lưu ý:** `update` nhận path không có prefix `context.` + +## Công thức chuyển đổi + +```vue + +``` diff --git a/.github/skills/convert-template/mappings/hs-phong-giuong-picker.md b/.github/skills/convert-template/mappings/hs-phong-giuong-picker.md new file mode 100644 index 0000000..b30147d --- /dev/null +++ b/.github/skills/convert-template/mappings/hs-phong-giuong-picker.md @@ -0,0 +1,19 @@ +# hs-phong-giuong-picker → Custom Layout + +**Old:** `` +**New:** Dùng 2 Textarea trong div với `@dblclick` + +## Công thức chuyển đổi + +```vue + +
+ +``` diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index ab3c7d5..15aa982 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -48,11 +48,9 @@ jobs: run: | mkdir deploy mkdir deploy/shell - mkdir deploy/first-mf mkdir deploy/template-editor - cp -r dist/shell/browser/* deploy/shell/ - cp -r dist/first-mf/browser/* deploy/first-mf/ + cp -r dist/shell/* deploy/shell/ cp -r dist/template-editor/* deploy/template-editor/ - name: Deploy to GitHub Pages diff --git a/README.md b/README.md index 9e2c73f..e3d43a9 100644 --- a/README.md +++ b/README.md @@ -55,4 +55,4 @@ export class Home{ ![Context menu](./assets/context-menu2.png) ![Context menu](./assets/menu-edit.png) -🎯 Live Demo: https://duynndu.github.io/mfe-angular/shell/ \ No newline at end of file +🎯 Live Demo: https://hsdt.github.io/dynamic-template-editor/shell/ \ No newline at end of file diff --git a/angular.json b/angular.json index 595f834..5bc79b4 100644 --- a/angular.json +++ b/angular.json @@ -12,83 +12,32 @@ }, "root": "projects/shell", "sourceRoot": "projects/shell/src", - "prefix": "app-shell", + "prefix": "app", "architect": { "build": { - "builder": "@angular-architects/native-federation:build", - "options": {}, - "configurations": { - "production": { - "target": "shell:esbuild:production" - }, - "demo": { - "target": "shell:esbuild:production", - "baseHref": "/mfe-angular/shell/", - "fileReplacements": [ - { - "replace": "projects/shell/src/environments/environment.ts", - "with": "projects/shell/src/environments/environment.demo.ts" - } - ] - }, - "development": { - "target": "shell:esbuild:development", - "dev": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-architects/native-federation:build", - "options": { - "target": "shell:serve-original:development", - "rebuildDelay": 0, - "dev": true, - "port": 0 - } - }, - "extract-i18n": { - "builder": "@angular/build:extract-i18n" - }, - "test": { - "builder": "@angular/build:karma", + "builder": "ngx-build-plus:browser", "options": { + "outputPath": "dist/shell", + "index": "projects/shell/src/index.html", "polyfills": [ - "zone.js", - "zone.js/testing" - ], - "tsConfig": "projects/shell/tsconfig.spec.json", - "inlineStyleLanguage": "scss", - "assets": [ - { - "glob": "**/*", - "input": "projects/shell/public" - } - ], - "styles": [ - "projects/shell/src/styles.scss" - ] - } - }, - "esbuild": { - "builder": "@angular-devkit/build-angular:application", - "options": { - "browser": "projects/shell/src/main.ts", - "polyfills": [ - "zone.js", - "es-module-shims" + "zone.js" ], "tsConfig": "projects/shell/tsconfig.app.json", "inlineStyleLanguage": "scss", "assets": [ { "glob": "**/*", - "input": "projects/shell/public" + "input": "projects/shell/public", + "output": "." } ], "styles": [ "projects/shell/src/styles.scss" - ] + ], + "scripts": [], + "main": "projects/shell/src/main.ts", + "extraWebpackConfig": "projects/shell/webpack.config.js", + "commonChunk": false }, "configurations": { "production": { @@ -104,7 +53,19 @@ "maximumError": "8kB" } ], - "outputHashing": "all" + "outputHashing": "all", + "extraWebpackConfig": "projects/shell/webpack.prod.config.js" + }, + "demo": { + "outputHashing": "all", + "extraWebpackConfig": "projects/shell/webpack.prod.config.js", + "baseHref": "/dynamic-template-editor/shell/", + "fileReplacements": [ + { + "replace": "projects/shell/src/environments/environment.ts", + "with": "projects/shell/src/environments/environment.demo.ts" + } + ] }, "development": { "optimization": false, @@ -114,141 +75,46 @@ }, "defaultConfiguration": "production" }, - "serve-original": { - "builder": "@angular/build:dev-server", + "serve": { + "builder": "ngx-build-plus:dev-server", "configurations": { "production": { - "buildTarget": "shell:esbuild:production" + "buildTarget": "shell:build:production", + "extraWebpackConfig": "projects/shell/webpack.prod.config.js" }, "development": { - "buildTarget": "shell:esbuild:development" + "buildTarget": "shell:build:development" } }, "defaultConfiguration": "development", "options": { - "port": 4200 - } - } - } - }, - "first-mf": { - "projectType": "application", - "schematics": { - "@schematics/angular:component": { - "style": "scss" - } - }, - "root": "projects/first-mf", - "sourceRoot": "projects/first-mf/src", - "prefix": "app-first-mf", - "architect": { - "build": { - "builder": "@angular-architects/native-federation:build", - "options": {}, - "configurations": { - "production": { - "target": "first-mf:esbuild:production" - }, - "demo": { - "target": "first-mf:esbuild:production", - "baseHref": "/mfe-angular/first-mf/" - }, - "development": { - "target": "first-mf:esbuild:development", - "dev": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-architects/native-federation:build", - "options": { - "target": "first-mf:serve-original:development", - "rebuildDelay": 0, - "dev": true, - "port": 0 + "port": 4200, + "publicHost": "http://localhost:4200", + "extraWebpackConfig": "projects/shell/webpack.config.js" } }, "extract-i18n": { - "builder": "@angular/build:extract-i18n" + "builder": "@angular-devkit/build-angular:extract-i18n" }, "test": { - "builder": "@angular/build:karma", + "builder": "@angular-devkit/build-angular:karma", "options": { "polyfills": [ "zone.js", "zone.js/testing" ], - "tsConfig": "projects/first-mf/tsconfig.spec.json", + "tsConfig": "projects/shell/tsconfig.spec.json", "inlineStyleLanguage": "scss", "assets": [ { "glob": "**/*", - "input": "projects/first-mf/public" + "input": "projects/shell/public" } ], "styles": [ - "projects/first-mf/src/styles.scss" - ] - } - }, - "esbuild": { - "builder": "@angular-devkit/build-angular:application", - "options": { - "browser": "projects/first-mf/src/main.ts", - "polyfills": [ - "zone.js", - "es-module-shims" - ], - "tsConfig": "projects/first-mf/tsconfig.app.json", - "inlineStyleLanguage": "scss", - "assets": [ - { - "glob": "**/*", - "input": "projects/first-mf/public" - } + "projects/shell/src/styles.scss" ], - "styles": [ - "projects/first-mf/src/styles.scss" - ] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kB", - "maximumError": "1MB" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "4kB", - "maximumError": "8kB" - } - ], - "outputHashing": "all" - }, - "development": { - "optimization": false, - "extractLicenses": false, - "sourceMap": true - } - }, - "defaultConfiguration": "production" - }, - "serve-original": { - "builder": "@angular/build:dev-server", - "configurations": { - "production": { - "buildTarget": "first-mf:esbuild:production" - }, - "development": { - "buildTarget": "first-mf:esbuild:development" - } - }, - "defaultConfiguration": "development", - "options": { - "port": 4201 + "scripts": [] } } } diff --git a/package-lock.json b/package-lock.json index f9202ca..63b643f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,14 @@ { - "name": "mf-angular-20", + "name": "dynamic-template-editor", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mf-angular-20", + "name": "dynamic-template-editor", "version": "0.0.0", "dependencies": { + "@angular-architects/module-federation": "^20.0.0", "@angular/animations": "^20.0.0", "@angular/common": "^20.0.0", "@angular/compiler": "^20.0.0", @@ -15,7 +16,6 @@ "@angular/forms": "^20.0.0", "@angular/platform-browser": "^20.0.0", "@angular/router": "^20.0.0", - "@originjs/vite-plugin-federation": "^1.4.1", "@softarc/native-federation-node": "^2.0.10", "es-module-shims": "^1.5.12", "js-beautify": "^1.15.4", @@ -24,7 +24,6 @@ "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-architects/native-federation": "^20.0.6", "@angular-devkit/build-angular": "^20.0.3", "@angular/build": "^20.0.3", "@angular/cli": "^20.0.2", @@ -38,7 +37,9 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.8.2" + "ngx-build-plus": "^20.0.0", + "typescript": "~5.8.2", + "vue": "^3.5.22" } }, "node_modules/@ampproject/remapping": { @@ -55,31 +56,32 @@ "node": ">=6.0.0" } }, - "node_modules/@angular-architects/native-federation": { - "version": "20.0.6", - "resolved": "https://registry.npmjs.org/@angular-architects/native-federation/-/native-federation-20.0.6.tgz", - "integrity": "sha512-UZrdHlj05WwJL9Bz8zkaHiiZDyt4rgtyzDLwDapaoVzti7E9pZEowTKm92R/vPIdQeHfTILTSqdS2WsdGManfA==", - "dev": true, + "node_modules/@angular-architects/module-federation": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@angular-architects/module-federation/-/module-federation-20.0.0.tgz", + "integrity": "sha512-EonYL6P5Yu1kCV6yXW8uYhTGBGG3E77+FEWosDnbDlWXuj80mGOKYdqE5xNxSyLldTJIKfEgt7x8//bIOmkWbA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.19.0", - "@chialab/esbuild-plugin-commonjs": "^0.18.0", - "@softarc/native-federation": "3.2.0", - "@softarc/native-federation-runtime": "3.2.0", - "esbuild": "^0.25.1", - "mrmime": "^1.0.1", - "process": "0.11.10", - "signale": "^1.4.0" + "@angular-architects/module-federation-runtime": "20.0.0", + "callsite": "^1.0.0", + "node-fetch": "^2.6.7", + "semver": "^7.3.5", + "word-wrap": "^1.2.3" } }, - "node_modules/@angular-architects/native-federation/node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, + "node_modules/@angular-architects/module-federation-runtime": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@angular-architects/module-federation-runtime/-/module-federation-runtime-20.0.0.tgz", + "integrity": "sha512-06qoytemnCY/MCRFvdbbX/jSflqNMVTMuddnprid0Wfuc2lVsSgCv2Xi0FZFKjvhDHb1xYpmMQNExxKoXdp80g==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=20.0.0", + "@angular/core": ">=20.0.0", + "@module-federation/enhanced": "^0.9.0", + "@module-federation/runtime-core": "^0.6.21" } }, "node_modules/@angular-devkit/architect": { @@ -350,7 +352,6 @@ "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.0.4.tgz", "integrity": "sha512-s0kRcEply2A1ThvFmb0+o+hEpAbPn08lpK8xjWZryM4cMrwjgsUE0OZHZPBANP4I1xT7Z82l+fmQbH+vX48EyA==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -499,7 +500,6 @@ "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.0.4.tgz", "integrity": "sha512-fWgxe2rgSKgI36ummBYnBN4YUrmp4CHbfEG3RMeJho/vhHKguk2/o6BgL9zvnKybvbWmuaqbkHogi+y0LeJ8Ww==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -529,7 +529,6 @@ "integrity": "sha512-2FP1WMRexAMcDPNE3YO3zB++sCgND9O/qJC5rgKbAebpbmOrCDMUBRlftkwiLT+UhTM9PjhTtAGtK7C+2iwx1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "7.27.4", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -671,7 +670,6 @@ "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.0.4.tgz", "integrity": "sha512-JhSl3B6CrJ9kegLffgWVFGF4D4bWLV/9r8R0+h78vU+ppdPFPWDha7WnirF31cPIg3pBzy6wn103Kcy9Ri5M5w==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -715,7 +713,6 @@ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.0.4.tgz", "integrity": "sha512-hMJYvtZlNPh4Tt6JrnK+vmBmHWok04EkuJwyPcPhlle1u6/LihuCj4suELLqCanX9EzyNgvyKnws0i6JE/qh8Q==", "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -782,7 +779,6 @@ "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -1102,9 +1098,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -1151,13 +1147,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", - "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -2334,101 +2330,71 @@ } }, "node_modules/@babel/types": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", - "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@chialab/cjs-to-esm": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@chialab/cjs-to-esm/-/cjs-to-esm-0.18.0.tgz", - "integrity": "sha512-fm8X9NhPO5pyUB7gxOZgwxb8lVq1UD4syDJCpqh6x4zGME6RTck7BguWZ4Zgv3GML4fQ4KZtyRwP5eoDgNGrmA==", + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", - "dependencies": { - "@chialab/estransform": "^0.18.0" - }, "engines": { - "node": ">=18" + "node": ">=0.1.90" } }, - "node_modules/@chialab/esbuild-plugin-commonjs": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@chialab/esbuild-plugin-commonjs/-/esbuild-plugin-commonjs-0.18.0.tgz", - "integrity": "sha512-qZjIsNr1dVEJk6NLyza3pJLHeY7Fz0xjmYteKXElCnlFSKR7vVg6d18AsxVpRnP5qNbvx3XlOvs9U8j97ZQ6bw==", + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, "license": "MIT", - "dependencies": { - "@chialab/cjs-to-esm": "^0.18.0", - "@chialab/esbuild-rna": "^0.18.0" - }, "engines": { - "node": ">=18" + "node": ">=14.17.0" } }, - "node_modules/@chialab/esbuild-rna": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/@chialab/esbuild-rna/-/esbuild-rna-0.18.2.tgz", - "integrity": "sha512-ckzskez7bxstVQ4c5cxbx0DRP2teldzrcSGQl2KPh1VJGdO2ZmRrb6vNkBBD5K3dx9tgTyvskWp4dV+Fbg07Ag==", - "dev": true, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@chialab/estransform": "^0.18.0", - "@chialab/node-resolve": "^0.18.0" - }, - "engines": { - "node": ">=18" + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@chialab/estransform": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/@chialab/estransform/-/estransform-0.18.1.tgz", - "integrity": "sha512-W/WmjpQL2hndD0/XfR0FcPBAUj+aLNeoAVehOjV/Q9bSnioz0GVSAXXhzp59S33ZynxJBBfn8DNiMTVNJmk4Aw==", - "dev": true, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@parcel/source-map": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@chialab/node-resolve": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@chialab/node-resolve/-/node-resolve-0.18.0.tgz", - "integrity": "sha512-eV1m70Qn9pLY9xwFmZ2FlcOzwiaUywsJ7NB/ud8VB7DouvCQtIHkQ3Om7uPX0ojXGEG1LCyO96kZkvbNTxNu0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" + "tslib": "^2.4.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", - "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", - "dev": true, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "license": "MIT", - "engines": { - "node": ">=14.17.0" + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@esbuild/aix-ppc64": { @@ -3060,7 +3026,6 @@ "integrity": "sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/checkbox": "^4.1.6", "@inquirer/confirm": "^5.1.10", @@ -3259,7 +3224,7 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -3274,7 +3239,7 @@ "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, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3284,7 +3249,7 @@ "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, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3294,7 +3259,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -3302,16 +3267,17 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "devOptional": true, "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, + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3519,138 +3485,670 @@ "win32" ] }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.9.1.tgz", + "integrity": "sha512-znN/Qm6M0U1t3iF10gu1hSxDkk18yz78yvk+AMB34UDzpXHiC1zbpIeV2CQNV5GCeafmCICmcn9y1qh7F54KTg==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "peer": true, + "dependencies": { + "@module-federation/sdk": "0.9.1", + "@types/semver": "7.5.8", + "semver": "7.6.3" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@module-federation/bridge-react-webpack-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@module-federation/data-prefetch": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.9.1.tgz", + "integrity": "sha512-rS1AsgRvIMAWK8oMprEBF0YQ3WvsqnumjinvAZU1Dqut5DICmpQMTPEO1OrAKyjO+PQgEhmq13HggzN6ebGLrQ==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "peer": true, + "dependencies": { + "@module-federation/runtime": "0.9.1", + "@module-federation/sdk": "0.9.1", + "fs-extra": "9.1.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/@module-federation/data-prefetch/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@module-federation/data-prefetch/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@module-federation/data-prefetch/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "peer": true, + "engines": { + "node": ">= 10.0.0" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@module-federation/dts-plugin": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.9.1.tgz", + "integrity": "sha512-DezBrFaIKfDcEY7UhqyO1WbYocERYsR/CDN8AV6OvMnRlQ8u0rgM8qBUJwx0s+K59f+CFQFKEN4C8p7naCiHrw==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "peer": true, + "dependencies": { + "@module-federation/error-codes": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/sdk": "0.9.1", + "@module-federation/third-party-dts-extractor": "0.9.1", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.7.4", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "2.15.4", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } + } }, - "node_modules/@napi-rs/nice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", - "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==", - "dev": true, + "node_modules/@module-federation/dts-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", - "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@napi-rs/nice-android-arm-eabi": "1.0.1", - "@napi-rs/nice-android-arm64": "1.0.1", - "@napi-rs/nice-darwin-arm64": "1.0.1", - "@napi-rs/nice-darwin-x64": "1.0.1", - "@napi-rs/nice-freebsd-x64": "1.0.1", - "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", - "@napi-rs/nice-linux-arm64-gnu": "1.0.1", - "@napi-rs/nice-linux-arm64-musl": "1.0.1", - "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", - "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", - "@napi-rs/nice-linux-s390x-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-musl": "1.0.1", - "@napi-rs/nice-win32-arm64-msvc": "1.0.1", - "@napi-rs/nice-win32-ia32-msvc": "1.0.1", - "@napi-rs/nice-win32-x64-msvc": "1.0.1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@napi-rs/nice-android-arm-eabi": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz", - "integrity": "sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/@module-federation/dts-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 10" + "node": ">=8" + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "peer": true, + "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/@module-federation/enhanced": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.9.1.tgz", + "integrity": "sha512-c9siKVjcgT2gtDdOTqEr+GaP2X/PWAS0OV424ljKLstFL1lcS/BIsxWFDmxPPl5hDByAH+1q4YhC1LWY4LNDQw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.9.1", + "@module-federation/data-prefetch": "0.9.1", + "@module-federation/dts-plugin": "0.9.1", + "@module-federation/error-codes": "0.9.1", + "@module-federation/inject-external-runtime-core-plugin": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/manifest": "0.9.1", + "@module-federation/rspack": "0.9.1", + "@module-federation/runtime-tools": "0.9.1", + "@module-federation/sdk": "0.9.1", + "btoa": "^1.2.1", + "upath": "2.0.1" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/@module-federation/error-codes": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.9.1.tgz", + "integrity": "sha512-q8spCvlwUzW42iX1irnlBTcwcZftRNHyGdlaoFO1z/fW4iphnBIfijzkigWQzOMhdPgzqN/up7XN+g5hjBGBtw==", + "license": "MIT", + "peer": true + }, + "node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.9.1.tgz", + "integrity": "sha512-BPfzu1cqDU5BhM493enVF1VfxJWmruen0ktlHrWdJJlcddhZzyFBGaLAGoGc+83fS75aEllvJTEthw4kMViMQQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@module-federation/runtime-tools": "0.9.1" + } + }, + "node_modules/@module-federation/managers": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.9.1.tgz", + "integrity": "sha512-8hpIrvGfiODxS1qelTd7eaLRVF7jrp17RWgeH1DWoprxELANxm5IVvqUryB+7j+BhoQzamog9DL5q4MuNfGgIA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/sdk": "0.9.1", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" + } + }, + "node_modules/@module-federation/managers/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@module-federation/managers/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@module-federation/managers/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@module-federation/manifest": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.9.1.tgz", + "integrity": "sha512-+GteKBXrAUkq49i2CSyWZXM4vYa+mEVXxR9Du71R55nXXxgbzAIoZj9gxjRunj9pcE8+YpAOyfHxLEdWngxWdg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/dts-plugin": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/sdk": "0.9.1", + "chalk": "3.0.0", + "find-pkg": "2.0.0" + } + }, + "node_modules/@module-federation/manifest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@module-federation/manifest/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/rspack": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.9.1.tgz", + "integrity": "sha512-ZJqG75dWHhyTMa9I0YPJEV2XRt0MFxnDiuMOpI92esdmwWY633CBKyNh1XxcLd629YVeTv03+whr+Fz/f91JEw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.9.1", + "@module-federation/dts-plugin": "0.9.1", + "@module-federation/inject-external-runtime-core-plugin": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/manifest": "0.9.1", + "@module-federation/runtime-tools": "0.9.1", + "@module-federation/sdk": "0.9.1" + }, + "peerDependencies": { + "@rspack/core": ">=0.7", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/@module-federation/runtime": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.9.1.tgz", + "integrity": "sha512-jp7K06weabM5BF5sruHr/VLyalO+cilvRDy7vdEBqq88O9mjc0RserD8J+AP4WTl3ZzU7/GRqwRsiwjjN913dA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/error-codes": "0.9.1", + "@module-federation/runtime-core": "0.9.1", + "@module-federation/sdk": "0.9.1" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.6.21", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.6.21.tgz", + "integrity": "sha512-CLQiPP3kpcPbgPkiu/A1VURI2v4geFnEdizlB1tq0c6eDZqb5aLzvp87ZCGDVSuwY7DCq6jh1k+CM2WGge/2xA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/error-codes": "0.9.0", + "@module-federation/sdk": "0.9.0" + } + }, + "node_modules/@module-federation/runtime-core/node_modules/@module-federation/error-codes": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.9.0.tgz", + "integrity": "sha512-dNqIs5cQfE4p+WIdiZ64cTSRJ5KjGaV+epvZkGttrNjXW9XAAtE7zgpo7cMQ8GWA3wCGaKnFw7Dn48XcU5ZMNw==", + "license": "MIT", + "peer": true + }, + "node_modules/@module-federation/runtime-core/node_modules/@module-federation/sdk": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.9.0.tgz", + "integrity": "sha512-84MklxE6Z79gCAr+6HCyqOpF95pqSah+fGnhLz+g4ePcWf98J73bWfrdOWFO/UfxMRneXKBZBNbpDVvPLgaFeQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "isomorphic-rslog": "0.0.7" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.9.1.tgz", + "integrity": "sha512-JQZ//ab+lEXoU2DHAH+JtYASGzxEjXB0s4rU+6VJXc8c+oUPxH3kWIwzjdncg2mcWBmC1140DCk+K+kDfOZ5CQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/runtime": "0.9.1", + "@module-federation/webpack-bundler-runtime": "0.9.1" + } + }, + "node_modules/@module-federation/runtime/node_modules/@module-federation/runtime-core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.9.1.tgz", + "integrity": "sha512-r61ufhKt5pjl81v7TkmhzeIoSPOaNtLynW6+aCy3KZMa3RfRevFxmygJqv4Nug1L0NhqUeWtdLejh4VIglNy5Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/error-codes": "0.9.1", + "@module-federation/sdk": "0.9.1" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.9.1.tgz", + "integrity": "sha512-YQonPTImgnCqZjE/A+3N2g3J5ypR6kx1tbBzc9toUANKr/dw/S63qlh/zHKzWQzxjjNNVMdXRtTMp07g3kgEWg==", + "license": "MIT", + "peer": true + }, + "node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.9.1.tgz", + "integrity": "sha512-KeIByP718hHyq+Mc53enZ419pZZ1fh9Ns6+/bYLkc3iCoJr/EDBeiLzkbMwh2AS4Qk57WW0yNC82xzf7r0Zrrw==", + "license": "MIT", + "peer": true, + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" + } + }, + "node_modules/@module-federation/third-party-dts-extractor/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@module-federation/third-party-dts-extractor/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@module-federation/third-party-dts-extractor/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "peer": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@module-federation/third-party-dts-extractor/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.9.1.tgz", + "integrity": "sha512-CxySX01gT8cBowKl9xZh+voiHvThMZ471icasWnlDIZb14KasZoX1eCh9wpGvwoOdIk9rIRT7h70UvW9nmop6w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/runtime": "0.9.1", + "@module-federation/sdk": "0.9.1" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@napi-rs/nice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", + "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.0.1", + "@napi-rs/nice-android-arm64": "1.0.1", + "@napi-rs/nice-darwin-arm64": "1.0.1", + "@napi-rs/nice-darwin-x64": "1.0.1", + "@napi-rs/nice-freebsd-x64": "1.0.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", + "@napi-rs/nice-linux-arm64-gnu": "1.0.1", + "@napi-rs/nice-linux-arm64-musl": "1.0.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", + "@napi-rs/nice-linux-s390x-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-musl": "1.0.1", + "@napi-rs/nice-win32-arm64-msvc": "1.0.1", + "@napi-rs/nice-win32-ia32-msvc": "1.0.1", + "@napi-rs/nice-win32-x64-msvc": "1.0.1" + } + }, + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz", + "integrity": "sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" } }, "node_modules/@napi-rs/nice-android-arm64": { @@ -3908,6 +4406,19 @@ "node": ">= 10" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" + } + }, "node_modules/@ngtools/webpack": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.0.3.tgz", @@ -4245,58 +4756,6 @@ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "license": "MIT" }, - "node_modules/@originjs/vite-plugin-federation": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@originjs/vite-plugin-federation/-/vite-plugin-federation-1.4.1.tgz", - "integrity": "sha512-Uo08jW5pj1t58OUKuZNkmzcfTN2pqeVuAWCCiKf/75/oll4Efq4cHOqSE1FXMlvwZNGDziNdDyBbQ5IANem3CQ==", - "license": "MulanPSL-2.0", - "dependencies": { - "estree-walker": "^3.0.2", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0", - "pnpm": ">=7.0.1" - } - }, - "node_modules/@originjs/vite-plugin-federation/node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": "^12.18.3 || >=14" - } - }, - "node_modules/@parcel/source-map/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -4790,134 +5249,382 @@ "license": "MIT", "optional": true, "os": [ - "linux" - ] + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", + "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", + "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", + "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", + "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", + "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", + "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", + "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", + "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", + "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.5.tgz", + "integrity": "sha512-tlZfDHfGu765FBL3hIyjrr8slJZztv7rCM+KIczZS7UlJQDl1+WsDKUe/+E1Fw9SlmorLWK40+y3rLTHmMrN2A==", + "license": "MIT", + "peer": true, + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.7.5", + "@rspack/binding-darwin-x64": "1.7.5", + "@rspack/binding-linux-arm64-gnu": "1.7.5", + "@rspack/binding-linux-arm64-musl": "1.7.5", + "@rspack/binding-linux-x64-gnu": "1.7.5", + "@rspack/binding-linux-x64-musl": "1.7.5", + "@rspack/binding-wasm32-wasi": "1.7.5", + "@rspack/binding-win32-arm64-msvc": "1.7.5", + "@rspack/binding-win32-ia32-msvc": "1.7.5", + "@rspack/binding-win32-x64-msvc": "1.7.5" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.5.tgz", + "integrity": "sha512-dg2/IrF+g498NUt654N8LFWfIiUsHlTankWieE1S3GWEQM6jweeRbNuu1Py1nWIUsjR2yQtv7ziia7c9Q8UTaQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", - "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.5.tgz", + "integrity": "sha512-RQJX4boQJUu3lo1yiN344+y8W6iSO08ARXIZqFPg66coOgfX1lhsXQSRJGQEQG4PAcYuC0GmrYFzErliifbc1Q==", "cpu": [ - "ppc64" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "darwin" + ], + "peer": true }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", - "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.5.tgz", + "integrity": "sha512-R7CO1crkJQLIQpJQzf+6DMHjvcvH/VxsatS5CG897IIT2aAfBeQuQAO+ERJko/UwSZam2K8Rxjuopcu5A2jsTQ==", "cpu": [ - "riscv64" + "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", - "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.5.tgz", + "integrity": "sha512-moDVFD06ISZi+wCIjJLzQSr8WO8paViacSHk+rOKQxwKI96cPoC4JFkz0+ibT2uks4i2ecs4Op48orsoguiXxw==", "cpu": [ - "riscv64" + "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", - "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.5.tgz", + "integrity": "sha512-LGtdsdhtA5IxdMptj2NDVEbuZF4aqM99BVn3saHp92A4Fn20mW9UtQ+19PtaOFdbQBUN1GcP+cosrJ1wY56hOg==", "cpu": [ - "s390x" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", - "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.5.tgz", + "integrity": "sha512-V1HTvuj0XF/e4Xnixqf7FrxdCtTkYqn26EKwH7ExUFuVBh4SsLGr29EK5SOXBG0xdy5TSEUokMup7cuONPb3Hw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", - "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", + "node_modules/@rspack/binding-wasm32-wasi": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.5.tgz", + "integrity": "sha512-rGNHrk2QuLFfwOTib91skuLh2aMYeTP4lgM4zanDhtt95DLDlwioETFY7FzY1WmS+Z3qnEyrgQIRp8osy0NKTw==", "cpu": [ - "x64" + "wasm32" ], - "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ] + "peer": true, + "dependencies": { + "@napi-rs/wasm-runtime": "1.0.7" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", - "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.5.tgz", + "integrity": "sha512-eLyD9URS9M2pYa7sPICu9S0OuDAMnnGfuqrZYlrtgnEOEgimaG39gX6ENLwHvlNulaVMMFTNbDnS/2MELZ7r7g==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", - "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.5.tgz", + "integrity": "sha512-ZT4eC8hHWzweA6S4Tl2c/z/fvhbU7Wnh+l76z+qmDy8wuA8uNrHgIb1mHLPli/wsqcjmIy8rDO9gkIBitg5I+w==", "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", - "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.5.tgz", + "integrity": "sha512-a2j10QS3dZvW+gdu+FXteAkChxsK2g9BRUOmpt13w22LkiGrdmOkMQyDWRgJNxUGJTlqIUqtXxs72nTTlzo2Sw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "peer": true + }, + "node_modules/@rspack/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.5.tgz", + "integrity": "sha512-W1ChLhjBxGg6y4AHjEVjhcww/FZJ2O9obR0EOlYcfrfQGojCAUMeQjbmaF2sse5g5m0vSCaPtNYkycZ0qVRk1A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/runtime-tools": "0.22.0", + "@rspack/binding": "1.7.5", + "@rspack/lite-tapable": "1.1.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/error-codes": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", + "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", + "license": "MIT", + "peer": true + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", + "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/error-codes": "0.22.0", + "@module-federation/runtime-core": "0.22.0", + "@module-federation/sdk": "0.22.0" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime-core": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", + "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/error-codes": "0.22.0", + "@module-federation/sdk": "0.22.0" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", + "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/runtime": "0.22.0", + "@module-federation/webpack-bundler-runtime": "0.22.0" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/sdk": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", + "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", + "license": "MIT", + "peer": true + }, + "node_modules/@rspack/core/node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", + "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@module-federation/runtime": "0.22.0", + "@module-federation/sdk": "0.22.0" + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", + "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==", + "license": "MIT", + "peer": true }, "node_modules/@schematics/angular": { "version": "20.0.3", @@ -5023,83 +5730,11 @@ "dev": true, "license": "MIT" }, - "node_modules/@softarc/native-federation": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@softarc/native-federation/-/native-federation-3.2.0.tgz", - "integrity": "sha512-vXF/KyuSgUeX0uKt5IRfV5CF8eaggxxo/2FJeEIvTSEEl5UatNu2vol+mQ5JwBxc06VD068q2VsnV6t5VIVC0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@softarc/native-federation-runtime": "3.2.0", - "chalk": "^4.1.2", - "fast-glob": "^3.3.3", - "json5": "^2.2.0" - }, - "peerDependencies": { - "@softarc/sheriff-core": "^0.18.0" - } - }, "node_modules/@softarc/native-federation-node": { "version": "2.0.28", "resolved": "https://registry.npmjs.org/@softarc/native-federation-node/-/native-federation-node-2.0.28.tgz", "integrity": "sha512-yoelMl9S/lid2yZ6r0f9vSYzUZcqpBPVUWa8qqaip0pPMlo7M7HqJL9Vmw2dTIB5+Fmgt1B5h6VWg5pb7jspyg==" }, - "node_modules/@softarc/native-federation-runtime": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@softarc/native-federation-runtime/-/native-federation-runtime-3.2.0.tgz", - "integrity": "sha512-tDx9toxQi8YPhkW6VwaCaJ6z+3BARo5MjbWSOpHBgIFCHpoApKDopDQ+fDvjMU96jejRhAHL4WJJW0CYskDizA==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - } - }, - "node_modules/@softarc/native-federation/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@softarc/native-federation/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@softarc/sheriff-core": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/@softarc/sheriff-core/-/sheriff-core-0.18.1.tgz", - "integrity": "sha512-gJg7Uw3eC1So89ZbFpYvg0DT+XPtTXaAQ1MKj1oKhuiZmzK2tX4Gq5qCPeR+cOyxs1+ZagYC1JIO7UlcKQbQKw==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "sheriff": "src/bin/main.js" - }, - "peerDependencies": { - "typescript": ">=4.8" - } - }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", @@ -5150,6 +5785,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", @@ -5206,7 +5852,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/estree": "*", @@ -5217,7 +5863,7 @@ "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/eslint": "*", @@ -5228,6 +5874,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "devOptional": true, "license": "MIT" }, "node_modules/@types/express": { @@ -5291,7 +5938,7 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/mime": { @@ -5305,7 +5952,7 @@ "version": "24.0.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz", "integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~7.8.0" @@ -5342,6 +5989,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "license": "MIT", + "peer": true + }, "node_modules/@types/send": { "version": "0.17.5", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", @@ -5395,24 +6049,143 @@ "@types/node": "*" } }, - "node_modules/@vitejs/plugin-basic-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.0.0.tgz", - "integrity": "sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==", + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.0.0.tgz", + "integrity": "sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^6.0.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz", + "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.4", + "@vue/shared": "3.5.22", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz", + "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz", + "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.4", + "@vue/compiler-core": "3.5.22", + "@vue/compiler-dom": "3.5.22", + "@vue/compiler-ssr": "3.5.22", + "@vue/shared": "3.5.22", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.19", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz", + "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.22.tgz", + "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.22.tgz", + "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz", + "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.22", + "@vue/runtime-core": "3.5.22", + "@vue/shared": "3.5.22", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.22.tgz", + "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "dependencies": { + "@vue/compiler-ssr": "3.5.22", + "@vue/shared": "3.5.22" }, "peerDependencies": { - "vite": "^6.0.0" + "vue": "3.5.22" } }, + "node_modules/@vue/shared": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz", + "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==", + "dev": true, + "license": "MIT" + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", @@ -5423,28 +6196,28 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", @@ -5456,14 +6229,14 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -5476,7 +6249,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" @@ -5486,7 +6259,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" @@ -5496,14 +6269,14 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -5520,7 +6293,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -5534,7 +6307,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -5547,7 +6320,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -5562,7 +6335,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -5573,14 +6346,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, + "devOptional": true, "license": "Apache-2.0" }, "node_modules/@yarnpkg/lockfile": { @@ -5604,7 +6377,6 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, "license": "MIT", "dependencies": { "mime-types": "~2.1.34", @@ -5618,7 +6390,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -5628,7 +6399,7 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -5666,6 +6437,16 @@ "node": ">=8.9.0" } }, + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.0" + } + }, "node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", @@ -5680,9 +6461,8 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, + "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5716,7 +6496,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" @@ -5729,7 +6509,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5829,6 +6608,23 @@ "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==", + "license": "MIT", + "peer": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -5867,6 +6663,18 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-loader": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", @@ -6165,7 +6973,7 @@ "version": "4.25.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "opencollective", @@ -6181,7 +6989,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001718", "electron-to-chromium": "^1.5.160", @@ -6195,11 +7002,24 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "license": "(MIT OR Apache-2.0)", + "peer": true, + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/bundle-name": { @@ -6360,11 +7180,24 @@ "node": ">=18" } }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "license": "MIT", + "peer": true, + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6378,7 +7211,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -6391,6 +7223,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "engines": { + "node": "*" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -6405,7 +7245,7 @@ "version": "1.0.30001723", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", - "dev": true, + "devOptional": true, "funding": [ { "type": "opencollective", @@ -6472,7 +7312,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0" @@ -6666,6 +7506,17 @@ "node": ">=0.10.0" } }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "peer": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -6691,11 +7542,24 @@ "dev": true, "license": "MIT" }, + "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==", + "license": "MIT", + "peer": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/compressible": { @@ -6915,7 +7779,6 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" @@ -6928,7 +7791,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -6958,6 +7820,20 @@ "dev": true, "license": "MIT" }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", @@ -7096,6 +7972,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -7204,6 +8093,13 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -7215,7 +8111,6 @@ "version": "4.0.14", "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true, "license": "MIT", "engines": { "node": ">=4.0" @@ -7225,7 +8120,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -7239,6 +8133,13 @@ } } }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "license": "MIT", + "peer": true + }, "node_modules/default-browser": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", @@ -7282,11 +8183,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT", + "peer": true + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -7296,7 +8213,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8", @@ -7417,7 +8333,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -7489,14 +8404,13 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.5.171", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz", "integrity": "sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/emoji-regex": { @@ -7520,7 +8434,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -7530,7 +8443,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -7541,7 +8453,6 @@ "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", "optional": true, "dependencies": { @@ -7604,7 +8515,7 @@ "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -7701,7 +8612,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7711,7 +8621,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7721,7 +8630,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/es-module-shims": { @@ -7734,7 +8643,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -7743,6 +8651,22 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", @@ -7801,7 +8725,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -7811,24 +8735,13 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, "license": "MIT" }, - "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/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -7842,7 +8755,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -7855,7 +8768,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -7865,20 +8778,18 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", @@ -7911,12 +8822,25 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8.x" } }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "license": "MIT", + "peer": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/exponential-backoff": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", @@ -8063,7 +8987,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -8087,7 +9011,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -8138,19 +9062,6 @@ } } }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -8213,17 +9124,30 @@ "node": ">= 0.8" } }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, + "node_modules/find-file-up": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", + "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", "license": "MIT", + "peer": true, "dependencies": { - "locate-path": "^2.0.0" + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/find-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", + "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "find-file-up": "^2.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/flat": { @@ -8240,14 +9164,12 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true, + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -8280,6 +9202,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -8308,7 +9247,6 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -8318,7 +9256,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -8368,12 +9305,21 @@ "version": "1.1.2", "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" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -8411,7 +9357,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -8436,7 +9381,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -8475,18 +9419,57 @@ "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "devOptional": true, + "license": "BSD-2-Clause" + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "license": "MIT", + "peer": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "license": "MIT", + "peer": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC", + "peer": true }, "node_modules/globals": { "version": "11.12.0", @@ -8502,7 +9485,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8515,7 +9497,6 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, "license": "ISC" }, "node_modules/handle-thing": { @@ -8529,7 +9510,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8539,7 +9519,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8552,7 +9531,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -8568,7 +9546,6 @@ "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" @@ -8577,6 +9554,19 @@ "node": ">= 0.4" } }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "license": "MIT", + "peer": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/hosted-git-info": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", @@ -8683,6 +9673,47 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "license": "MIT", + "peer": true, + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", @@ -8931,7 +9962,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, "license": "ISC" }, "node_modules/ini": { @@ -8992,7 +10022,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -9043,6 +10072,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -9138,7 +10187,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -9173,6 +10221,16 @@ "dev": true, "license": "MIT" }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-wsl": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", @@ -9225,6 +10283,26 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-rslog": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.7.tgz", + "integrity": "sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=14.17.6" + } + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "ws": "*" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -9326,14 +10404,13 @@ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.7.1.tgz", "integrity": "sha512-QnurrtpKsPoixxG2R3d1xP0St/2kcX5oTZyDyQJMY+Vzi/HUlu1kGm+2V8Tz+9lV991leB1l0xcsyz40s9xOOw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -9348,7 +10425,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9508,13 +10585,6 @@ "node": ">=6" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", @@ -9529,7 +10599,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/json5": { @@ -9556,7 +10626,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -9578,7 +10647,6 @@ "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -9913,6 +10981,19 @@ "node": ">=10" } }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -9923,6 +11004,89 @@ "node": ">=0.10.0" } }, + "node_modules/koa": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.4.tgz", + "integrity": "sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.9.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "license": "MIT", + "peer": true + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "license": "MIT", + "peer": true, + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/launch-editor": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", @@ -9940,7 +11104,6 @@ "integrity": "sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -10147,27 +11310,11 @@ "@lmdb/lmdb-win32-x64": "3.3.0" } }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.11.5" @@ -10183,20 +11330,6 @@ "node": ">= 12.13.0" } }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -10204,6 +11337,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", + "license": "MIT", + "peer": true + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -10332,7 +11472,6 @@ "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", - "dev": true, "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", @@ -10345,6 +11484,13 @@ "node": ">=8.0" } }, + "node_modules/long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", + "license": "MIT", + "peer": true + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -10355,6 +11501,16 @@ "yallist": "^3.0.2" } }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -10408,7 +11564,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10418,7 +11573,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -10458,7 +11612,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/merge2": { @@ -10525,7 +11679,6 @@ "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" @@ -10535,7 +11688,6 @@ "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" @@ -10787,7 +11939,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/msgpackr": { @@ -10913,9 +12064,24 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, + "devOptional": true, "license": "MIT" }, + "node_modules/ngx-build-plus": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/ngx-build-plus/-/ngx-build-plus-20.0.0.tgz", + "integrity": "sha512-cm1ZMTACAN3DEqBt/alS84zwVGgL5HAl5Dk/wh7CPyGUBQnLaxiAhjFZ6iykxgSO3e9ebIZmDBvTC480piC1eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "webpack-merge": "^6.0.0" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">=20.0.0", + "@schematics/angular": ">=20.0.0", + "rxjs": ">= 6.0.0" + } + }, "node_modules/node-addon-api": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", @@ -10924,6 +12090,26 @@ "license": "MIT", "optional": true }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -11059,9 +12245,24 @@ "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, + "devOptional": true, "license": "MIT" }, + "node_modules/node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/nopt": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", @@ -11246,7 +12447,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, "license": "MIT", "dependencies": { "ee-first": "1.1.1" @@ -11291,6 +12491,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "peer": true + }, "node_modules/open": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", @@ -11336,46 +12542,20 @@ }, "node_modules/ordered-binary": { "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", - "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", + "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } + "optional": true }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^1.1.0" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/p-map": { @@ -11419,16 +12599,6 @@ "node": ">= 4" } }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -11480,20 +12650,6 @@ "node": ">=6" } }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", @@ -11504,6 +12660,16 @@ "node": ">= 0.10" } }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -11575,22 +12741,11 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -11614,7 +12769,6 @@ "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, "license": "MIT" }, "node_modules/path-scurry": { @@ -11650,7 +12804,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/picomatch": { @@ -11666,16 +12820,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/piscina": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.0.0.tgz", @@ -11689,20 +12833,6 @@ "@napi-rs/nice": "^1.0.1" } }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -11723,7 +12853,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -11866,16 +12995,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -11927,6 +13046,13 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT", + "peer": true + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -11989,11 +13115,18 @@ ], "license": "MIT" }, + "node_modules/rambda": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.2.tgz", + "integrity": "sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==", + "license": "MIT", + "peer": true + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" @@ -12025,6 +13158,29 @@ "node": ">= 0.8" } }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -12153,7 +13309,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12187,6 +13343,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "license": "MIT", + "peer": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -12281,7 +13451,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, "license": "MIT" }, "node_modules/rimraf": { @@ -12383,7 +13552,6 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -12392,7 +13560,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -12413,7 +13580,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -12431,7 +13597,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/sass": { @@ -12440,7 +13606,6 @@ "integrity": "sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -12505,11 +13670,18 @@ "license": "ISC", "optional": true }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT", + "peer": true + }, "node_modules/schema-utils": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", @@ -12529,7 +13701,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ajv": "^8.0.0" @@ -12645,7 +13817,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" @@ -12757,7 +13929,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, "license": "ISC" }, "node_modules/shallow-clone": { @@ -12895,89 +14066,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/signale/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/signale/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/signale/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/signale/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/signale/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/signale/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/sigstore": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.1.0.tgz", @@ -13164,6 +14252,13 @@ "node": ">= 14" } }, + "node_modules/sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", + "license": "MIT", + "peer": true + }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -13222,7 +14317,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -13233,7 +14328,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -13331,7 +14426,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -13354,7 +14448,6 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", - "dev": true, "license": "MIT", "dependencies": { "date-format": "^4.0.14", @@ -13481,21 +14574,10 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13508,7 +14590,6 @@ "version": "1.0.0", "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" @@ -13521,7 +14602,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -13632,7 +14713,7 @@ "version": "5.39.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.1.tgz", "integrity": "sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -13651,7 +14732,7 @@ "version": "5.3.14", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -13749,12 +14830,17 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, "node_modules/tree-dump": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz", @@ -13786,8 +14872,17 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.6.x" + } }, "node_modules/tuf-js": { "version": "3.0.1", @@ -13821,7 +14916,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -13842,9 +14936,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -13884,7 +14976,7 @@ "version": "7.8.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -13961,7 +15053,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -13977,11 +15068,22 @@ "node": ">= 0.8" } }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, + "devOptional": true, "funding": [ { "type": "opencollective", @@ -14060,7 +15162,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -14072,7 +15173,6 @@ "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -14152,11 +15252,33 @@ "node": ">=0.10.0" } }, + "node_modules/vue": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz", + "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.22", + "@vue/compiler-sfc": "3.5.22", + "@vue/runtime-dom": "3.5.22", + "@vue/server-renderer": "3.5.22", + "@vue/shared": "3.5.22" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", @@ -14184,13 +15306,18 @@ "license": "MIT", "optional": true }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, "node_modules/webpack": { "version": "5.99.8", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.8.tgz", "integrity": "sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==", - "dev": true, + "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", @@ -14269,7 +15396,6 @@ "integrity": "sha512-ml/0HIj9NLpVKOMq+SuBPLHcmbG+TGIjXRHsYfZwocUBIqEvws8NnS/V9AFQ5FKP+tgn5adwVwRrTEpGL33QFQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -14439,7 +15565,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.2.tgz", "integrity": "sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10.13.0" @@ -14471,7 +15597,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/websocket-driver": { @@ -14499,11 +15625,20 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -14519,6 +15654,15 @@ "dev": true, "license": "MIT" }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -14699,7 +15843,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=10.0.0" @@ -14818,6 +15961,16 @@ "node": ">=8" } }, + "node_modules/ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -14848,8 +16001,7 @@ "version": "0.15.1", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", - "license": "MIT", - "peer": true + "license": "MIT" } } } diff --git a/package.json b/package.json index 559d18c..b9244cd 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,20 @@ { - "name": "mf-angular-20", + "name": "dynamic-template-editor", "version": "0.0.0", "scripts": { "start:shell": "ng s shell", "build:shell": "ng build shell", "serve:shell": "cd dist/shell/browser && npx serve -l 4200 --cors", - - "start:first-mf": "ng s first-mf", - "build:first-mf": "ng build first-mf", - "serve:first-mf": "cd dist/first-mf/browser && npx serve -l 4201 --cors", - "start:template-editor": "cd projects/template-editor && vite", "build:template-editor": "cd projects/template-editor && vite build", "serve:template-editor": "cd dist/template-editor && npx serve -l 4202 --cors", - - "build:all": "concurrently \"npm run build:shell\" \"npm run build:first-mf\" \"npm run build:template-editor\"", - "serve:all": "concurrently \"npm run serve:shell\" \"npm run serve:first-mf\" \"npm run serve:template-editor\"", - - "build:all:demo": "concurrently \"ng build shell --configuration=demo\" \"ng build first-mf --configuration=demo\" \"cd projects/template-editor && vite build --mode demo\"" + "build:all": "concurrently \"npm run build:shell\" \"npm run build:template-editor\"", + "serve:all": "concurrently \"npm run serve:shell\" \"npm run serve:template-editor\"", + "build:all:demo": "concurrently \"ng build shell --configuration=demo\" \"cd projects/template-editor && vite build --mode demo\"" }, "private": true, "dependencies": { + "@angular-architects/module-federation": "^20.0.0", "@angular/animations": "^20.0.0", "@angular/common": "^20.0.0", "@angular/compiler": "^20.0.0", @@ -36,7 +30,6 @@ "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-architects/native-federation": "^20.0.6", "@angular-devkit/build-angular": "^20.0.3", "@angular/build": "^20.0.3", "@angular/cli": "^20.0.2", @@ -50,6 +43,8 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.8.2" + "ngx-build-plus": "^20.0.0", + "typescript": "~5.8.2", + "vue": "^3.5.22" } } diff --git a/projects/first-mf/federation.config.js b/projects/first-mf/federation.config.js deleted file mode 100644 index 6ad20bc..0000000 --- a/projects/first-mf/federation.config.js +++ /dev/null @@ -1,26 +0,0 @@ -const { withNativeFederation, shareAll } = require('@angular-architects/native-federation/config'); - -module.exports = withNativeFederation({ - - name: 'first-mf', - - exposes: { - './Component': './projects/first-mf/src/app/app.ts', - }, - - shared: { - ...shareAll({ singleton: true, strictVersion: true, requiredVersion: 'auto' }), - }, - - skip: [ - 'rxjs/ajax', - 'rxjs/fetch', - 'rxjs/testing', - 'rxjs/webSocket', - ], - - features: { - ignoreUnusedDeps: true - } - -}); diff --git a/projects/first-mf/public/favicon.ico b/projects/first-mf/public/favicon.ico deleted file mode 100644 index 57614f9..0000000 Binary files a/projects/first-mf/public/favicon.ico and /dev/null differ diff --git a/projects/first-mf/src/app/app.config.ts b/projects/first-mf/src/app/app.config.ts deleted file mode 100644 index d953f4c..0000000 --- a/projects/first-mf/src/app/app.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core'; -import { provideRouter } from '@angular/router'; - -import { routes } from './app.routes'; - -export const appConfig: ApplicationConfig = { - providers: [ - provideBrowserGlobalErrorListeners(), - provideZoneChangeDetection({ eventCoalescing: true }), - provideRouter(routes) - ] -}; diff --git a/projects/first-mf/src/app/app.html b/projects/first-mf/src/app/app.html deleted file mode 100644 index be08392..0000000 --- a/projects/first-mf/src/app/app.html +++ /dev/null @@ -1 +0,0 @@ -

First MicroFront-End working !!! Put your application here

\ No newline at end of file diff --git a/projects/first-mf/src/app/app.routes.ts b/projects/first-mf/src/app/app.routes.ts deleted file mode 100644 index dc39edb..0000000 --- a/projects/first-mf/src/app/app.routes.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Routes } from '@angular/router'; - -export const routes: Routes = []; diff --git a/projects/first-mf/src/app/app.scss b/projects/first-mf/src/app/app.scss deleted file mode 100644 index e69de29..0000000 diff --git a/projects/first-mf/src/app/app.spec.ts b/projects/first-mf/src/app/app.spec.ts deleted file mode 100644 index 7fd7547..0000000 --- a/projects/first-mf/src/app/app.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { App } from './app'; - -describe('App', () => { - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [App], - }).compileComponents(); - }); - - it('should create the app', () => { - const fixture = TestBed.createComponent(App); - const app = fixture.componentInstance; - expect(app).toBeTruthy(); - }); - - it('should render title', () => { - const fixture = TestBed.createComponent(App); - fixture.detectChanges(); - const compiled = fixture.nativeElement as HTMLElement; - expect(compiled.querySelector('h1')?.textContent).toContain('Hello, first-mf'); - }); -}); diff --git a/projects/first-mf/src/app/app.ts b/projects/first-mf/src/app/app.ts deleted file mode 100644 index 4681bee..0000000 --- a/projects/first-mf/src/app/app.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-first-mf-root', - templateUrl: './app.html', - styleUrl: './app.scss' -}) -export class App { - protected title = 'first-mf'; -} diff --git a/projects/first-mf/src/bootstrap.ts b/projects/first-mf/src/bootstrap.ts deleted file mode 100644 index 5df75f9..0000000 --- a/projects/first-mf/src/bootstrap.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { bootstrapApplication } from '@angular/platform-browser'; -import { appConfig } from './app/app.config'; -import { App } from './app/app'; - -bootstrapApplication(App, appConfig) - .catch((err) => console.error(err)); diff --git a/projects/first-mf/src/index.html b/projects/first-mf/src/index.html deleted file mode 100644 index 28e70d4..0000000 --- a/projects/first-mf/src/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - FirstMf - - - - - - - - diff --git a/projects/first-mf/src/main.ts b/projects/first-mf/src/main.ts deleted file mode 100644 index ed18d47..0000000 --- a/projects/first-mf/src/main.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { initFederation } from '@angular-architects/native-federation'; - -initFederation() - .catch(err => console.error(err)) - .then(_ => import('./bootstrap')) - .catch(err => console.error(err)); diff --git a/projects/first-mf/src/styles.scss b/projects/first-mf/src/styles.scss deleted file mode 100644 index 90d4ee0..0000000 --- a/projects/first-mf/src/styles.scss +++ /dev/null @@ -1 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ diff --git a/projects/first-mf/tsconfig.app.json b/projects/first-mf/tsconfig.app.json deleted file mode 100644 index 742c488..0000000 --- a/projects/first-mf/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ -/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/app", - "types": [] - }, - "include": [ - "src/**/*.ts" - ], - "exclude": [ - "src/**/*.spec.ts" - ] -} diff --git a/projects/first-mf/tsconfig.spec.json b/projects/first-mf/tsconfig.spec.json deleted file mode 100644 index 0feea88..0000000 --- a/projects/first-mf/tsconfig.spec.json +++ /dev/null @@ -1,14 +0,0 @@ -/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ -/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "include": [ - "src/**/*.ts" - ] -} diff --git a/projects/shared/helpers/index.ts b/projects/shared/helpers/index.ts index 97532c7..64678cb 100644 --- a/projects/shared/helpers/index.ts +++ b/projects/shared/helpers/index.ts @@ -1,2 +1 @@ -export * from './print'; -export * from './load-remote-module'; \ No newline at end of file +export * from './print'; \ No newline at end of file diff --git a/projects/shared/helpers/load-remote-module.ts b/projects/shared/helpers/load-remote-module.ts deleted file mode 100644 index 1fcaacc..0000000 --- a/projects/shared/helpers/load-remote-module.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { - initFederation as initFederationLib, - loadRemoteModule as loadRemoteModuleLib, - LoadRemoteModuleOptions -} from '@angular-architects/native-federation'; - - -interface FederationContainer { - init?: (shareScope: any) => Promise; - get: (module: string) => Promise<() => any>; -} - -let remotesCache: { [remoteName: string]: string } = {}; - -// Overload signatures -export function loadRemoteModule(config: LoadRemoteModuleOptions): Promise; -export function loadRemoteModule(remoteName: string, exposedModule: string): Promise; -export function loadRemoteModule( - remoteNameOrConfig: string | LoadRemoteModuleOptions, - exposedModule?: string -): Promise { - // Xử lý cả hai cách gọi - let config: LoadRemoteModuleOptions; - - if (typeof remoteNameOrConfig === 'string') { - // Cách gọi mới: loadRemoteModule(remoteName, exposedModule) - if (!exposedModule) { - throw new Error('exposedModule is required when using string parameters'); - } - config = { - remoteName: remoteNameOrConfig, - exposedModule - }; - } else { - // Cách gọi cũ: loadRemoteModule({ remoteName, remoteEntry, exposedModule }) - config = remoteNameOrConfig; - } - - return loadRemoteModuleImpl(config); -} - -// Implementation chính -async function loadRemoteModuleImpl({ - remoteName, - remoteEntry, - exposedModule, -}: LoadRemoteModuleOptions): Promise { - // Validate input - if (!remoteEntry && !remoteName) { - throw new Error( - 'You must provide either remoteEntry or remoteName to load the remote module.' - ); - } - - // Resolve URL entry - const urlEntry = remoteEntry ?? remotesCache[remoteName!]; - - if (!urlEntry) { - throw new Error( - `Unable to resolve remote module. remoteName: ${remoteName}, remoteEntry: ${remoteEntry}. Did you call initFederation first?` - ); - } - - // Handle esbuild/webpack remotes (JSON-based) - if (urlEntry.endsWith('remoteEntry.json')) { - return loadRemoteModuleLib({ - remoteName, - remoteEntry: urlEntry, - exposedModule - }); - } - - // Handle Vite remotes (JS-based) - if (urlEntry.endsWith('remoteEntry.js')) { - try { - const container: FederationContainer = await import(/* @vite-ignore */ urlEntry); - - // Initialize container if needed - await container.init?.({}); - - // Get exposed module factory - const factory = await container.get(exposedModule); - - if (!factory) { - throw new Error(`Exposed module '${exposedModule}' not found in remote`); - } - - // Return the actual module - return factory() as T; - } catch (error: any) { - throw new Error( - `Failed to load remote module '${exposedModule}' from ${urlEntry}: ${error.message}` - ); - } - } - - throw new Error(`Unsupported remote entry format: ${urlEntry}`); -} -export async function initFederation(manifestUrl: string): Promise; -export async function initFederation(remotes: { [remoteName: string]: string }): Promise; -export async function initFederation(manifestUrlOrRemotes: string | { [remoteName: string]: string }): Promise { - if (typeof manifestUrlOrRemotes === 'string') { - // Xử lý khi là federation.manifest.json - await initFederationFromManifest(manifestUrlOrRemotes); - } else { - // Xử lý khi là object remotes (cách cũ) - await initFederationFromRemotes(manifestUrlOrRemotes); - } -} - -async function initFederationFromManifest(manifestUrl: string): Promise { - try { - // Tải manifest file - const response = await fetch(manifestUrl); - if (!response.ok) { - throw new Error(`HTTP ${response.status}: ${response.statusText}`); - } - - const remotes = await response.json(); - - // Validate manifest structure - if (!remotes || typeof remotes !== 'object') { - throw new Error('Invalid manifest structure: missing "remotes" object'); - } - - // Khởi tạo với các remotes từ manifest - await initFederationFromRemotes(remotes); - - } catch (error) { - console.error(`Failed to load federation manifest from ${manifestUrl}:`, error); - throw error; - } -} - -async function initFederationFromRemotes(remotes: { [remoteName: string]: string }): Promise { - remotesCache = { ...remotes }; - - const viteRemotes = Object.fromEntries( - Object.entries(remotes).filter(([_, url]) => url.endsWith('remoteEntry.js')) - ); - - const esBuildRemotes = Object.fromEntries( - Object.entries(remotes).filter(([_, url]) => url.endsWith('remoteEntry.json')) - ); - - await initFederationLib(esBuildRemotes); -} \ No newline at end of file diff --git a/projects/shared/types/component-factory.interface.ts b/projects/shared/types/component-factory.interface.ts index e336b0c..bd00089 100644 --- a/projects/shared/types/component-factory.interface.ts +++ b/projects/shared/types/component-factory.interface.ts @@ -1,6 +1,5 @@ - -export interface VueModule { - createPreview: ()=> void; // Function that creates and returns a Vue instance - createApp: ()=> void; - [key: string]: any; +import { App } from 'vue'; +export interface ComponentFactory { + createPreview: () => App; // Function that creates and returns a Vue instance + createRoot: () => App; } diff --git a/projects/shared/utils/virtual-html-parser.ts b/projects/shared/utils/virtual-html-parser.ts index b1122e3..fcf4a7d 100644 --- a/projects/shared/utils/virtual-html-parser.ts +++ b/projects/shared/utils/virtual-html-parser.ts @@ -122,7 +122,7 @@ export class VirtualHTMLParser { const attrs: Record = {}; if (!attributeString.trim()) return attrs; - const attrRegex = /([a-zA-Z-:@]+)(?:\s*=\s*"([^"]*)"|\s*=\s*'([^']*)')?/g; + const attrRegex = /([#a-zA-Z-:@]+)(?:\s*=\s*"([^"]*)"|\s*=\s*'([^']*)')?/g; let match; let lastIndex = 0; diff --git a/projects/shell/federation.config.js b/projects/shell/federation.config.js deleted file mode 100644 index b0d99ed..0000000 --- a/projects/shell/federation.config.js +++ /dev/null @@ -1,20 +0,0 @@ -const { withNativeFederation, shareAll } = require('@angular-architects/native-federation/config'); - -module.exports = withNativeFederation({ - - shared: { - ...shareAll({ singleton: true, strictVersion: true, requiredVersion: 'auto' }), - }, - - skip: [ - 'rxjs/ajax', - 'rxjs/fetch', - 'rxjs/testing', - 'rxjs/webSocket', - ], - - features: { - ignoreUnusedDeps: true - } - -}); diff --git a/projects/shell/public/federation.manifest.demo.json b/projects/shell/public/federation.manifest.demo.json index 0307cbd..3995680 100644 --- a/projects/shell/public/federation.manifest.demo.json +++ b/projects/shell/public/federation.manifest.demo.json @@ -1,4 +1,3 @@ { - "firstMf": "/mfe-angular/first-mf/remoteEntry.json", - "templateEditor": "/mfe-angular/template-editor/assets/remoteEntry.js" + "templateEditor": "/dynamic-template-editor/template-editor/assets/remoteEntry.js" } \ No newline at end of file diff --git a/projects/shell/public/federation.manifest.json b/projects/shell/public/federation.manifest.json index c59d669..2afaeae 100644 --- a/projects/shell/public/federation.manifest.json +++ b/projects/shell/public/federation.manifest.json @@ -1,4 +1,3 @@ { - "firstMf": "http://localhost:4201/remoteEntry.json", "templateEditor": "http://localhost:4202/assets/remoteEntry.js" } \ No newline at end of file diff --git a/projects/shell/src/app/app.html b/projects/shell/src/app/app.html index 9b3871e..c8547e9 100644 --- a/projects/shell/src/app/app.html +++ b/projects/shell/src/app/app.html @@ -14,11 +14,6 @@ Vue page -
  • - - First MF - -
  • diff --git a/projects/shell/src/app/app.routes.ts b/projects/shell/src/app/app.routes.ts index 8479402..0fb8841 100644 --- a/projects/shell/src/app/app.routes.ts +++ b/projects/shell/src/app/app.routes.ts @@ -1,8 +1,8 @@ import { Routes } from '@angular/router'; -import { loadRemoteModule } from 'shared/helpers'; +import { loadRemoteModule } from '@angular-architects/module-federation'; import { Home } from './pages/home/home'; import { createVueWrapperComponent } from '../helpers'; -import { VueModule } from 'shared/types'; +import { ComponentFactory } from 'shared/types'; export const routes: Routes = [ { @@ -16,17 +16,12 @@ export const routes: Routes = [ // // remoteEntry: 'http://localhost:4202/assets/remoteEntry.js', // remoteName: 'templateEditor', // exposedModule: './component-factory', - // }).then((m: VueModule) => + // }).then((m: ComponentFactory) => // createVueWrapperComponent(m.createApp) // ), - loadRemoteModule('templateEditor', './component-factory').then((m: VueModule) => - createVueWrapperComponent(m.createApp) + loadRemoteModule('templateEditor', './component-factory').then((m: ComponentFactory) => + createVueWrapperComponent(m.createRoot) ), }, - { - path: 'first', - loadComponent: () => - loadRemoteModule('firstMf', './Component').then((m) => m.App), - }, { path: '**', component: Home }, ]; diff --git a/projects/shell/src/app/components/template-editor/template-editor.ts b/projects/shell/src/app/components/template-editor/template-editor.ts index 1f3032f..69e92a5 100644 --- a/projects/shell/src/app/components/template-editor/template-editor.ts +++ b/projects/shell/src/app/components/template-editor/template-editor.ts @@ -1,6 +1,7 @@ import { Component, Input, OnInit, OnDestroy, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core'; import { VueLoader } from '../../services/vue-loader'; import { FormsModule } from '@angular/forms'; +import { App, ComponentPublicInstance } from 'vue'; @Component({ selector: 'template-editor', @@ -9,33 +10,45 @@ import { FormsModule } from '@angular/forms'; template: `
    `, }) export class TemplateEditor implements OnInit, OnChanges, OnDestroy { - app: any = null; - vm: any = null; + app: App | null = null; + vm: ComponentPublicInstance | null = null; @Input('template') template = ''; @Output() templateChange = new EventEmitter(); - @Input('data') data = {}; - @Output() dataChange = new EventEmitter(); + @Input('context') context = {}; + @Output() contextChange = new EventEmitter(); + + @Input('editMode') editMode = true; + @Output() editModeChange = new EventEmitter(); constructor(private vueLoader: VueLoader) {} async ngOnInit() { this.app = await this.vueLoader.createPreview(); + if (!this.app) return console.error('Failed to load Vue preview component.'); this.vm = this.app.mount('#template-editor'); - this.vm.data = this.data; - this.vm.template = this.template; - this.dataChange.emit(this.vm.data); + const data = this.vm.$data as any; + data.template = this.template; + data.context = this.context; + this.contextChange.emit(data.context); + data.editMode = true; this.vm.$watch('template', (newVal: any) => { this.templateChange.emit(newVal); }); - + this.vm.$watch('editMode', (newVal: any) => { + this.editModeChange.emit(newVal); + }); } ngOnChanges(changes: SimpleChanges): void { if (!this.vm) return; + const data = this.vm.$data as any; if (changes['template']) { - this.vm.template = this.template; + data.template = this.template; + } + if (changes['editMode']) { + data.editMode = this.editMode; } } diff --git a/projects/shell/src/app/pages/home/home.html b/projects/shell/src/app/pages/home/home.html index da9ce7a..ea5ff75 100644 --- a/projects/shell/src/app/pages/home/home.html +++ b/projects/shell/src/app/pages/home/home.html @@ -1,3 +1,4 @@ - + - + + diff --git a/projects/shell/src/app/pages/home/home.ts b/projects/shell/src/app/pages/home/home.ts index 06d0ce8..ac8ef78 100644 --- a/projects/shell/src/app/pages/home/home.ts +++ b/projects/shell/src/app/pages/home/home.ts @@ -1,6 +1,7 @@ import { Component, ViewChild } from '@angular/core'; import { TemplateEditor } from '../../components/template-editor/template-editor'; import { FormsModule } from '@angular/forms'; +import { JsonPipe } from '@angular/common'; @Component({ selector: 'app-shell-home', @@ -9,26 +10,77 @@ import { FormsModule } from '@angular/forms'; styleUrl: './home.scss' }) export class Home{ - template = ` -
    {{ data.name }}
    -

    Tuổi: {{ data.age }}

    - - - - -
    \ No newline at end of file diff --git a/projects/template-editor/src/components/preview/PreviewWrapper.vue b/projects/template-editor/src/components/preview/PreviewWrapper.vue index ba280e6..5cad399 100644 --- a/projects/template-editor/src/components/preview/PreviewWrapper.vue +++ b/projects/template-editor/src/components/preview/PreviewWrapper.vue @@ -1,5 +1,6 @@ @@ -7,23 +8,610 @@ import Preview from './Preview.vue'; import "codemirror/mode/htmlmixed/htmlmixed.js" import '@imengyu/vue3-context-menu/lib/vue3-context-menu.css' +import DatePickerPortal from '../forms/DatePickerPortal.vue'; +import moment from 'moment'; export default { name: 'PreviewWrapper', - components: { Preview }, + components: { Preview, DatePickerPortal }, data() { return { - data: { }, - template: ` -
    {{ data.name }}
    -

    Tuổi: {{ data.age }}

    - + +
    InputOTP
    + + +
    Context menu (directive v-context-menu)
    +
    + Chuột phải vào: {{ item.label }} +
    + + + + +
    Select one
    + +
    Tags đã chọn {{ data.tags }}
    + +
    DatePicker - Chọn ngày sinh
    + + + + +
    Ngày sinh đã chọn: {{ data.birthday }}
    + +
    DatePicker - Định dạng chữ
    + +
    Giá trị: {{ data.birthdayText }}
    + +
    DatePicker (datetime) - Giờ hẹn
    + +
    Ngày giờ đã chọn: {{ data.appointment }}
    + +
    Checkbox - Size
    + + + + + +
    Giá trị: {{ data.sizeTest }}
    + +
    Paint - Chữ ký
    + +
    +
    Ảnh đã lưu:
    + signature +
    + +
    Signature - Ký
    + + {{hsBenhAn.NguyenNhanTuVong}} + +
    + `, + context: { + moment: moment, + log: console.log, + config: { + TenBenhVien: "BV ĐK H. PHÚ XUYÊN", + }, + "hsBenhAn": { + "sHoTenBenhNhan": null, + "sDiaChi": null, + "sNgaySinh": "0001-01-01T00:00:00", + "sTenLoaiBenhAn": null, + "HoTenBN": null, + "Domain": "01821", + "IdLoaiBenhAn": "54970a97-9f69-47e6-9df0-fedb94160c6c", + "IdBenhNhan": "28615616-c30a-4d25-9137-439004e9ae1e", + "Ma": "BA25006097", + "MaBV": "BA25006097", + "SoVaoVien": "0624", + "SoVaoKhoa": null, + "MaYTe": "10182125005781", + "HoTenBenhNhan": "Đỗ Như Muốn", + "DiaChi": "TK PHÚ MỸ, Thị trấn Phú Xuyên, Huyện Phú Xuyên, Thành phố Hà Nội", + "NgaySinh": "1977-03-05T00:00:00", + "SoBHYT": "BT2010123881042", + "NgayHieuLucBH": "2025-01-01T00:00:00", + "NgayHetHanBH": "2025-12-31T00:00:00", + "BenhAnChiTietObj": { + "SoNgayDieuTriKhoaDau": 10, + "ListIcdRaVienBenhKemTheo": [], + "ListBenhYHCT": [], + "IcdNoiChuyenDen": null, + "IcdNoiChuyenDenMa": null, + "IcdNoiChuyenDenTen": "", + "IcdKKBCC": "a5efd89c-d049-445c-83b1-93de9213642c", + "IcdKKBCCMa": "J18", + "IcdKKBCCTen": "Viêm phổi, tác nhân không xác định", + "IcdVaoKhoaDieuTri": null, + "IcdVaoKhoaDieuTriMa": null, + "IcdVaoKhoaDieuTriTen": "", + "IcdRaVienBenhChinh": "a5efd89c-d049-445c-83b1-93de9213642c", + "IcdRaVienBenhChinhMa": "J18", + "IcdRaVienBenhChinhTen": "Viêm phổi, tác nhân không xác định", + "IcdTruocPT": null, + "IcdTruocPTMa": null, + "IcdTruocPTTen": "", + "IcdSauPT": null, + "IcdSauPTMa": null, + "IcdSauPTTen": "", + "CoSoTrucThuoc": "SỞ Y TẾ HÀ NỘI", + "TenBenhVien": "BV ĐK H. PHÚ XUYÊN", + "TenViTriGDPhieuTTHC": "Giám đốc", + "LyDoVaoVien": "hO đờm, khó thở ", + "QuaTrinhBenhLy": "Cách vào viện vài ngày, bệnh nhân ở nhà xuất hiện ho đờm, tức ngực, khó thở, mệt mỏi. vào viện", + "TienSuBenh_BanThan": "khoẻ mạnh ", + "TienSuBenh_GiaDinh": "Khoẻ mạnh ", + "KhamBenh_ToanThan": "Bệnh nhân tỉnh, tiếp xúc tốt \\nDa, niêm mạc kém hồng \\nThể trạng trung bình\\nKhông phù, không XHDD\\nTuyến giáp không to, hạch ngoại vi không sờ thấy ", + "KhamBenh_TuanHoan": "Chưa phát hiện tiếng tim bệnh lý \\nT1, T2 đều rõ ", + "KhamBenh_HoHap": "Phổi rales ẩm rải rác 2 bên phổi ", + "KhamBenh_TieuHoa": "Bụng mềm, không chướng ", + "KhamBenh_ThanKinh": "Chưa ghi nhận bất thường", + "KhamBenh_CoXuongKhop": "Chưa ghi nhận bất thường", + "KhamBenh_TaiMuiHong": "Chưa ghi nhận bất thường", + "KhamBenh_RangHamMat": "Chưa ghi nhận bất thường", + "KhamBenh_TietNieu": "Chưa ghi nhận bất thường", + "KhamBenh_xetNghiemCLSCanLam": "Tổng pttb máu, SHM, XQ ngực ", + "KhamBenh_tomTatBenhAn": "Bệnh nhân ở nhà xuất hiện ho, khó thở, Qua hỏi, khám tháy \\nHC nhiễm trùng (+)\\nTim đều \\nBụng mềm \\nPhổi rales ẩm, rales nổ ", + "KhamBenh_TienLuong": "Khá", + "KhamBenh_HuongDieuTri": "nội khoa ", + "KhamBenh_Mat": "Chưa ghi nhận bất thường", + "KhamBenh_NoiTiet": "Chưa ghi nhận bất thường", + "Mach": "82", + "NhietDo": "36.8", + "HuyetApToiDa": "120", + "HuyetApToiThieu": "70", + "NhipTho": "20" + }, + "BenhNhan": { + "Domain": "01821", + "Ma": "2100052345", + "MaTiemChung": null, + "CMND": null, + "HoTen": "Đỗ Như Muốn", + "HoTenKoDau": "do nhu muon", + "GioiTinh": false, + "NgaySinh": "1977-03-05T00:00:00", + "IsNamSinh": false, + "DiaChi": "TK PHÚ MỸ, Thị trấn Phú Xuyên, Huyện Phú Xuyên, Thành phố Hà Nội", + "SoNha": "TK PHÚ MỸ", + "TenXa": "Thị trấn Phú Xuyên", + "ThonPho": null, + "IdQuocTich": "e28c648f-be25-4597-90ce-7ec40031625e", + "MaQuocTich": "000", + "TenQuocTich": "Việt Nam", + "IdTinhThanh": "746df3a2-6488-4cd4-8ec9-0fc21d497ca9", + "TenTinh": "Thành phố Hà Nội", + "IdQuanHuyen": "f6e9ca34-c945-4a3d-9ab9-e5dbe28b23f9", + "TenHuyen": "Huyện Phú Xuyên", + "IdXaPhuong": "730efe32-15ed-433a-ba26-ddece4593d61", + "TenXaPhuong": null, + "TenDanToc": "Kinh", + "IdDanToc": "0ce19546-7d3c-4cb9-b328-4fb6bed417d2", + "IdNhomMau": null, + "IdNgheNghiep": "f39d6834-74a5-4aac-8603-2a26ab002023", + "MaNgheNghiep": "00000", + "TenNgheNghiep": "Khác", + "NoiLamViec": null, + "MaSoThue": null, + "DienThoai": "00000000000", + "MaYTe": "0123881042", + "Ten": "muốn", + "GhiChu": null, + "DmBHYT": null, + "SoBHYT": null, + "NgayHieuLuc": "0001-01-01T00:00:00", + "NgayHetHan": "0001-01-01T00:00:00", + "NoiDKBD": null, + "DiaChiBH": null, + "NgayTao": "2021-11-11T13:59:45.633", + "SearchValue": "2100052345;Đỗ Như Muốn;do nhu muon;;;00000000000;", + "DiaChiNoiLamViec": null, + "MaSoThueCongTy": null, + "NgayBatDTARV": null, + "NgayBatDTARVTaiVien": null, + "MaNhomARV": null, + "MaARV": null, + "MaNhomBN": null, + "TenNhomBN": null, + "NgayKhangDinhARV": null, + "NoiKhangDinh": null, + "Email": null, + "GhiChuDonTiep": null, + "IdNguonDonTiep": "00000000-0000-0000-0000-000000000000", + "IdThongTinHanhChinh": "00000000-0000-0000-0000-000000000000", + "MaDanToc": "01", + "IsNgaySinhKhongXD": false, + "IsGioiTinhKhongXD": false, + "IdBenhAn": null, + "CMNDNgayCap": null, + "CMNDNoiCap": null, + "MaHuyen": "280", + "MaTinh": "01", + "MaXaPhuong": "10273", + "ListPhieuKham": null, + "IsDonTiepCCCD": false, + "Id": "28615616-c30a-4d25-9137-439004e9ae1e", + "Active": true, + "State": 0, + "AuditUserInfo": null + }, + "DmBHYT": { + "Domain": "01821", + "SoBHYT": "BT2010123881042", + "NgayDangKy": "2025-01-01T00:00:00", + "NgayHieuLuc": "2025-01-01T00:00:00", + "NgayHetHan": "2025-12-31T00:00:00", + "NoiDKBD": "01M52", + "TenBenhVienDKBD": "Trạm y tế thị trấn Phú Xuyên (TTYT h. Phú Xuyên)", + "DiaChi": "TT Phú Xuyên - H. Phú Xuyên", + "IdBenhNhan": "28615616-c30a-4d25-9137-439004e9ae1e", + "MaKV": null, + "IsBHYT5Nam": false, + "NgayDu5Nam": "2019-01-01T00:00:00", + "HoTen": null, + "NgaySinh": null, + "GioiTinh": null, + "IsMaTheMoi": false, + "Nhom": "2", + "MaHoSo": null, + "MaSoBHXH": "0123881042", + "NgayKham": null, + "Id": "0ba288a5-69d3-494f-980b-87c12fad81f5", + "Active": true, + "State": 0, + "AuditUserInfo": null + }, + "TenBacSi": "Hoàng Đức Tuyên", + "MaBacSiDT": "000475/HNO-GPHN", + "ChucDanhBacSiDT": "Bs", + "MaDoanPTTT": null, + "IdBenhVien": "5f2a991f-a74a-4d71-b183-5d18919d0957", + "IdKhoaKham": "40ae8ca6-eca8-490c-8362-1c4ee1a97f3c", + "IdPhongKham": "5e37bb1d-be28-4dd7-a249-970e7635a698", + "IdKhoaBanDau": "40ae8ca6-eca8-490c-8362-1c4ee1a97f3c", + "TenKhoaBanDau": "Khoa Cấp cứu", + "MaKhoaBanDau": "K02.1", + "NgayVaoKhoa": "2025-04-15T19:11:00", + "NgayChuyenVaoVien": "2025-04-15T19:08:00", + "IsNamNoiTru": true, + "IsCapCuu": true, + "MaBenhVienTruoc": null, + "TenBenhVienTruoc": null, + "ChanDoanTuyenDuoi": null, + "Tuoi": "48", + "DoiTuong": "BHYT", + "IsBHYT": true, + "HoTenNguoiNha": "Con Lê Hộng Nhung", + "DiaChiNguoiNha": "Cùng Địa chỉ", + "DienThoaiNguoiNha": "0988766412", + "NgayVaoVien": "2025-04-15T18:19:00", + "IsCongVienChuc": false, + "IsThanhThi": false, + "LoaiVaoVien": "CAP_CUU", + "NoiGioiThieu": null, + "LanVaoVienDoBenhNay": null, + "ChuyenVien": null, + "IdVienChuyenToi": null, + "NgayRaVien": null, + "LoaiRaVien": null, + "TongSoNgayDieuTri": null, + "SoPhong": "Phòng 109", + "SoGiuong": "T014", + "ChanDoan": "Viêm phổi, tác nhân không xác định", + "ChanDoanPT": null, + "ChanDoanCuaNoiGioiThieu": "Viêm phổi", + "IcdNoiChuyenDen": null, + "IcdNoiChuyenDenMa": null, + "IcdNoiChuyenDenTen": null, + "IcdKKBCC": "a5efd89c-d049-445c-83b1-93de9213642c", + "IcdKKBCCMa": "J18", + "IcdKKBCCTen": "Viêm phổi, tác nhân không xác định", + "IcdVaoKhoaDieuTri": null, + "IdBacSiDieuTri": "8a5fd499-2582-4c07-9bb5-a1efedd7f363", + "IcdVaoKhoaDieuTriMa": null, + "IcdVaoKhoaDieuTriTen": null, + "CoThuThuat": true, + "CoPhauThuat": false, + "SoNgayDieuTriSauPT": null, + "SoLanPTT": null, + "IcdTruocPT": null, + "IcdTruocPTMa": null, + "IcdTruocPTTen": null, + "IcdSauPT": null, + "IcdSauPTMa": null, + "IcdSauPTTen": null, + "IcdRaVienBenhChinh": null, + "IcdRaVienBenhChinhMa": null, + "IcdRaVienBenhChinhTen": null, + "DsIcdRaVienBenhKemTheo": "", + "ListIcdRaVienBenhKemTheo": null, + "CoTaiBien": true, + "CoBienChung": true, + "NguyenNhanTBBC": null, + "NguyenNhanBenhChinh": null, + "KetQuaDieuTri": null, + "GiaiPhauBenh": null, + "GioTuVong": null, + "NguyenNhanTuVong": null, + "ThoiGianTuVong": null, + "IcdTuVong": null, + "IcdTuVongMa": null, + "IcdTuVongTen": null, + "IcdKhamNghiemTuThi": null, + "IcdKhamNghiemTuThiMa": null, + "IcdKhamNghiemTuThiTen": null, + "CoKhamNghiemTuThi": false, + "IdTrangThaiHoSo": "82394e05-dd1b-4c6f-9501-24239dcd0c8d", + "IdTrangThaiKy": null, + "MaTrangThaiKy": null, + "IsDongBenhAn": false, + "SoLuuTru": null, + "NgayLuuTru": null, + "PhuongPhapDieuTri": null, + "PhuongPhapPT": null, + "LoiDanBacSi": null, + "PhauThuatVienChinh": null, + "NgayInGiayRaVien": null, + "IdGiayRaVien": null, + "IdGiayRaVienMa": null, + "IdGiayRaVienTen": null, + "IdDefProcinst": "ae660716-a4c4-4f66-be7a-bba0fbb7df76", + "CanNang": 55, + "TrangThaiHoSo": "DieuTri", + "TongTienConLai": 0, + "TongTienTamUng": 0, + "TrangThaiThuoc": null, + "IdLoaiLuuTru": null, + "IdDoanPhauThuatTinhThuong": null, + "IdPhanLoaiBenh": null, + "IsDaThanhToan": false, + "MaLoaiLuuTru": null, + "TenLoaiLuuTru": null, + "NhomMauRH": null, + "NhomMauTen": null, + "IsMienGiam": false, + "IsThatThu": false, + "IsCanhBaoRaVien": false, + "IsRaVien": false, + "IsTinhThuong": false, + "IsBenhNhanARV": false, + "IsChotBangKe": false, + "IsBNThanhUy": false, + "ViTriLuuTru": null, + "ThuMucHoSoGoc": "\\Content\\HSDT\\2025\\4\\BA25006097", + "IdThongTinHanhChinh": "353fb6d4-81ad-45ef-ba65-e5458d47ba9f", + "IsBADT": false, + "IsTEKT": false, + "IsKhoaThuNgan": false, + "IsThanhToanTungLanKham": false, + "MauPhieuRaVien": null, + "MaCDC": null, + "ChanDoanVaoVien": "Viêm phổi", + "SuatAn": null, + "TrangThaiDeXuat": null, + "IsMenuBADTMoi": true, + "NgayDeXuatRaVien": null, + "IsBenhAnTTTheoDot": false, + "DSIcdBenhYHCT": "", + "SoGiayChuyenTuyen": null, + "MaLoaiKCB": "03", + "ListBenhYHCT": null, + "IdChotGuiBH": null, + "MaDinhChiThai": null, + "NguyenNhanDinhChiThai": null, + "ThoiGianDinhChiThai": null, + "TuoiThai": null, + "IcdBenhYHCTMa": null, + "IcdBenhYHCTTen": null, + "ChieuCao": 170, + "HuongDieuTri": null, + "ISangLocDD": 0, + "GhiChuTrangThaiSangLocDD": null, + "DoThanhThanCrea": null, + "KetQuaCreatinin": null, + "IsDaXuatPDF": false, + "TenKhoaKham2": null, + "TenLoaiBenhAn": "CC - HSTC - CÐ", + "MaLoaiBenhAn": "CC01", + "TenKhoaKham": "Khoa Cấp cứu", + "MaBenhNhan": "2100052345", + "LoaiBenhAn": { + "Ma": "CC01", + "Ten": "CC - HSTC - CÐ", + "PhieuVaoVien": "PhieuKhamVaoVien", + "DSKhoaKham": null, + "ChuYObj": "", + "UuTien": "5", + "IsThanhToanTungLanKham": false, + "LoaiHienThiBA": 2, + "IsBenhAnTTTheoDot": false, + "BiaBenhAn": "bia-benh-an", + "Id": "54970a97-9f69-47e6-9df0-fedb94160c6c", + "Active": true, + "State": 0, + "AuditUserInfo": null + }, + "KhoaKham": { + "Code": "K02.1", + "Name": "Khoa Cấp cứu", + "Address": "Khoa Cấp cứu", + "Domain": "01821", + "IdHospital": "5f2a991f-a74a-4d71-b183-5d18919d0957", + "TenBenhVien": null, + "IdParent": null, + "TenCha": null, + "Level": 0, + "IdLoai": "ab1f816c-af94-4fdf-a153-1234cf111141", + "TenLoai": null, + "sMaLoai": null, + "sMaLoaiLever": null, + "UuTien": 10, + "IdKho": "f38c90ad-ff6e-4ffe-9437-07a9d8daa6b0", + "TenKho": null, + "GhiChu": null, + "MaBH": "K02", + "MaLoaiBenhAn": "CC01", + "MaLIS": null, + "IsSuDungBADT": false, + "MauPhieuRaVien": null, + "IdPMVBNS": null, + "IsDuyetDonNgoaiTru": false, + "IdCongKhamBanDau": "a9e068e7-1df4-4711-928e-30e9ed18502b", + "CongKham": null, + "Id": "40ae8ca6-eca8-490c-8362-1c4ee1a97f3c", + "Active": true, + "State": 0, + "AuditUserInfo": null + }, + "DSChuyenKhoa": [ + { + "Domain": "01004", + "IdBenhAn": "d8f5a0b6-a899-4f1e-85a1-9a7c88bc48a1", + "IdKhoaKham": "279e383d-7623-41df-a499-553b4b4d196e", + "IdKhoaTruoc": "866315ab-f814-460e-9364-f8e3c3cb15a4", + "TenKhoaKham": "Covid nhẹ 1", + "MaKhoa": "K11.2", + "IdNguoiTao": "649565c9-1a00-4b3a-9219-d52621eefe39", + "NgayChuyen": "2025-05-06T17:19:39.767", + "GhiChu": null, + "SoNgayDieuTri": 60.00, + "Id": "0ff6c3ac-6dfa-4c76-8074-5984f25512f2", + "Active": true, + "State": 0, + "AuditUserInfo": null + }, + { + "Domain": "01004", + "IdBenhAn": "d8f5a0b6-a899-4f1e-85a1-9a7c88bc48a1", + "IdKhoaKham": "866315ab-f814-460e-9364-f8e3c3cb15a4", + "IdKhoaTruoc": "279e383d-7623-41df-a499-553b4b4d196e", + "TenKhoaKham": "Lão", + "MaKhoa": "KL", + "IdNguoiTao": "649565c9-1a00-4b3a-9219-d52621eefe39", + "NgayChuyen": "2025-05-06T17:39:15.923", + "GhiChu": null, + "SoNgayDieuTri": null, + "Id": "632b8c01-21b3-45ae-babd-1dee9ecdde52", + "Active": true, + "State": 0, + "AuditUserInfo": null + } + ], + "DSHSChiDinhSuatAn": null, + "Id": "3575957b-4948-4a90-878f-b0a6b472a8a8", + "Active": true, + "State": 0, + "AuditUserInfo": null + }, + data: { + name: "duynnz", + age: "18", + tags: ['vue', 'typescript' ], + category: 'tech', + gender: 'male', + sizeTest: 'large', + birthday: '', + birthdayText: '', + appointment: '', + signature: '' + }, + categoryList: [ + { id: 'tech', name: 'Công Nghệ' }, + { id: 'business', name: 'Kinh Doanh' }, + { id: 'other', name: 'Khác' } + ], + tagList: [ + { value: 'vue', label: 'Vue' }, + { value: 'typescript', label: 'TypeScript' }, + { value: 'tailwind', label: 'Tailwind' }, + { value: 'react', label: 'React' } + ], + contextItems: [ + { id: 1, label: 'Hàng số 1' }, + { id: 2, label: 'Hàng số 2' }, + { id: 3, label: 'Hàng số 3' } + ], + + // required functions, data for Signature component + MauHoSo: 'HSThongTinBenhAn', + openSignatureHistory: (code: string) => { + console.log('openSignatureHistory', code); + }, + handleSign: (code: string) => { + console.log('handleSign', code); + }, + "signature": { + "BacSi": [ + { + "Domain": "01004", + "IdBenhAn": "9e3b5531-bc6d-4486-8b38-7777c2a3ffbc", + "IdHoSo": "9e3b5531-bc6d-4486-8b38-7777c2a3ffbc", + "MauHoSo": "HSThongTinBenhAn", + "ViTri": "BacSi", + "IdNguoiKy": "649565c9-1a00-4b3a-9219-d52621eefe39", + "NguoiKy": "Nguyễn Thị Tĩnh Tĩnh", + "IdChuKy": "2545fb0d-cdb5-4b9a-b416-66aa4dda6b54", + "AnhChuKy": "\\Content\\folderUploadChuKy\\ChuKy\\202412250142422545fb0d-cdb5-4b9a-b416-66aa4dda6b54.png", + "ThongTinChuKy": "Chữ ký nội bộ", + "NgayKy": "2025-04-14T14:07:16.937", + "FileXML": "\\Content\\HSDT\\2025\\3\\BA25000131\\20250414020716_BA25000131_HSThongTinBenhAn_1.xml", + "LanKySo": 1, + "IsChuKyNhay": false, + "IdNguoiHuy": "649565c9-1a00-4b3a-9219-d52621eefe39", + "NguoiHuy": "Nguyễn Thị Tĩnh Tĩnh", + "NgayHuy": "2025-04-14T14:07:59.53", + "Active": false, + "IsChuKySo": false, + "IsChuKyVietTay": false, + "IdDiKemViTriKy": "0f4d0816-49f5-4d9b-b75d-374586fe44fc", + "IdHSDiKem": "b8b3bf57-5ef6-4f07-83b3-c40f0dde700d", + "Id": "9b1c86e3-e5cc-4b57-82ae-aae439cc7855", + }, + { + "Domain": "01004", + "IdBenhAn": "9e3b5531-bc6d-4486-8b38-7777c2a3ffbc", + "IdHoSo": "9e3b5531-bc6d-4486-8b38-7777c2a3ffbc", + "MauHoSo": "HSThongTinBenhAn", + "ViTri": "BacSi", + "IdNguoiKy": "649565c9-1a00-4b3a-9219-d52621eefe39", + "NguoiKy": "Nguyễn Thị Tĩnh Tĩnh", + "IdChuKy": "2545fb0d-cdb5-4b9a-b416-66aa4dda6b54", + "AnhChuKy": "\\Content\\folderUploadChuKy\\ChuKy\\202412250142422545fb0d-cdb5-4b9a-b416-66aa4dda6b54.png", + "ThongTinChuKy": "Chữ ký nội bộ", + "NgayKy": "2025-04-14T14:08:07.373", + "FileXML": "\\Content\\HSDT\\2025\\3\\BA25000131\\20250414020807_BA25000131_HSThongTinBenhAn_1.xml", + "LanKySo": 1, + "IsChuKyNhay": false, + "Active": true, + "IsChuKySo": false, + "IsChuKyVietTay": false, + "IdDiKemViTriKy": "0f4d0816-49f5-4d9b-b75d-374586fe44fc", + "IdHSDiKem": "b8b3bf57-5ef6-4f07-83b3-c40f0dde700d", + "Id": "f074d6af-71e3-4c4c-8221-5361751459ec", + } + ] + }, + hsTongKetBenhAn: { + NoiDungChiTietObj: {} + }, + hsThongTinBenhAn: { + NoiDungChiTietObj: {} + }, + dmNgheNghiep: [], + dmDanToc: [], + dmQuocGia: [], + dmXaPhuong: [], + dmQuanHuyen: [], + dmTinhThanh: [] + } } } } diff --git a/projects/template-editor/src/directives/context-menu.ts b/projects/template-editor/src/directives/context-menu.ts new file mode 100644 index 0000000..84ede74 --- /dev/null +++ b/projects/template-editor/src/directives/context-menu.ts @@ -0,0 +1,102 @@ +import type { App, Directive, DirectiveBinding } from 'vue'; + +type ContextMenuHandle = { + showFromEvent?: (e: MouseEvent, subject?: unknown) => void; +}; + +type ResolvedBinding = { + handle?: ContextMenuHandle; + subject?: unknown; +}; + +type WithCtxHandler = HTMLElement & { + __ctxMenuHandler?: (e: MouseEvent) => void; + __ctxMenuBoundValue?: ResolvedBinding; +}; + +type ContextMenuBinding = ContextMenuHandle | { menu?: ContextMenuHandle; subject?: unknown } | unknown; + +const contextMenuDirective: Directive = { + mounted(el: WithCtxHandler, binding: DirectiveBinding) { + bindHandler(el, resolveBinding(binding)); + }, + updated(el: WithCtxHandler, binding: DirectiveBinding) { + const next = resolveBinding(binding); + if (next !== el.__ctxMenuBoundValue) { + unbindHandler(el); + bindHandler(el, next); + } + }, + unmounted(el: WithCtxHandler) { + unbindHandler(el); + } +}; + +export default contextMenuDirective; + +export const installContextMenuDirective = (app: App) => { + app.directive('context-menu', contextMenuDirective); +}; + +function bindHandler(el: WithCtxHandler, value?: ResolvedBinding) { + const handler = (e: MouseEvent) => { + e.preventDefault(); + value?.handle?.showFromEvent?.(e, value.subject); + }; + el.__ctxMenuHandler = handler; + el.__ctxMenuBoundValue = value; + el.addEventListener('contextmenu', handler); +} + +function unbindHandler(el: WithCtxHandler) { + if (el.__ctxMenuHandler) { + el.removeEventListener('contextmenu', el.__ctxMenuHandler); + delete el.__ctxMenuHandler; + } + if (el.__ctxMenuBoundValue) { + delete el.__ctxMenuBoundValue; + } +} + +function resolveBinding(binding: DirectiveBinding): ResolvedBinding | undefined { + let handle: ContextMenuHandle | undefined; + let subject: unknown; + + const raw = binding.value as any; + + if (raw && typeof raw === 'object' && 'menu' in raw) { + const menu = raw.menu; + if (menu && typeof menu.showFromEvent === 'function') handle = menu as ContextMenuHandle; + subject = raw.subject; + } else if (raw && typeof raw === 'object' && 'showFromEvent' in raw) { + handle = raw as ContextMenuHandle; + } else { + subject = raw; + } + + if (!handle) { + handle = resolveHandleFromRefs(binding); + } + + if (!handle && typeof subject === 'undefined') return undefined; + + return { handle, subject }; +} + +function resolveHandleFromRefs(binding: DirectiveBinding): ContextMenuHandle | undefined { + const inst = binding.instance as any; + const refs = inst?.$refs; + if (!refs) return undefined; + // Try argument-named ref first (v-context-menu:ctxMenu) + if (binding.arg && refs[binding.arg] && typeof refs[binding.arg].showFromEvent === 'function') { + return refs[binding.arg] as ContextMenuHandle; + } + // Otherwise find the first ref that exposes showFromEvent + for (const key of Object.keys(refs)) { + const refVal = refs[key]; + if (refVal && typeof refVal.showFromEvent === 'function') { + return refVal as ContextMenuHandle; + } + } + return undefined; +} diff --git a/projects/template-editor/src/directives/mask-datetime.ts b/projects/template-editor/src/directives/mask-datetime.ts new file mode 100644 index 0000000..edc332e --- /dev/null +++ b/projects/template-editor/src/directives/mask-datetime.ts @@ -0,0 +1,451 @@ +import type { Directive, DirectiveBinding } from 'vue'; +import type { App } from 'vue'; + +export type MaskBindingValue = + | string + | { + format: string; + tokens?: RegExp; + onMasked?: (masked: string, digitCount: number) => void; + showMask?: boolean; + placeholderChar?: string; + }; + +type MaskEl = HTMLInputElement & { + __maskHandler?: (e: Event) => void; + __maskBeforeRange?: { startDigit: number; endDigit: number }; + __maskRecordRange?: EventListener; + __maskSelectHandlers?: Array<{ type: keyof HTMLElementEventMap; fn: EventListener }>; + __maskDigits?: string; +}; + +// General masking function that supports literal blocks wrapped in [] +// and only inserts separators when there are remaining digits or a following literal. +export const applyMask = ( + raw: string, + format: string, + tokenPattern: RegExp, + opts?: { showMask?: boolean; placeholderChar?: string } +) => { + const digits = raw.replace(/\D/g, ''); + let result = ''; + let di = 0; + let inLiteral = false; + let literalEnabled = false; + const showMask = opts?.showMask ?? false; + const placeholder = opts?.placeholderChar ?? '_'; + const tokenCount = tokenSlotsFromFormat(format, tokenPattern); + const cappedDigits = digits.slice(0, tokenCount); + for (let i = 0; i < format.length; i++) { + const ch = format[i]; + const digitsRemaining = cappedDigits.length - di; + if (ch === '[') { inLiteral = true; literalEnabled = digitsRemaining > 0; continue; } + if (ch === ']') { inLiteral = false; continue; } + if (inLiteral) { + if (literalEnabled || showMask) { + result += ch; + } + continue; + } + if (tokenPattern.test(ch)) { + if (di < cappedDigits.length) { + result += cappedDigits[di++]; + } else { + if (showMask) { + result += placeholder; + continue; + } + break; + } + } else { + const nextIsLiteral = format[i + 1] === '['; + if (showMask || di > 0 || (nextIsLiteral && digitsRemaining > 0)) { + if (showMask || digitsRemaining > 0 || nextIsLiteral) { + result += ch; + } + } + } + } + return result; +}; + +const tokensFromFormat = (format: string) => { + const stripped = format.replace(/\[[^\]]*]/g, ''); + const letters = stripped.replace(/[^YyMDHhms]/g, '') || 'YyMDHhms'; + return new RegExp(`[${letters}]`); +}; + +const tokenSlotsFromFormat = (format: string, tokens: RegExp) => { + const cleaned = format.replace(/\[[^\]]*]/g, ''); + let count = 0; + for (const ch of cleaned) { + tokens.lastIndex = 0; + if (tokens.test(ch)) count++; + } + return count; +}; + +const escapeForRegex = (ch: string) => ch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + +const digitIndexFromCaret = (value: string, caret: number) => { + const slice = value.slice(0, caret); + return slice.replace(/\D/g, '').length; +}; + +const caretFromDigitIndex = (masked: string, digitIndex: number, placeholderChar: string) => { + const isSlotChar = (ch: string) => /\d/.test(ch) || ch === placeholderChar; + if (digitIndex <= 0) { + const firstSlot = masked.split('').findIndex(isSlotChar); + return firstSlot >= 0 ? firstSlot : 0; + } + + let count = 0; + for (let i = 0; i < masked.length; i++) { + if (isSlotChar(masked[i])) { + if (count === digitIndex) return i; + count++; + } + } + // If we didn't hit the exact index, place at end + return masked.length; +}; + +const selectTokenSegment = (el: HTMLInputElement, format: string, tokens: RegExp) => { + const fmt = format.replace(/\[|\]/g, ''); + if (!fmt.length) return; + const caret = el.selectionStart ?? 0; + const length = fmt.length; + const clamp = Math.max(0, Math.min(caret, Math.max(length - 1, 0))); + const isToken = (idx: number) => { + tokens.lastIndex = 0; + return tokens.test(fmt[idx]); + }; + + let idx = clamp; + while (idx < length && !isToken(idx)) idx++; + if (!isToken(idx)) return; + + const start = idx; + const end = Math.min(idx + 1, length); + el.setSelectionRange(start, end); +}; + +const selectTokenSegmentDirectional = ( + el: HTMLInputElement, + format: string, + tokens: RegExp, + direction: 'left' | 'right' +) => { + const fmt = format.replace(/\[|\]/g, ''); + if (!fmt.length) return; + const caret = el.selectionStart ?? 0; + const length = fmt.length; + const isToken = (idx: number) => { + tokens.lastIndex = 0; + return tokens.test(fmt[idx]); + }; + + if (direction === 'right') { + let idx = Math.max(0, Math.min(caret, length - 1)); + while (idx < length && !isToken(idx)) idx++; + if (idx < length && isToken(idx)) { + el.setSelectionRange(idx, Math.min(idx + 1, length)); + } + return; + } + + let idx = Math.max(0, Math.min(caret - 1, length - 1)); + while (idx >= 0 && !isToken(idx)) idx--; + if (idx >= 0 && isToken(idx)) { + el.setSelectionRange(idx, Math.min(idx + 1, length)); + } +}; + +const enforceDateBounds = (format: string, tokens: RegExp, rawDigits: string) => { + const fmt = format.replace(/\[[^\]]*]/g, ''); + const monthIdx: number[] = []; + const dayIdx: number[] = []; + const yearIdx: number[] = []; + + let di = 0; + for (const ch of fmt) { + tokens.lastIndex = 0; + if (!tokens.test(ch)) continue; + if (/M/.test(ch)) monthIdx.push(di); + else if (/[D]/.test(ch)) dayIdx.push(di); + else if (/[Y]/.test(ch)) yearIdx.push(di); + di++; + } + + const digits = rawDigits.split(''); + const read = (idx: number[]) => idx.map(i => digits[i] ?? '').join(''); + const write = (idx: number[], value: string) => { + const padded = value.padStart(idx.length, '0'); + idx.forEach((pos, i) => { digits[pos] = padded[i]; }); + }; + + if (monthIdx.length) { + const mStr = read(monthIdx); + if (mStr.length === monthIdx.length && /^\d+$/.test(mStr)) { + let m = parseInt(mStr, 10); + if (m === 0) m = 1; + if (m > 12) write(monthIdx, '12'); + } + } + + const yStr = read(yearIdx); + const hasFullYear = yStr.length === yearIdx.length && /^\d+$/.test(yStr); + const year = hasFullYear ? parseInt(yStr, 10) : undefined; + + if (dayIdx.length) { + const dStr = read(dayIdx); + if (dStr.length === dayIdx.length && /^\d+$/.test(dStr)) { + let d = parseInt(dStr, 10); + const mStr = read(monthIdx); + const hasMonth = mStr.length === monthIdx.length && /^\d+$/.test(mStr); + const month = hasMonth ? parseInt(mStr, 10) : undefined; + const maxDay = (() => { + if (!month) return 31; + if (month === 2) { + const leap = year !== undefined && ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0); + return leap ? 29 : 28; + } + return [1, 3, 5, 7, 8, 10, 12].includes(month) ? 31 : 30; + })(); + if (d === 0) d = 1; + if (d > maxDay) write(dayIdx, String(maxDay)); + } + } + + return digits.join(''); +}; + +const applyBoundedDigits = (template: string, boundedDigits: string) => { + let i = 0; + return template.replace(/\d/g, () => boundedDigits[i++] ?? ''); +}; + +const resolve = (binding: MaskBindingValue) => { + if (typeof binding === 'string') { + const fmt = binding; + return { + format: fmt, + tokens: tokensFromFormat(fmt), + onMasked: undefined, + showMask: true, + placeholderChar: '_' + }; + } + const fmt = binding.format; + return { + format: fmt, + tokens: binding.tokens ?? tokensFromFormat(fmt), + onMasked: binding.onMasked, + showMask: binding.showMask ?? true, + placeholderChar: binding.placeholderChar ?? '_' + }; +}; + +const mask: Directive = { + mounted(el: MaskEl, binding: DirectiveBinding) { + const handler = () => { + const { format, tokens, onMasked, showMask, placeholderChar } = resolve(binding.value); + if (!format || !tokens) return; + const prevValue = el.value; + const prevCaret = el.selectionStart ?? prevValue.length; + const totalSlots = tokenSlotsFromFormat(format, tokens); + const digitIdx = Math.min(digitIndexFromCaret(prevValue, prevCaret), totalSlots); + + const currentDigits = prevValue.replace(/\D/g, ''); + + const range = el.__maskBeforeRange; + let digitsForMask = currentDigits; + + if (range && el.__maskDigits !== undefined) { + const removedCount = Math.max(0, range.endDigit - range.startDigit); + const priorDigits = el.__maskDigits; + const priorSlots = new Array(totalSlots).fill(placeholderChar); + + for (let i = 0; i < totalSlots; i++) { + priorSlots[i] = priorDigits[i] ?? placeholderChar; + } + + const insertedCount = Math.max(0, currentDigits.length - (priorDigits.length - removedCount)); + const insertDigits = currentDigits.slice(range.startDigit, range.startDigit + insertedCount); + + const nextSlots = [...priorSlots]; + let pos = range.startDigit; + for (const ch of insertDigits) { + if (pos >= totalSlots) break; + nextSlots[pos++] = ch; + } + + for (let i = pos; i < Math.min(range.endDigit, totalSlots); i++) { + nextSlots[i] = placeholderChar; + } + + digitsForMask = nextSlots.join(''); + } else { + let digitsArr = currentDigits.split(''); + + const hasFullLength = digitsArr.length >= totalSlots; + if (hasFullLength && el.__maskDigits) { + const prior = el.__maskDigits.padEnd(totalSlots, placeholderChar).slice(0, totalSlots).split(''); + const insertPos = Math.max(0, Math.min(digitIdx - 1, totalSlots - 1)); + prior[insertPos] = digitsArr[insertPos] ?? prior[insertPos]; + digitsArr = prior; + } else if (digitsArr.length > totalSlots) { + const extras = digitsArr.length - totalSlots; + const insertionPos = Math.max(0, Math.min(digitIdx - 1, digitsArr.length - 1)); + for (let i = 0; i < extras; i++) { + const dropIndex = Math.min(insertionPos + 1, digitsArr.length - 1); + digitsArr.splice(dropIndex, 1); + } + } + + digitsForMask = digitsArr.join(''); + } + + const boundedDigits = enforceDateBounds(format, tokens, digitsForMask.replace(/\D/g, '')); + if (boundedDigits !== digitsForMask.replace(/\D/g, '')) { + digitsForMask = applyBoundedDigits(digitsForMask, boundedDigits); + } + + const masked = applyMask(digitsForMask, format, tokens, { showMask, placeholderChar }); + const digitCount = masked.replace(/\D/g, '').length; + const trailingPlaceholderRx = new RegExp(`${escapeForRegex(placeholderChar)}+$`); + let normalized = digitCount >= totalSlots + ? masked.replace(trailingPlaceholderRx, '') + : masked; + if (digitCount >= totalSlots - 1 && trailingPlaceholderRx.test(normalized)) { + normalized = normalized.replace(trailingPlaceholderRx, ''); + } + + if (el.value !== normalized) { + el.value = normalized; + const nextCaret = caretFromDigitIndex(normalized, digitIdx, placeholderChar); + el.setSelectionRange(nextCaret, nextCaret); + } + el.__maskDigits = normalized.replace(/\D/g, ''); + delete el.__maskBeforeRange; + onMasked?.(normalized, digitCount); + + // Reselect the next token slot after input so the user can overwrite seamlessly. + const { format: fmt, tokens: tkns } = resolve(binding.value); + if (fmt && tkns) setTimeout(() => selectTokenSegment(el, fmt, tkns), 0); + }; + el.__maskHandler = handler; + el.addEventListener('input', handler); + + const recordRange = (ev?: InputEvent) => { + // Block non-digit input (typing or paste) early. + if (ev) { + const type = ev.inputType; + const data = ev.data ?? ''; + const isInsert = type === 'insertText' || type === 'insertFromPaste'; + if (isInsert && data && !/^\d+$/.test(data)) { + ev.preventDefault?.(); + return; + } + } + + const start = el.selectionStart ?? 0; + const end = el.selectionEnd ?? start; + const startDigit = digitIndexFromCaret(el.value, start); + const endDigit = digitIndexFromCaret(el.value, end); + el.__maskBeforeRange = { startDigit, endDigit }; + }; + + el.__maskRecordRange = recordRange as EventListener; + el.addEventListener('beforeinput', recordRange as EventListener); + + const ensureMaskVisible = () => { + const { format, tokens, showMask, placeholderChar } = resolve(binding.value); + if (!format || !tokens) return { format, tokens }; + if (showMask && el.value === '') { + const masked = applyMask('', format, tokens, { showMask, placeholderChar }); + el.value = masked; + el.__maskDigits = ''; + } + return { format, tokens }; + }; + + const triggerSelect = () => { + const { format, tokens } = ensureMaskVisible(); + if (!format || !tokens) return; + setTimeout(() => { + const firstSlot = el.value.indexOf(resolve(binding.value).placeholderChar ?? '_'); + if (firstSlot >= 0) { + el.setSelectionRange(firstSlot, firstSlot + 1); + } else { + selectTokenSegment(el, format, tokens); + } + }, 0); + }; + + const handleBlur = () => { + ensureMaskVisible(); + }; + + const navHandler = (event: Event) => { + const keyboardEvent = event as KeyboardEvent; + if (keyboardEvent.shiftKey) return; + if (!['ArrowLeft', 'ArrowRight'].includes(keyboardEvent.key)) return; + const { format, tokens } = resolve(binding.value); + if (!format || !tokens) return; + + const direction = keyboardEvent.key === 'ArrowLeft' ? 'left' : 'right'; + setTimeout(() => selectTokenSegmentDirectional(el, format, tokens, direction), 0); + }; + + const blockBackspace = (event: Event) => { + const keyboardEvent = event as KeyboardEvent; + if (keyboardEvent.key === 'Backspace') { + keyboardEvent.preventDefault(); + } + }; + + el.__maskSelectHandlers = [ + { type: 'focus', fn: triggerSelect }, + { type: 'click', fn: triggerSelect }, + { type: 'blur', fn: handleBlur }, + { type: 'keyup', fn: navHandler }, + { type: 'keydown', fn: blockBackspace } + ]; + + el.__maskSelectHandlers?.forEach(({ type, fn }) => el.addEventListener(type, fn)); + + // Ensure mask is visible on mount if empty and showMask is on. + const { format, tokens, showMask, placeholderChar } = resolve(binding.value); + if (format && tokens && showMask && el.value === '') { + const masked = applyMask('', format, tokens, { showMask, placeholderChar }); + el.value = masked; + el.__maskDigits = ''; + setTimeout(() => selectTokenSegment(el, format, tokens), 0); + } + }, + beforeUnmount(el: MaskEl) { + if (el.__maskHandler) { + el.removeEventListener('input', el.__maskHandler); + delete el.__maskHandler; + } + if (el.__maskRecordRange) { + el.removeEventListener('beforeinput', el.__maskRecordRange); + delete el.__maskRecordRange; + } + if (el.__maskSelectHandlers) { + el.__maskSelectHandlers.forEach(({ type, fn }) => el.removeEventListener(type, fn)); + delete el.__maskSelectHandlers; + } + if (el.__maskDigits) { + delete el.__maskDigits; + } + } +}; + +export default mask; + +export const installMaskDirective = (app: App) => { + app.directive('mask', mask); + app.directive('mask-datetime', mask); +}; diff --git a/projects/template-editor/src/main.ts b/projects/template-editor/src/main.ts index c9e5431..c2ac20b 100644 --- a/projects/template-editor/src/main.ts +++ b/projects/template-editor/src/main.ts @@ -1,10 +1,13 @@ -import { createApp, getCurrentInstance } from "vue"; +import { createApp } from "vue"; import App from "./App.vue"; import { InstallCodeMirror } from "codemirror-editor-vue3"; -import ContextMenu from "@imengyu/vue3-context-menu"; +import ContextMenuPlugin from "@imengyu/vue3-context-menu"; +import { installContextMenuDirective } from "./directives/context-menu"; import "./assets/main.css"; -createApp(App) +const app = createApp(App); +installContextMenuDirective(app); +app .use(InstallCodeMirror) - .use(ContextMenu) + .use(ContextMenuPlugin) .mount("#app"); \ No newline at end of file diff --git a/projects/template-editor/src/services/datePickerService.ts b/projects/template-editor/src/services/datePickerService.ts new file mode 100644 index 0000000..d3e1de1 --- /dev/null +++ b/projects/template-editor/src/services/datePickerService.ts @@ -0,0 +1,71 @@ +import { reactive } from 'vue'; + +export type DatePickerMode = 'date' | 'datetime'; + +export type DatePickerRequest = { + anchor: HTMLElement; + value?: string; + format: string; + mode: DatePickerMode; + minuteStep: number; + onSelect?: (value: string) => void; +}; + +const state = reactive({ + isOpen: false, + anchor: null as HTMLElement | null, + value: '' as string, + format: 'YYYY-MM-DD', + mode: 'date' as DatePickerMode, + minuteStep: 5, + rect: { top: 0, left: 0, width: 0, height: 0 }, + onSelect: null as ((value: string) => void) | null +}); + +const updatePosition = () => { + if (!state.anchor) return; + const rect = state.anchor.getBoundingClientRect(); + state.rect = { + top: rect.top, + left: rect.left, + width: rect.width, + height: rect.height + }; +}; + +const open = (request: DatePickerRequest) => { + state.anchor = request.anchor; + state.value = request.value ?? ''; + state.format = request.format; + state.mode = request.mode; + state.minuteStep = request.minuteStep; + state.onSelect = request.onSelect ?? null; + updatePosition(); + state.isOpen = true; +}; + +const close = () => { + state.isOpen = false; + state.anchor = null; + state.onSelect = null; +}; + +const select = (value: string) => { + state.onSelect?.(value); + close(); +}; + +const syncValue = (value: string, anchor?: HTMLElement | null) => { + if (!state.isOpen) return; + if (anchor && state.anchor !== anchor) return; + state.value = value; +}; + +export const useDatePickerService = () => ({ + state, + open, + close, + select, + syncValue, + updatePosition +}); diff --git a/projects/template-editor/vite.config.js b/projects/template-editor/vite.config.js index a87a3ca..ef8a0de 100644 --- a/projects/template-editor/vite.config.js +++ b/projects/template-editor/vite.config.js @@ -11,7 +11,7 @@ const __dirname = path.dirname(__filename) // https://vite.dev/config/ export default defineConfig(({ mode }) => ({ - base: mode === 'demo' ? '/mfe-angular/template-editor/' : '/', + base: mode === 'demo' ? '/dynamic-template-editor/template-editor/' : '/', plugins: [ vue(), vueDevTools(), diff --git a/tsconfig.json b/tsconfig.json index 2660550..840d42d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,12 +18,6 @@ { "path": "./projects/shell/tsconfig.spec.json" }, - { - "path": "./projects/first-mf/tsconfig.app.json" - }, - { - "path": "./projects/first-mf/tsconfig.spec.json" - }, { "path": "./projects/template-editor" }