diff --git a/apps/wallet/build/main.build.ts b/apps/wallet/build/main.build.ts index e838362aa..b7ccc95f0 100644 --- a/apps/wallet/build/main.build.ts +++ b/apps/wallet/build/main.build.ts @@ -2,6 +2,7 @@ import vue from '@vitejs/plugin-vue'; import { basename, dirname, resolve } from 'path'; import { defineConfig } from 'vite'; import vuetify from 'vite-plugin-vuetify'; +import wasm from 'vite-plugin-wasm'; import { ENV, MODE, @@ -34,6 +35,10 @@ export default defineConfig(_ => { appType: 'spa', server: { open: false, + fs: { + // required to be able to test packages locally with pnpm link + strict: false, + }, }, preview: { open: true, @@ -41,6 +46,7 @@ export default defineConfig(_ => { // Vite automatically loads .env files from the root of the project if they are prefixed with the envPrefix. envPrefix: 'APP_', plugins: [ + wasm(), vue(), vuetify({ autoImport: true }), withCanisterIds({ isProduction }), @@ -49,7 +55,7 @@ export default defineConfig(_ => { withIcAssetsFile(isProduction && MODE !== 'localhost'), ], build: { - target: 'es2020', + target: 'es2022', sourcemap: !optimized, minify: optimized, chunkSizeWarningLimit: 500, diff --git a/apps/wallet/package.json b/apps/wallet/package.json index b0bbc0ee8..30ac1e198 100644 --- a/apps/wallet/package.json +++ b/apps/wallet/package.json @@ -27,6 +27,7 @@ "@dfinity/agent": "1.4.0", "@dfinity/auth-client": "1.4.0", "@dfinity/candid": "1.4.0", + "@dfinity/didc": "0.0.2", "@dfinity/identity": "1.4.0", "@dfinity/principal": "1.4.0", "@mdi/font": "7.4.47", @@ -43,13 +44,14 @@ "devDependencies": { "@pinia/testing": "0.1.3", "@types/validator": "13.11.10", - "@vitejs/plugin-vue": "5.0.4", + "@vitejs/plugin-vue": "5.1.4", "@vue/test-utils": "2.4.6", "cheerio": "1.0.0-rc.12", "eslint-plugin-vue": "9.26.0", "jsdom": "24.0.0", "resize-observer-polyfill": "1.5.1", "sass": "1.77.1", - "vite-plugin-vuetify": "2.0.3" + "vite-plugin-vuetify": "2.0.4", + "vite-plugin-wasm": "3.3.0" } } diff --git a/apps/wallet/src/components/external-canisters/CanisterCallDialog.vue b/apps/wallet/src/components/external-canisters/CanisterCallDialog.vue index f81766dfa..1a8a91dad 100644 --- a/apps/wallet/src/components/external-canisters/CanisterCallDialog.vue +++ b/apps/wallet/src/components/external-canisters/CanisterCallDialog.vue @@ -21,6 +21,7 @@ :hide="{ canisterId: !!canisterCallModel.canisterId }" :allowed-methods="props.allowedMethods" :allow-any-method="props.allowAnyMethod" + :candid-idl="props.canisterCandidIdl" @submitting="canClose = !$event" @submitted="open = false" > @@ -59,6 +60,7 @@ const props = withDefaults( allowedMethods?: CanisterAllowedMethod[]; allowAnyMethod?: boolean; dialogMaxWidth?: number; + canisterCandidIdl?: string; title?: string; }>(), { @@ -66,6 +68,7 @@ const props = withDefaults( allowedMethods: () => [], allowAnyMethod: false, dialogMaxWidth: 800, + canisterCandidIdl: undefined, title: undefined, }, ); diff --git a/apps/wallet/src/components/external-canisters/CanisterCallForm.vue b/apps/wallet/src/components/external-canisters/CanisterCallForm.vue index 64db86910..70382d43d 100644 --- a/apps/wallet/src/components/external-canisters/CanisterCallForm.vue +++ b/apps/wallet/src/components/external-canisters/CanisterCallForm.vue @@ -42,7 +42,14 @@ /> - + [], allowAnyMethod: false, + candidIdl: undefined, hide: () => ({ canisterId: false, }), @@ -242,10 +253,20 @@ watch( ); const availableExecutionMethods = computed(() => { + const allowAnyMethod = + props.allowAnyMethod || props.allowedMethods.some(method => method.methodName === '*'); const configuredMethods = props.allowedMethods .map(method => method.methodName) .filter(methodName => !!methodName && methodName.trim().length && methodName !== '*'); + if (allowAnyMethod && props.candidIdl) { + try { + configuredMethods.push(...getServiceMethods(props.candidIdl)); + } catch (e) { + logger.warn('Failed to get service methods from candid idl', e); + } + } + return Array.from(new Set(configuredMethods)).sort(); }); diff --git a/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallDialog.vue b/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallDialog.vue index 5be377617..2416c126a 100644 --- a/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallDialog.vue +++ b/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallDialog.vue @@ -18,6 +18,7 @@ @@ -70,6 +71,7 @@ const props = withDefaults( alreadyConfiguredMethods?: CanisterConfiguredMethodCall[]; dialogMaxWidth?: number; title?: string; + canisterCandidIdl?: string; }>(), { open: false, @@ -79,6 +81,7 @@ const props = withDefaults( alreadyConfiguredMethods: () => [], dialogMaxWidth: 800, title: undefined, + canisterCandidIdl: undefined, }, ); diff --git a/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallForm.vue b/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallForm.vue index 954f78f56..50bf57625 100644 --- a/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallForm.vue +++ b/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallForm.vue @@ -6,7 +6,7 @@ - @@ -180,13 +181,17 @@ import { assertAndReturn } from '~/utils/helper.utils'; import AllowInput from '../inputs/AllowInput.vue'; import CanisterIdField from '../inputs/CanisterIdField.vue'; import { CanisterMethodCallConfigurationModel } from './external-canisters.types'; +import { getServiceMethods } from '~/utils/didc.utils'; +import logger from '~/core/logger.core'; const props = withDefaults( defineProps<{ modelValue: CanisterMethodCallConfigurationModel; + candidIdl?: string; readonly?: boolean; }>(), { + candidIdl: undefined, readonly: false, }, ); @@ -222,6 +227,19 @@ const createValidationTarget = ( } : { No: null }; +const availableServiceMethods = computed(() => { + if (!props.candidIdl) { + return []; + } + + try { + return getServiceMethods(props.candidIdl); + } catch (error) { + logger.warn('Failed to parse the Candid IDL', error); + return []; + } +}); + const { submit, edited, initialModel, additionalFieldErrors, submitting, valid, submitted } = useForm({ model, diff --git a/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallList.vue b/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallList.vue index 67108622e..1cb01d4d9 100644 --- a/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallList.vue +++ b/apps/wallet/src/components/external-canisters/CanisterConfigureMethodCallList.vue @@ -5,6 +5,7 @@ :canister-id="props.canisterId" :method="canisterConfigureMethodCallDialog.method" :already-configured-methods="canisterConfigureMethodCallDialog.alreadyConfiguredMethods" + :canister-candid-idl="props.canisterCandidIdl" @update:open="canisterConfigureMethodCallDialog.open = $event" />
@@ -149,11 +150,13 @@ const props = withDefaults( requestPolicies?: ExternalCanisterRequestPolicies['calls']; permissions?: ExternalCanisterPermissions['calls']; readonly?: boolean; + canisterCandidIdl?: string; }>(), { requestPolicies: () => [], permissions: () => [], readonly: false, + canisterCandidIdl: undefined, }, ); diff --git a/apps/wallet/src/components/external-canisters/CanisterInstallDialog.vue b/apps/wallet/src/components/external-canisters/CanisterInstallDialog.vue index 13cdfea8d..5695d4c92 100644 --- a/apps/wallet/src/components/external-canisters/CanisterInstallDialog.vue +++ b/apps/wallet/src/components/external-canisters/CanisterInstallDialog.vue @@ -28,6 +28,7 @@ v-model="canisterInstallModel" v-model:trigger-submit="triggerFormSubmit" :display="{ canisterId: props.canisterId === undefined }" + :candid-idl="props.canisterCandidIdl" @submit="submit" @valid="valid = $event" /> @@ -102,6 +103,7 @@ const props = withDefaults( open?: boolean; canisterId?: Principal; canisterModuleHash?: string; + canisterCandidIdl?: string; dialogMaxWidth?: number; title?: string; }>(), @@ -109,6 +111,7 @@ const props = withDefaults( open: false, canisterId: undefined, canisterModuleHash: undefined, + canisterCandidIdl: undefined, dialogMaxWidth: 800, title: undefined, }, diff --git a/apps/wallet/src/components/external-canisters/CanisterInstallForm.vue b/apps/wallet/src/components/external-canisters/CanisterInstallForm.vue index ccefc5c54..adb827375 100644 --- a/apps/wallet/src/components/external-canisters/CanisterInstallForm.vue +++ b/apps/wallet/src/components/external-canisters/CanisterInstallForm.vue @@ -27,6 +27,7 @@ @@ -51,6 +52,7 @@ const props = withDefaults( modelValue: CanisterInstallModel; triggerSubmit?: boolean; readonly?: boolean; + candidIdl?: string; display?: { canisterId: boolean; }; @@ -58,6 +60,7 @@ const props = withDefaults( { readonly: false, triggerSubmit: false, + candidIdl: undefined, display: () => ({ canisterId: true, }), diff --git a/apps/wallet/src/components/external-canisters/external-canisters.types.ts b/apps/wallet/src/components/external-canisters/external-canisters.types.ts index 88d864485..bffe335d6 100644 --- a/apps/wallet/src/components/external-canisters/external-canisters.types.ts +++ b/apps/wallet/src/components/external-canisters/external-canisters.types.ts @@ -66,11 +66,10 @@ export interface CanisterCallReviewContext { canisterId: Principal; methodName: string; arg?: Uint8Array; - argHex?: string; argChecksum?: string; argValidationRendering?: string; cycles?: bigint; validationMethod?: CanisterMethod; reply?: Uint8Array; - replyHex?: string; + candidIdl?: string; } diff --git a/apps/wallet/src/components/inputs/CanisterArgumentField.vue b/apps/wallet/src/components/inputs/CanisterArgumentField.vue index 1f2a938cf..8f3b7c207 100644 --- a/apps/wallet/src/components/inputs/CanisterArgumentField.vue +++ b/apps/wallet/src/components/inputs/CanisterArgumentField.vue @@ -37,12 +37,20 @@ import { useI18n } from 'vue-i18n'; import { VBtn, VBtnToggle, VIcon, VTextarea } from 'vuetify/components'; import { SelectItem } from '~/types/helper.types'; import { hexStringToArrayBuffer } from '~/utils/crypto.utils'; +import { encode } from '~/utils/didc.utils'; import { isHexRule, requiredRule } from '~/utils/form.utils'; +import { assertAndReturn } from '~/utils/helper.utils'; const props = withDefaults( defineProps<{ modelValue?: Uint8Array; - candidIdl?: string; + /** + * Enables the argument to be written in Candid textual representation. + */ + candid?: { + idl: string; + method?: string; + }; readonly?: boolean; required?: boolean; label?: string; @@ -54,7 +62,7 @@ const props = withDefaults( readonly: false, required: false, label: undefined, - candidIdl: undefined, + candid: undefined, density: 'comfortable', variant: 'filled', }, @@ -81,16 +89,16 @@ const label = computed(() => { }); const argument = ref(); -const selectedParseFormat = ref(props.candidIdl ? 'candid' : 'hex'); +const selectedParseFormat = ref(props.candid ? 'candid' : 'hex'); const availableParseFormats = computed(() => { - const items: SelectItem[] = [ - { text: i18n.t('external_canisters.wasm_args_formats.hex'), value: 'hex' }, - ]; + const items: SelectItem[] = []; - if (props.candidIdl) { + if (props.candid) { items.push({ text: i18n.t('external_canisters.wasm_args_formats.candid'), value: 'candid' }); } + items.push({ text: i18n.t('external_canisters.wasm_args_formats.hex'), value: 'hex' }); + return items; }); @@ -127,7 +135,18 @@ const parseArgumentRule = async (value: unknown): Promise => { parsedArgument = new Uint8Array(hexStringToArrayBuffer(rawArgument)); break; } - case 'candid': + case 'candid': { + const candid = assertAndReturn(props.candid, 'Candid definition is expected'); + const hexString = encode({ + idl: candid.idl, + serviceMethod: candid.method, + input: rawArgument, + targetFormat: 'hex', + }); + + parsedArgument = new Uint8Array(hexStringToArrayBuffer(hexString)); + break; + } default: throw new Error('Not implemented'); } diff --git a/apps/wallet/src/components/requests/operations/CallExternalCanisterOperation.vue b/apps/wallet/src/components/requests/operations/CallExternalCanisterOperation.vue index 7ce820d99..dcb3b46f3 100644 --- a/apps/wallet/src/components/requests/operations/CallExternalCanisterOperation.vue +++ b/apps/wallet/src/components/requests/operations/CallExternalCanisterOperation.vue @@ -20,7 +20,7 @@ import { useStationStore } from '~/stores/station.store'; import { toUint8Array, variantIs } from '~/utils/helper.utils'; import RequestOperationListRow from '../RequestOperationListRow.vue'; import ReviewCallExternalCanisterOperation from '../review/ReviewCallExternalCanisterOperation.vue'; -import { arrayBufferToHex } from '~/utils/crypto.utils'; +import { fetchCanisterIdlFromMetadata } from '~/utils/didc.utils'; const props = withDefaults( defineProps<{ @@ -37,21 +37,21 @@ const isListMode = computed(() => props.mode === 'list'); const reviewContext: Ref = ref(null); const station = useStationStore(); -const fillReviewContext = (operation: CallExternalCanisterOperation): CanisterCallReviewContext => { +const fillReviewContext = ( + operation: CallExternalCanisterOperation, + candidIdl?: string, +): CanisterCallReviewContext => { return { + candidIdl, canisterId: operation.execution_method.canister_id, methodName: operation.execution_method.method_name, cycles: operation.execution_method_cycles?.[0] ?? undefined, argChecksum: operation.arg_checksum?.[0] ?? undefined, arg: operation.arg?.[0] ? toUint8Array(operation.arg[0]) : undefined, - argHex: operation.arg?.[0] ? arrayBufferToHex(toUint8Array(operation.arg[0])) : undefined, argValidationRendering: operation.arg_rendering?.[0], reply: operation.execution_method_reply?.[0] ? toUint8Array(operation.execution_method_reply[0]) : undefined, - replyHex: operation.execution_method_reply?.[0] - ? arrayBufferToHex(toUint8Array(operation.execution_method_reply[0])) - : undefined, }; }; @@ -63,7 +63,17 @@ const loadWithFullInformation = async (): Promise => { }); if (variantIs(result.request.operation, 'CallExternalCanister')) { - reviewContext.value = fillReviewContext(result.request.operation.CallExternalCanister); + const candidIdl = await fetchCanisterIdlFromMetadata( + result.request.operation.CallExternalCanister.execution_method.canister_id, + ).catch(err => { + logger.warn(`Error fetching canister IDL for ${props.request.id}`, err); + return undefined; + }); + + reviewContext.value = fillReviewContext( + result.request.operation.CallExternalCanister, + candidIdl, + ); } } catch (err) { logger.error(`Error loading full CallExternalCanister request ${props.request.id}`, err); diff --git a/apps/wallet/src/components/requests/review/ReviewCallExternalCanisterOperation.vue b/apps/wallet/src/components/requests/review/ReviewCallExternalCanisterOperation.vue index 69f6c957a..b32eeb261 100644 --- a/apps/wallet/src/components/requests/review/ReviewCallExternalCanisterOperation.vue +++ b/apps/wallet/src/components/requests/review/ReviewCallExternalCanisterOperation.vue @@ -76,46 +76,35 @@ - + {{ $t('external_canisters.perform_call.argument') }} - ({{ $t('external_canisters.wasm_args_formats.hex').toLowerCase() }}) - - - - + + - + {{ $t('external_canisters.perform_call.reply_received') }} - ({{ $t('external_canisters.wasm_args_formats.hex').toLowerCase() }}) + - + @@ -123,13 +112,19 @@ diff --git a/apps/wallet/src/components/ui/LabeledTextDisplay.vue b/apps/wallet/src/components/ui/LabeledTextDisplay.vue new file mode 100644 index 000000000..35dcd3a20 --- /dev/null +++ b/apps/wallet/src/components/ui/LabeledTextDisplay.vue @@ -0,0 +1,65 @@ + + + diff --git a/apps/wallet/src/pages/ExternalCanisterDetailPage.vue b/apps/wallet/src/pages/ExternalCanisterDetailPage.vue index fb417f6d8..c205dafc2 100644 --- a/apps/wallet/src/pages/ExternalCanisterDetailPage.vue +++ b/apps/wallet/src/pages/ExternalCanisterDetailPage.vue @@ -144,6 +144,9 @@ :allow-any-method=" hasRequiredPrivilege({ anyOf: [Privilege.CallAnyExternalCanister] }) " + :canister-candid-idl=" + canisterDetails.candid.value !== null ? canisterDetails.candid.value.idl : undefined + " @update:open="dialogs.call = $event" /> @@ -229,6 +237,11 @@ ? canisterDetails.moduleHash.value : undefined " + :canister-candid-idl=" + canisterDetails.candid.value !== null + ? canisterDetails.candid.value.idl + : undefined + " /> (), { @@ -442,11 +456,17 @@ const router = useRouter(); const app = useAppStore(); const canister: Ref = ref(null); const canisterDetails = ref<{ - moduleHash: { value: string | null; loading: boolean }; - status: { value: CanisterStatusResponse | null; loading: boolean }; + moduleHash: { value: string | null; loading: boolean; initialized: boolean }; + status: { value: CanisterStatusResponse | null; loading: boolean; initialized: boolean }; + candid: { + value: { idl: string } | null; + loading: boolean; + initialized: boolean; + }; }>({ - moduleHash: { value: null, loading: false }, - status: { value: null, loading: false }, + moduleHash: { value: null, loading: false, initialized: false }, + status: { value: null, loading: false, initialized: false }, + candid: { value: null, loading: false, initialized: false }, }); const pageTitle = computed(() => { @@ -511,8 +531,9 @@ watch( loading.value = true; verifiedPageLoad.value = false; canisterDetails.value = { - moduleHash: { value: null, loading: false }, - status: { value: null, loading: false }, + moduleHash: { value: null, loading: false, initialized: false }, + status: { value: null, loading: false, initialized: false }, + candid: { value: null, loading: false, initialized: false }, }; privileges.value = buildDefaultPrivileges(); canister.value = null; @@ -526,8 +547,7 @@ watch( const loadExternalCanisterStatus = debounce( (canisterId: Principal) => { - canisterDetails.value.status.loading = - canisterDetails.value.status.value === null ? true : false; + canisterDetails.value.status.loading = !canisterDetails.value.status.initialized; useLoadExternalCanisterStatus(canisterId) .then(status => { canisterDetails.value.status.value = status; @@ -537,6 +557,7 @@ const loadExternalCanisterStatus = debounce( }) .finally(() => { canisterDetails.value.status.loading = false; + canisterDetails.value.status.initialized = true; }); }, 20_000, // A status call is a call through the station canister, to prevent high load we make less frequent calls. @@ -545,8 +566,7 @@ const loadExternalCanisterStatus = debounce( const loadExternalCanisterModuleHash = debounce( (canisterId: Principal) => { - canisterDetails.value.moduleHash.loading = - canisterDetails.value.moduleHash.value === null ? true : false; + canisterDetails.value.moduleHash.loading = !canisterDetails.value.moduleHash.initialized; useLoadExternalCanisterModuleHash(canisterId) .then(moduleHash => { canisterDetails.value.moduleHash.value = moduleHash; @@ -556,9 +576,29 @@ const loadExternalCanisterModuleHash = debounce( }) .finally(() => { canisterDetails.value.moduleHash.loading = false; + canisterDetails.value.moduleHash.initialized = true; + }); + }, + 2_000, // Module hash loading is cheap and can be done with a readState call to the IC. + { immediate: true }, +); + +const loadExternalCanisterCandidIdl = debounce( + (canisterId: Principal) => { + canisterDetails.value.candid.loading = !canisterDetails.value.candid.initialized; + fetchCanisterIdlFromMetadata(canisterId) + .then(idl => { + canisterDetails.value.candid.value = idl ? { idl } : null; + }) + .catch(err => { + logger.error('Failed to read canister candid interface', err); + }) + .finally(() => { + canisterDetails.value.candid.loading = false; + canisterDetails.value.candid.initialized = true; }); }, - 2_000, // Module hash loading is cheap and can be done with a status call to the IC. + 2_000, // Module hash loading is cheap and can be done with a readState call to the IC. { immediate: true }, ); @@ -581,6 +621,7 @@ const loadExternalCanister = async (): Promise => { // Load additional canister details, such as module hash and canister status. loadExternalCanisterModuleHash(result.canister.canister_id); loadExternalCanisterStatus(result.canister.canister_id); + loadExternalCanisterCandidIdl(result.canister.canister_id); } catch (err) { const error = err as ApiError; diff --git a/apps/wallet/src/utils/didc.utils.ts b/apps/wallet/src/utils/didc.utils.ts new file mode 100644 index 000000000..73901301c --- /dev/null +++ b/apps/wallet/src/utils/didc.utils.ts @@ -0,0 +1,44 @@ +import { Certificate, LookupStatus } from '@dfinity/agent'; +import { decode, encode, getServiceMethods } from '@dfinity/didc'; +import { Principal } from '@dfinity/principal'; +import { icAgent } from '~/core/ic-agent.core'; + +export { decode, encode, getServiceMethods }; + +export const fetchCanisterIdlFromMetadata = async ( + canisterId: Principal, + agent = icAgent.get(), +): Promise => { + const encoder = new TextEncoder(); + const versionPath: ArrayBuffer[] = [ + encoder.encode('canister'), + canisterId.toUint8Array(), + encoder.encode('metadata'), + encoder.encode('candid:service'), + ]; + + const state = await agent.readState(canisterId, { + paths: [versionPath], + }); + + const certificate = await Certificate.create({ + canisterId, + certificate: state.certificate, + rootKey: agent.rootKey, + }); + + const serviceIdl = certificate.lookup(versionPath); + + if (serviceIdl.status !== LookupStatus.Found) { + return undefined; + } + + if (!(serviceIdl.value instanceof ArrayBuffer)) { + throw new Error('candid:service metadata is not an ArrayBuffer'); + } + + const decoder = new TextDecoder(); + const decodedServiceIdl = decoder.decode(serviceIdl.value); + + return decodedServiceIdl.trim()?.length ? decodedServiceIdl.trim() : undefined; +}; diff --git a/apps/wallet/tsconfig.json b/apps/wallet/tsconfig.json index ef54335be..9e6ca8b13 100644 --- a/apps/wallet/tsconfig.json +++ b/apps/wallet/tsconfig.json @@ -1,9 +1,9 @@ { "compilerOptions": { - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ES2022", + "lib": ["ES2022", "DOM", "DOM.Iterable"], "skipLibCheck": true, "moduleResolution": "bundler", "allowImportingTsExtensions": true, diff --git a/package.json b/package.json index f1ec80e21..c6539a401 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@nx/devkit": "19.8.3", "@nx/js": "19.8.3", "@nx/workspace": "19.8.3", - "@types/node": "20.11.25", + "@types/node": "22.7.4", "@typescript-eslint/eslint-plugin": "7.9.0", "@typescript-eslint/parser": "7.9.0", "@vitest/coverage-v8": "1.6.0", @@ -31,7 +31,7 @@ "nx": "19.8.3", "prettier": "3.3.3", "typescript": "5.6.2", - "vite": "5.2.11", + "vite": "5.4.10", "vitest": "1.6.0", "vue-tsc": "2.1.6" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1904d5088..83ca3e26c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,28 +10,28 @@ importers: devDependencies: '@monodon/rust': specifier: 2.0.0 - version: 2.0.0(@napi-rs/cli@3.0.0-alpha.63) + version: 2.0.0(@napi-rs/cli@3.0.0-alpha.63(@emnapi/runtime@1.3.0)) '@nx/devkit': specifier: 19.8.3 version: 19.8.3(nx@19.8.3) '@nx/js': specifier: 19.8.3 - version: 19.8.3(@types/node@20.11.25)(nx@19.8.3)(typescript@5.6.2) + version: 19.8.3(@babel/traverse@7.24.5)(@types/node@22.7.4)(nx@19.8.3)(typescript@5.6.2) '@nx/workspace': specifier: 19.8.3 version: 19.8.3 '@types/node': - specifier: 20.11.25 - version: 20.11.25 + specifier: 22.7.4 + version: 22.7.4 '@typescript-eslint/eslint-plugin': specifier: 7.9.0 - version: 7.9.0(@typescript-eslint/parser@7.9.0)(eslint@8.57.0)(typescript@5.6.2) + version: 7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2) '@typescript-eslint/parser': specifier: 7.9.0 version: 7.9.0(eslint@8.57.0)(typescript@5.6.2) '@vitest/coverage-v8': specifier: 1.6.0 - version: 1.6.0(vitest@1.6.0) + version: 1.6.0(vitest@1.6.0(@types/node@22.7.4)(jsdom@24.0.0)(sass@1.77.1)) concurrently: specifier: 8.2.2 version: 8.2.2 @@ -48,11 +48,11 @@ importers: specifier: 5.6.2 version: 5.6.2 vite: - specifier: 5.2.11 - version: 5.2.11(@types/node@20.11.25)(sass@1.77.1) + specifier: 5.4.10 + version: 5.4.10(@types/node@22.7.4)(sass@1.77.1) vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.11.25) + version: 1.6.0(@types/node@22.7.4)(jsdom@24.0.0)(sass@1.77.1) vue-tsc: specifier: 2.1.6 version: 2.1.6(typescript@5.6.2) @@ -61,16 +61,19 @@ importers: dependencies: '@dfinity/agent': specifier: 1.4.0 - version: 1.4.0(@dfinity/candid@1.4.0)(@dfinity/principal@1.4.0) + version: 1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0) '@dfinity/auth-client': specifier: 1.4.0 - version: 1.4.0(@dfinity/agent@1.4.0)(@dfinity/identity@1.4.0)(@dfinity/principal@1.4.0) + version: 1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/identity@1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3))(@dfinity/principal@1.4.0) '@dfinity/candid': specifier: 1.4.0 version: 1.4.0(@dfinity/principal@1.4.0) + '@dfinity/didc': + specifier: 0.0.2 + version: 0.0.2 '@dfinity/identity': specifier: 1.4.0 - version: 1.4.0(@dfinity/agent@1.4.0)(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3) + version: 1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3) '@dfinity/principal': specifier: 1.4.0 version: 1.4.0 @@ -85,7 +88,7 @@ importers: version: 6.0.3 pinia: specifier: 2.1.7 - version: 2.1.7(typescript@5.6.2)(vue@3.5.11) + version: 2.1.7(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)) pino: specifier: 9.1.0 version: 9.1.0 @@ -97,23 +100,23 @@ importers: version: 3.5.11(typescript@5.6.2) vue-i18n: specifier: 9.13.1 - version: 9.13.1(vue@3.5.11) + version: 9.13.1(vue@3.5.11(typescript@5.6.2)) vue-router: specifier: 4.3.2 - version: 4.3.2(vue@3.5.11) + version: 4.3.2(vue@3.5.11(typescript@5.6.2)) vuetify: specifier: 3.5.9 - version: 3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.3)(vue-i18n@9.13.1)(vue@3.5.11) + version: 3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.4)(vue-i18n@9.13.1(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) devDependencies: '@pinia/testing': specifier: 0.1.3 - version: 0.1.3(pinia@2.1.7)(vue@3.5.11) + version: 0.1.3(pinia@2.1.7(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) '@types/validator': specifier: 13.11.10 version: 13.11.10 '@vitejs/plugin-vue': - specifier: 5.0.4 - version: 5.0.4(vite@5.2.11)(vue@3.5.11) + specifier: 5.1.4 + version: 5.1.4(vite@5.4.10(@types/node@22.7.4)(sass@1.77.1))(vue@3.5.11(typescript@5.6.2)) '@vue/test-utils': specifier: 2.4.6 version: 2.4.6 @@ -133,20 +136,23 @@ importers: specifier: 1.77.1 version: 1.77.1 vite-plugin-vuetify: - specifier: 2.0.3 - version: 2.0.3(vite@5.2.11)(vue@3.5.11)(vuetify@3.5.9) + specifier: 2.0.4 + version: 2.0.4(vite@5.4.10(@types/node@22.7.4)(sass@1.77.1))(vue@3.5.11(typescript@5.6.2))(vuetify@3.5.9) + vite-plugin-wasm: + specifier: 3.3.0 + version: 3.3.0(vite@5.4.10(@types/node@22.7.4)(sass@1.77.1)) cli: devDependencies: '@dfinity/agent': specifier: 1.4.0 - version: 1.4.0(@dfinity/candid@1.4.0)(@dfinity/principal@1.4.0) + version: 1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0) '@dfinity/candid': specifier: 1.4.0 version: 1.4.0(@dfinity/principal@1.4.0) '@dfinity/identity': specifier: 1.4.0 - version: 1.4.0(@dfinity/agent@1.4.0)(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3) + version: 1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3) '@dfinity/principal': specifier: 1.4.0 version: 1.4.0 @@ -824,6 +830,10 @@ packages: peerDependencies: '@dfinity/principal': ^1.4.0 + '@dfinity/didc@0.0.2': + resolution: {integrity: sha512-ISsRNtbBdRnv98K9fucgSOrsMv6fJ311zyOWU1MYGWyV/IGWT6q7Xh1vcASZ0BcAiDITxinSTjgB8mUlDjpHcQ==} + engines: {node: ^20, npm: please use pnpm, pnpm: ^9, yarn: please use pnpm} + '@dfinity/identity@1.4.0': resolution: {integrity: sha512-4WmMsQSuzfWXmm4s+0FYGbFiQcMGE88Ztg6yFq7aTMtRWuAjhz66Dy1+jRCrXxsoxvDdUvPzsyjkOSpr1AuUYQ==} peerDependencies: @@ -843,140 +853,140 @@ packages: '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1755,9 +1765,6 @@ packages: '@types/mute-stream@0.0.4': resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} - '@types/node@20.11.25': - resolution: {integrity: sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==} - '@types/node@22.7.4': resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==} @@ -1831,8 +1838,8 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitejs/plugin-vue@5.0.4': - resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + '@vitejs/plugin-vue@5.1.4': + resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 @@ -2404,8 +2411,8 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true @@ -2612,6 +2619,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -2705,6 +2713,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3185,10 +3194,6 @@ packages: resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} engines: {node: '>=4'} - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.4.47: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} @@ -3601,9 +3606,6 @@ packages: ufo@1.3.0: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -3665,16 +3667,21 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-plugin-vuetify@2.0.3: - resolution: {integrity: sha512-HbYajgGgb/noaVKNRhnnXIiQZrNXfNIeanUGAwXgOxL6h/KULS40Uf51Kyz8hNmdegF+DwjgXXI/8J1PNS83xw==} + vite-plugin-vuetify@2.0.4: + resolution: {integrity: sha512-A4cliYUoP/u4AWSRVRvAPKgpgR987Pss7LpFa7s1GvOe8WjgDq92Rt3eVXrvgxGCWvZsPKziVqfHHdCMqeDhfw==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: '>=5' vue: ^3.0.0 vuetify: ^3.0.0 - vite@5.2.11: - resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} + vite-plugin-wasm@3.3.0: + resolution: {integrity: sha512-tVhz6w+W9MVsOCHzxo6SSMSswCeIw4HTrXEi6qL3IRzATl83jl09JVO1djBqPSwfjgnpVHNLYcaMbaDX5WB/pg==} + peerDependencies: + vite: ^2 || ^3 || ^4 || ^5 + + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3682,6 +3689,7 @@ packages: less: '*' lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 @@ -3694,6 +3702,8 @@ packages: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: @@ -4697,7 +4707,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@dfinity/agent@1.4.0(@dfinity/candid@1.4.0)(@dfinity/principal@1.4.0)': + '@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0)': dependencies: '@dfinity/candid': 1.4.0(@dfinity/principal@1.4.0) '@dfinity/principal': 1.4.0 @@ -4708,10 +4718,10 @@ snapshots: buffer: 6.0.3 simple-cbor: 0.4.1 - '@dfinity/auth-client@1.4.0(@dfinity/agent@1.4.0)(@dfinity/identity@1.4.0)(@dfinity/principal@1.4.0)': + '@dfinity/auth-client@1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/identity@1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3))(@dfinity/principal@1.4.0)': dependencies: - '@dfinity/agent': 1.4.0(@dfinity/candid@1.4.0)(@dfinity/principal@1.4.0) - '@dfinity/identity': 1.4.0(@dfinity/agent@1.4.0)(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3) + '@dfinity/agent': 1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0) + '@dfinity/identity': 1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3) '@dfinity/principal': 1.4.0 idb: 7.1.1 @@ -4719,9 +4729,11 @@ snapshots: dependencies: '@dfinity/principal': 1.4.0 - '@dfinity/identity@1.4.0(@dfinity/agent@1.4.0)(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3)': + '@dfinity/didc@0.0.2': {} + + '@dfinity/identity@1.4.0(@dfinity/agent@1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0)(@peculiar/webcrypto@1.4.3)': dependencies: - '@dfinity/agent': 1.4.0(@dfinity/candid@1.4.0)(@dfinity/principal@1.4.0) + '@dfinity/agent': 1.4.0(@dfinity/candid@1.4.0(@dfinity/principal@1.4.0))(@dfinity/principal@1.4.0) '@dfinity/principal': 1.4.0 '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 @@ -4745,73 +4757,73 @@ snapshots: dependencies: tslib: 2.6.2 - '@esbuild/aix-ppc64@0.20.2': + '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm@0.20.2': + '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-x64@0.20.2': + '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.20.2': + '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-x64@0.20.2': + '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.20.2': + '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.20.2': + '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.20.2': + '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.20.2': + '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-ia32@0.20.2': + '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-loong64@0.20.2': + '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.20.2': + '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.20.2': + '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.20.2': + '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.20.2': + '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.20.2': + '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.20.2': + '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/win32-arm64@0.20.2': + '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-ia32@0.20.2': + '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-x64@0.21.5': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': @@ -5015,10 +5027,10 @@ snapshots: '@mdi/js@7.4.47': {} - '@monodon/rust@2.0.0(@napi-rs/cli@3.0.0-alpha.63)': + '@monodon/rust@2.0.0(@napi-rs/cli@3.0.0-alpha.63(@emnapi/runtime@1.3.0))': dependencies: '@ltd/j-toml': 1.38.0 - '@napi-rs/cli': 3.0.0-alpha.63 + '@napi-rs/cli': 3.0.0-alpha.63(@emnapi/runtime@1.3.0) '@nx/devkit': 19.8.3(nx@19.8.3) chalk: 4.1.2 npm-run-path: 4.0.1 @@ -5030,7 +5042,7 @@ snapshots: - '@swc/core' - debug - '@napi-rs/cli@3.0.0-alpha.63': + '@napi-rs/cli@3.0.0-alpha.63(@emnapi/runtime@1.3.0)': dependencies: '@inquirer/prompts': 6.0.1 '@napi-rs/cross-toolchain': 0.0.16 @@ -5045,6 +5057,8 @@ snapshots: toml: 3.0.0 typanion: 3.14.0 wasm-sjlj: 1.0.5 + optionalDependencies: + '@emnapi/runtime': 1.3.0 transitivePeerDependencies: - '@napi-rs/cross-toolchain-arm64-target-aarch64' - '@napi-rs/cross-toolchain-arm64-target-armv7' @@ -5298,9 +5312,9 @@ snapshots: transitivePeerDependencies: - nx - '@nrwl/js@19.8.3(@types/node@20.11.25)(nx@19.8.3)(typescript@5.6.2)': + '@nrwl/js@19.8.3(@babel/traverse@7.24.5)(@types/node@22.7.4)(nx@19.8.3)(typescript@5.6.2)': dependencies: - '@nx/js': 19.8.3(@types/node@20.11.25)(nx@19.8.3)(typescript@5.6.2) + '@nx/js': 19.8.3(@babel/traverse@7.24.5)(@types/node@22.7.4)(nx@19.8.3)(typescript@5.6.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -5343,7 +5357,7 @@ snapshots: tslib: 2.6.2 yargs-parser: 21.1.1 - '@nx/js@19.8.3(@types/node@20.11.25)(nx@19.8.3)(typescript@5.6.2)': + '@nx/js@19.8.3(@babel/traverse@7.24.5)(@types/node@22.7.4)(nx@19.8.3)(typescript@5.6.2)': dependencies: '@babel/core': 7.24.5 '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.5) @@ -5352,12 +5366,12 @@ snapshots: '@babel/preset-env': 7.24.5(@babel/core@7.24.5) '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) '@babel/runtime': 7.22.15 - '@nrwl/js': 19.8.3(@types/node@20.11.25)(nx@19.8.3)(typescript@5.6.2) + '@nrwl/js': 19.8.3(@babel/traverse@7.24.5)(@types/node@22.7.4)(nx@19.8.3)(typescript@5.6.2) '@nx/devkit': 19.8.3(nx@19.8.3) '@nx/workspace': 19.8.3 babel-plugin-const-enum: 1.2.0(@babel/core@7.24.5) babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.24.5) + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.24.5)(@babel/traverse@7.24.5) chalk: 4.1.2 columnify: 1.6.0 detect-port: 1.5.1 @@ -5372,7 +5386,7 @@ snapshots: ora: 5.3.0 semver: 7.6.0 source-map-support: 0.5.19 - ts-node: 10.9.1(@types/node@20.11.25)(typescript@5.6.2) + ts-node: 10.9.1(@types/node@22.7.4)(typescript@5.6.2) tsconfig-paths: 4.2.0 tslib: 2.6.2 transitivePeerDependencies: @@ -5511,10 +5525,10 @@ snapshots: tslib: 2.6.2 webcrypto-core: 1.7.7 - '@pinia/testing@0.1.3(pinia@2.1.7)(vue@3.5.11)': + '@pinia/testing@0.1.3(pinia@2.1.7(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))': dependencies: - pinia: 2.1.7(typescript@5.6.2)(vue@3.5.11) - vue-demi: 0.14.6(vue@3.5.11) + pinia: 2.1.7(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)) + vue-demi: 0.14.6(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -5588,11 +5602,7 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 20.11.25 - - '@types/node@20.11.25': - dependencies: - undici-types: 5.26.5 + '@types/node': 22.7.4 '@types/node@22.7.4': dependencies: @@ -5604,7 +5614,7 @@ snapshots: '@types/wrap-ansi@3.0.0': {} - '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0)(eslint@8.57.0)(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 7.9.0(eslint@8.57.0)(typescript@5.6.2) @@ -5617,6 +5627,7 @@ snapshots: ignore: 5.3.1 natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -5629,6 +5640,7 @@ snapshots: '@typescript-eslint/visitor-keys': 7.9.0 debug: 4.3.4 eslint: 8.57.0 + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -5645,6 +5657,7 @@ snapshots: debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -5661,6 +5674,7 @@ snapshots: minimatch: 9.0.4 semver: 7.6.0 ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -5683,12 +5697,12 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-vue@5.0.4(vite@5.2.11)(vue@3.5.11)': + '@vitejs/plugin-vue@5.1.4(vite@5.4.10(@types/node@22.7.4)(sass@1.77.1))(vue@3.5.11(typescript@5.6.2))': dependencies: - vite: 5.2.11(@types/node@20.11.25)(sass@1.77.1) + vite: 5.4.10(@types/node@22.7.4)(sass@1.77.1) vue: 3.5.11(typescript@5.6.2) - '@vitest/coverage-v8@1.6.0(vitest@1.6.0)': + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.7.4)(jsdom@24.0.0)(sass@1.77.1))': dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 @@ -5703,7 +5717,7 @@ snapshots: std-env: 3.7.0 strip-literal: 2.0.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@20.11.25) + vitest: 1.6.0(@types/node@22.7.4)(jsdom@24.0.0)(sass@1.77.1) transitivePeerDependencies: - supports-color @@ -5808,6 +5822,7 @@ snapshots: minimatch: 9.0.4 muggle-string: 0.4.1 path-browserify: 1.0.1 + optionalDependencies: typescript: 5.6.2 '@vue/reactivity@3.5.11': @@ -5826,7 +5841,7 @@ snapshots: '@vue/shared': 3.5.11 csstype: 3.1.3 - '@vue/server-renderer@3.5.11(vue@3.5.11)': + '@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2))': dependencies: '@vue/compiler-ssr': 3.5.11 '@vue/shared': 3.5.11 @@ -5841,11 +5856,11 @@ snapshots: js-beautify: 1.14.11 vue-component-type-helpers: 2.0.17 - '@vuetify/loader-shared@2.0.3(vue@3.5.11)(vuetify@3.5.9)': + '@vuetify/loader-shared@2.0.3(vue@3.5.11(typescript@5.6.2))(vuetify@3.5.9)': dependencies: upath: 2.0.1 vue: 3.5.11(typescript@5.6.2) - vuetify: 3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.3)(vue-i18n@9.13.1)(vue@3.5.11) + vuetify: 3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.4)(vue-i18n@9.13.1(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) '@yarnpkg/lockfile@1.1.0': {} @@ -5985,10 +6000,12 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.24.5): + babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.24.5)(@babel/traverse@7.24.5): dependencies: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.24.5 + optionalDependencies: + '@babel/traverse': 7.24.5 balanced-match@1.0.2: {} @@ -6341,31 +6358,31 @@ snapshots: dependencies: is-arrayish: 0.2.1 - esbuild@0.20.2: + esbuild@0.21.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 escalade@3.1.2: {} @@ -7165,12 +7182,13 @@ snapshots: picomatch@2.3.1: {} - pinia@2.1.7(typescript@5.6.2)(vue@3.5.11): + pinia@2.1.7(typescript@5.6.2)(vue@3.5.11(typescript@5.6.2)): dependencies: '@vue/devtools-api': 6.6.1 - typescript: 5.6.2 vue: 3.5.11(typescript@5.6.2) - vue-demi: 0.14.6(vue@3.5.11) + vue-demi: 0.14.6(vue@3.5.11(typescript@5.6.2)) + optionalDependencies: + typescript: 5.6.2 pino-abstract-transport@1.2.0: dependencies: @@ -7204,12 +7222,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - postcss@8.4.47: dependencies: nanoid: 3.3.7 @@ -7542,14 +7554,14 @@ snapshots: dependencies: typescript: 5.6.2 - ts-node@10.9.1(@types/node@20.11.25)(typescript@5.6.2): + ts-node@10.9.1(@types/node@22.7.4)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.25 + '@types/node': 22.7.4 acorn: 8.10.0 acorn-walk: 8.3.2 arg: 4.1.3 @@ -7584,8 +7596,6 @@ snapshots: ufo@1.3.0: {} - undici-types@5.26.5: {} - undici-types@6.19.8: {} unicode-canonical-property-names-ecmascript@2.0.0: {} @@ -7630,47 +7640,51 @@ snapshots: validator@13.12.0: {} - vite-node@1.6.0(@types/node@20.11.25): + vite-node@1.6.0(@types/node@22.7.4)(sass@1.77.1): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.11.25)(sass@1.77.1) + vite: 5.4.10(@types/node@22.7.4)(sass@1.77.1) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - vite-plugin-vuetify@2.0.3(vite@5.2.11)(vue@3.5.11)(vuetify@3.5.9): + vite-plugin-vuetify@2.0.4(vite@5.4.10(@types/node@22.7.4)(sass@1.77.1))(vue@3.5.11(typescript@5.6.2))(vuetify@3.5.9): dependencies: - '@vuetify/loader-shared': 2.0.3(vue@3.5.11)(vuetify@3.5.9) + '@vuetify/loader-shared': 2.0.3(vue@3.5.11(typescript@5.6.2))(vuetify@3.5.9) debug: 4.3.4 upath: 2.0.1 - vite: 5.2.11(@types/node@20.11.25)(sass@1.77.1) + vite: 5.4.10(@types/node@22.7.4)(sass@1.77.1) vue: 3.5.11(typescript@5.6.2) - vuetify: 3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.3)(vue-i18n@9.13.1)(vue@3.5.11) + vuetify: 3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.4)(vue-i18n@9.13.1(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)) transitivePeerDependencies: - supports-color - vite@5.2.11(@types/node@20.11.25)(sass@1.77.1): + vite-plugin-wasm@3.3.0(vite@5.4.10(@types/node@22.7.4)(sass@1.77.1)): + dependencies: + vite: 5.4.10(@types/node@22.7.4)(sass@1.77.1) + + vite@5.4.10(@types/node@22.7.4)(sass@1.77.1): dependencies: - '@types/node': 20.11.25 - esbuild: 0.20.2 - postcss: 8.4.38 + esbuild: 0.21.5 + postcss: 8.4.47 rollup: 4.22.4 - sass: 1.77.1 optionalDependencies: + '@types/node': 22.7.4 fsevents: 2.3.3 + sass: 1.77.1 - vitest@1.6.0(@types/node@20.11.25): + vitest@1.6.0(@types/node@22.7.4)(jsdom@24.0.0)(sass@1.77.1): dependencies: - '@types/node': 20.11.25 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 @@ -7688,13 +7702,17 @@ snapshots: strip-literal: 2.0.0 tinybench: 2.5.1 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.11.25)(sass@1.77.1) - vite-node: 1.6.0(@types/node@20.11.25) + vite: 5.4.10(@types/node@22.7.4)(sass@1.77.1) + vite-node: 1.6.0(@types/node@22.7.4)(sass@1.77.1) why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 22.7.4 + jsdom: 24.0.0 transitivePeerDependencies: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -7704,7 +7722,7 @@ snapshots: vue-component-type-helpers@2.0.17: {} - vue-demi@0.14.6(vue@3.5.11): + vue-demi@0.14.6(vue@3.5.11(typescript@5.6.2)): dependencies: vue: 3.5.11(typescript@5.6.2) @@ -7721,14 +7739,14 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@9.13.1(vue@3.5.11): + vue-i18n@9.13.1(vue@3.5.11(typescript@5.6.2)): dependencies: '@intlify/core-base': 9.13.1 '@intlify/shared': 9.13.1 '@vue/devtools-api': 6.6.1 vue: 3.5.11(typescript@5.6.2) - vue-router@4.3.2(vue@3.5.11): + vue-router@4.3.2(vue@3.5.11(typescript@5.6.2)): dependencies: '@vue/devtools-api': 6.6.1 vue: 3.5.11(typescript@5.6.2) @@ -7745,16 +7763,18 @@ snapshots: '@vue/compiler-dom': 3.5.11 '@vue/compiler-sfc': 3.5.11 '@vue/runtime-dom': 3.5.11 - '@vue/server-renderer': 3.5.11(vue@3.5.11) + '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@5.6.2)) '@vue/shared': 3.5.11 + optionalDependencies: typescript: 5.6.2 - vuetify@3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.3)(vue-i18n@9.13.1)(vue@3.5.11): + vuetify@3.5.9(typescript@5.6.2)(vite-plugin-vuetify@2.0.4)(vue-i18n@9.13.1(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2)): dependencies: - typescript: 5.6.2 - vite-plugin-vuetify: 2.0.3(vite@5.2.11)(vue@3.5.11)(vuetify@3.5.9) vue: 3.5.11(typescript@5.6.2) - vue-i18n: 9.13.1(vue@3.5.11) + optionalDependencies: + typescript: 5.6.2 + vite-plugin-vuetify: 2.0.4(vite@5.4.10(@types/node@22.7.4)(sass@1.77.1))(vue@3.5.11(typescript@5.6.2))(vuetify@3.5.9) + vue-i18n: 9.13.1(vue@3.5.11(typescript@5.6.2)) w3c-xmlserializer@5.0.0: dependencies: