@frigear-nu/events 0.0.10 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module.json +1 -1
- package/dist/module.mjs +6 -4
- package/dist/runtime/app/components/EventAdminAddonDialog.d.vue.ts +2 -2
- package/dist/runtime/app/components/EventAdminAddonDialog.vue +3 -4
- package/dist/runtime/app/components/EventAdminAddonDialog.vue.d.ts +2 -2
- package/dist/runtime/app/components/EventAdminAddonGroupDialog.d.vue.ts +2 -2
- package/dist/runtime/app/components/EventAdminAddonGroupDialog.vue +3 -4
- package/dist/runtime/app/components/EventAdminAddonGroupDialog.vue.d.ts +2 -2
- package/dist/runtime/app/components/EventAdminAddonGroups.d.vue.ts +8 -8
- package/dist/runtime/app/components/EventAdminAddonGroups.vue +46 -55
- package/dist/runtime/app/components/EventAdminAddonGroups.vue.d.ts +8 -8
- package/dist/runtime/app/components/EventAdminTicketTypeDialog.d.vue.ts +2 -2
- package/dist/runtime/app/components/EventAdminTicketTypeDialog.vue +3 -4
- package/dist/runtime/app/components/EventAdminTicketTypeDialog.vue.d.ts +2 -2
- package/dist/runtime/app/components/EventCard.vue +7 -12
- package/dist/runtime/app/components/EventFormSlideover.d.vue.ts +13 -0
- package/dist/runtime/app/components/EventFormSlideover.vue +70 -0
- package/dist/runtime/app/components/EventFormSlideover.vue.d.ts +13 -0
- package/dist/runtime/app/components/EventTicketCard.vue +5 -7
- package/dist/runtime/app/components/EventTicketPicker.vue +5 -6
- package/dist/runtime/app/composables/index.d.ts +2 -0
- package/dist/runtime/app/composables/index.js +2 -0
- package/dist/runtime/app/composables/useEventActions.d.ts +26 -0
- package/dist/runtime/app/composables/useEventActions.js +61 -0
- package/dist/runtime/app/composables/useEventLinks.d.ts +12 -0
- package/dist/runtime/app/composables/useEventLinks.js +5 -0
- package/dist/runtime/app/composables/useEvents.d.ts +5 -2
- package/dist/runtime/app/pages/admin-event.vue +33 -21
- package/dist/runtime/app/pages/admin.vue +61 -135
- package/dist/runtime/app/pages/event.d.vue.ts +2 -2
- package/dist/runtime/app/pages/event.vue +113 -152
- package/dist/runtime/app/pages/event.vue.d.ts +2 -2
- package/dist/runtime/app/pages/events.vue +33 -31
- package/dist/runtime/app/pages/tickets.vue +21 -28
- package/dist/runtime/app/tabs/Attendees.d.vue.ts +2 -2
- package/dist/runtime/app/tabs/Attendees.vue +64 -60
- package/dist/runtime/app/tabs/Attendees.vue.d.ts +2 -2
- package/dist/runtime/app/tabs/Details.d.vue.ts +2 -2
- package/dist/runtime/app/tabs/Details.vue +4 -5
- package/dist/runtime/app/tabs/Details.vue.d.ts +2 -2
- package/dist/runtime/app/tabs/Tickets.d.vue.ts +2 -2
- package/dist/runtime/app/tabs/Tickets.vue +92 -99
- package/dist/runtime/app/tabs/Tickets.vue.d.ts +2 -2
- package/dist/runtime/app/utils/admin-event.d.ts +9 -12
- package/dist/runtime/app/utils/admin-event.js +0 -17
- package/dist/runtime/app/widgets/UpcomingEvents.vue +7 -9
- package/dist/runtime/app/widgets/UpcomingEventsStat.vue +5 -6
- package/dist/runtime/i18n/lang/da.json +111 -3
- package/dist/runtime/i18n/lang/en.json +111 -3
- package/dist/runtime/menus.js +2 -4
- package/dist/runtime/server/utils/admin.d.ts +5 -5
- package/dist/runtime/utils/index.d.ts +1 -0
- package/dist/runtime/utils/index.js +1 -0
- package/dist/runtime/utils/links.d.ts +21 -0
- package/dist/runtime/utils/links.js +12 -0
- package/package.json +21 -21
|
@@ -55,8 +55,11 @@
|
|
|
55
55
|
"paid": "Paid",
|
|
56
56
|
"cancelled": "Cancelled",
|
|
57
57
|
"pending": "Pending",
|
|
58
|
-
"abandoned": "Abandoned"
|
|
59
|
-
|
|
58
|
+
"abandoned": "Abandoned",
|
|
59
|
+
"refunded": "Refunded",
|
|
60
|
+
"expired": "Expired"
|
|
61
|
+
},
|
|
62
|
+
"qrAlt": "Ticket QR code"
|
|
60
63
|
},
|
|
61
64
|
"cart": {
|
|
62
65
|
"title": "Cart",
|
|
@@ -120,7 +123,112 @@
|
|
|
120
123
|
"title": "Upcoming events",
|
|
121
124
|
"empty": "No upcoming events.",
|
|
122
125
|
"all": "All events"
|
|
126
|
+
},
|
|
127
|
+
"saved": "Saved.",
|
|
128
|
+
"details": "Details",
|
|
129
|
+
"name": "Name",
|
|
130
|
+
"description": "Description",
|
|
131
|
+
"listDescription": "Events, their ticket types and attendees.",
|
|
132
|
+
"body": "Details",
|
|
133
|
+
"bodyHelp": "Shown on the event page. Markdown is supported.",
|
|
134
|
+
"save": "Save",
|
|
135
|
+
"confirmRefund": "Refund this ticket?",
|
|
136
|
+
"confirmCancel": "Cancel this ticket?",
|
|
137
|
+
"confirmRefundDescription": "The full amount goes back to {name} and the ticket is cancelled.",
|
|
138
|
+
"confirmCancelDescription": "The ticket of {name} stops working and its seat is freed.",
|
|
139
|
+
"refund": "Refund ticket",
|
|
140
|
+
"cancelTicket": "Cancel ticket",
|
|
141
|
+
"refunded": "Refunded.",
|
|
142
|
+
"cancelled": "Cancelled.",
|
|
143
|
+
"attendee": "Attendee",
|
|
144
|
+
"ticketType": "Ticket",
|
|
145
|
+
"status": "Status",
|
|
146
|
+
"checkedIn": "Checked in",
|
|
147
|
+
"attendees": "Attendees",
|
|
148
|
+
"noAttendees": "No tickets yet.",
|
|
149
|
+
"price": "Price",
|
|
150
|
+
"capacity": "Capacity",
|
|
151
|
+
"access": "Access",
|
|
152
|
+
"addonGroups": "Add-ons",
|
|
153
|
+
"ruleAny": "Any membership",
|
|
154
|
+
"confirmRemoveType": "Delete {name}?",
|
|
155
|
+
"confirmRemoveTypeDescription": "Its add-on groups and choices are deleted too. A ticket type with active tickets cannot be deleted.",
|
|
156
|
+
"removeType": "Delete ticket type",
|
|
157
|
+
"typeDeleted": "Deleted {name}",
|
|
158
|
+
"editType": "Edit ticket type",
|
|
159
|
+
"ticketTypes": "Ticket types",
|
|
160
|
+
"addType": "Add ticket type",
|
|
161
|
+
"requires": "Requires",
|
|
162
|
+
"notFor": "Not for",
|
|
163
|
+
"noTypes": "No ticket types yet: nobody can buy a ticket.",
|
|
164
|
+
"ruleNone": "Nobody",
|
|
165
|
+
"rulePlans": "Specific memberships",
|
|
166
|
+
"typeSaved": "Ticket type saved.",
|
|
167
|
+
"key": "Key",
|
|
168
|
+
"keyHelp": "A short unique id, e.g. member.",
|
|
169
|
+
"capacityHelp": "Leave empty for unlimited.",
|
|
170
|
+
"requiresMembership": "Only for members of",
|
|
171
|
+
"requiresHelp": "Visitors without a matching active membership cannot buy this ticket.",
|
|
172
|
+
"excludesMembership": "Not for members of",
|
|
173
|
+
"excludesHelp": "Holders of these memberships cannot buy this ticket, so members and non-members can have separate prices.",
|
|
174
|
+
"cancel": "Cancel",
|
|
175
|
+
"created": "Event created",
|
|
176
|
+
"create": "New event",
|
|
177
|
+
"createDescription": "It is saved as a draft until you publish it.",
|
|
178
|
+
"createAction": "Create draft",
|
|
179
|
+
"slug": "URL name",
|
|
180
|
+
"slugHelp": "Lowercase letters, numbers and dashes.",
|
|
181
|
+
"starts": "Starts",
|
|
182
|
+
"ends": "Ends",
|
|
183
|
+
"location": "Location",
|
|
184
|
+
"addonSaved": "Add-on saved.",
|
|
185
|
+
"editAddon": "Edit choice",
|
|
186
|
+
"addAddon": "Add choice",
|
|
187
|
+
"addonPriceHelp": "Added to the ticket price. 0 means included.",
|
|
188
|
+
"confirmRemoveGroup": "Delete {name}?",
|
|
189
|
+
"confirmRemoveGroupDescription": "Its choices are deleted too. Tickets already bought keep the choices they made.",
|
|
190
|
+
"removeGroup": "Delete add-on group",
|
|
191
|
+
"groupDeleted": "Deleted {name}",
|
|
192
|
+
"confirmRemoveAddon": "Delete {name}?",
|
|
193
|
+
"confirmRemoveAddonDescription": "Tickets already bought keep the choice they made.",
|
|
194
|
+
"removeAddon": "Delete choice",
|
|
195
|
+
"addonDeleted": "Deleted {name}",
|
|
196
|
+
"editGroup": "Edit add-on group",
|
|
197
|
+
"groupRequired": "required",
|
|
198
|
+
"groupOptional": "optional",
|
|
199
|
+
"groupMultiple": "several choices",
|
|
200
|
+
"groupSingle": "one choice",
|
|
201
|
+
"included": "Included",
|
|
202
|
+
"noAddons": "No choices yet: buyers will see nothing to pick.",
|
|
203
|
+
"addGroup": "Add add-on group",
|
|
204
|
+
"groupSaved": "Add-on group saved.",
|
|
205
|
+
"groupTitle": "Title",
|
|
206
|
+
"groupTitleHelp": "Shown above the choices, e.g. Food.",
|
|
207
|
+
"groupRequiredLabel": "Buyers must choose at least one",
|
|
208
|
+
"groupMultipleLabel": "Buyers can choose several",
|
|
209
|
+
"title": "Events",
|
|
210
|
+
"viewPublic": "View public page",
|
|
211
|
+
"keyFacts": "Event",
|
|
212
|
+
"saveEvent": "Save event",
|
|
213
|
+
"allEvents": "All events",
|
|
214
|
+
"empty": "No events yet",
|
|
215
|
+
"emptyDescription": "Create the first event to start selling tickets.",
|
|
216
|
+
"duplicated": "Event duplicated as a draft",
|
|
217
|
+
"deleteTitle": "Delete {name}?",
|
|
218
|
+
"deleteDescription": "Its ticket types and add-ons are deleted too. Events with paid tickets cannot be deleted.",
|
|
219
|
+
"deleteAction": "Delete event",
|
|
220
|
+
"deleted": "Deleted {name}",
|
|
221
|
+
"deleteFailed": "Could not delete the event",
|
|
222
|
+
"open": "Open",
|
|
223
|
+
"clone": "Duplicate",
|
|
224
|
+
"statuses": {
|
|
225
|
+
"draft": "Draft",
|
|
226
|
+
"published": "Published",
|
|
227
|
+
"archived": "Archived"
|
|
123
228
|
}
|
|
124
|
-
}
|
|
229
|
+
},
|
|
230
|
+
"listDescription": "Find an event and get your ticket.",
|
|
231
|
+
"noTicketsTitle": "No tickets yet",
|
|
232
|
+
"browseEvents": "Browse events"
|
|
125
233
|
}
|
|
126
234
|
}
|
package/dist/runtime/menus.js
CHANGED
|
@@ -2,7 +2,7 @@ import { defineMenuItem, defineMenuSource, extendMenuItem } from "@frigear-nu/me
|
|
|
2
2
|
export default defineMenuSource(() => {
|
|
3
3
|
const config = useRuntimeConfig().public.events;
|
|
4
4
|
if (config?.pages?.tickets) {
|
|
5
|
-
|
|
5
|
+
extendMenuItem("account", defineMenuItem({
|
|
6
6
|
id: "event-tickets",
|
|
7
7
|
label: "Tickets",
|
|
8
8
|
labelKey: "events.menu.tickets.label",
|
|
@@ -11,9 +11,7 @@ export default defineMenuSource(() => {
|
|
|
11
11
|
icon: "i-lucide-ticket",
|
|
12
12
|
to: config.pages.tickets,
|
|
13
13
|
order: 40
|
|
14
|
-
});
|
|
15
|
-
extendMenuItem("account", item);
|
|
16
|
-
extendMenuItem("dashboard.account", item);
|
|
14
|
+
}));
|
|
17
15
|
}
|
|
18
16
|
if (config?.pages?.admin) {
|
|
19
17
|
extendMenuItem("admin.nav", defineMenuItem({
|
|
@@ -20,25 +20,25 @@ export declare const eventPatchSchema: z.ZodObject<{
|
|
|
20
20
|
name: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodString>, z.ZodTransform<{
|
|
21
21
|
[k: string]: string;
|
|
22
22
|
}, Record<string, string>>>]>>;
|
|
23
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
23
24
|
status: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
24
25
|
draft: "draft";
|
|
25
26
|
published: "published";
|
|
26
27
|
archived: "archived";
|
|
27
28
|
}>>>;
|
|
28
|
-
|
|
29
|
-
description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodString>, z.ZodTransform<{
|
|
29
|
+
body: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodString>, z.ZodTransform<{
|
|
30
30
|
[k: string]: string;
|
|
31
31
|
}, Record<string, string>>>]>>>>;
|
|
32
|
-
|
|
32
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodString>, z.ZodTransform<{
|
|
33
33
|
[k: string]: string;
|
|
34
34
|
}, Record<string, string>>>]>>>>;
|
|
35
35
|
image: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
36
|
+
startsAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
36
37
|
location: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodString>, z.ZodTransform<{
|
|
37
38
|
[k: string]: string;
|
|
38
39
|
}, Record<string, string>>>]>>>>;
|
|
39
|
-
locationUrl: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
40
|
-
startsAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
41
40
|
endsAt: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
41
|
+
locationUrl: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
42
42
|
requiresMembership: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodLiteral<"any">, z.ZodArray<z.ZodString>]>>>>;
|
|
43
43
|
}, z.core.$strip>;
|
|
44
44
|
export declare function patchEventRow(id: string, patch: z.output<typeof eventPatchSchema>): Promise<any>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { translate } from '@frigear-nu/ui/translated';
|
|
2
2
|
import type { MembershipRequirement } from '../types.js';
|
|
3
3
|
export { translate };
|
|
4
|
+
export * from './links.js';
|
|
4
5
|
export type { AddonDto, AddonGroupDto, AuthorizeContext, CheckInResponse, EventDetailDto, EventStatus, EventSummaryDto, MembershipRequirement, ModuleOptions, PurchaseBeforeContext, PurchaseBody, PurchaseResponse, TicketDto, TicketHookContext, TicketStatus, TicketTypeDto, Translated, } from '../types.js';
|
|
5
6
|
/** The currency tickets and add-ons are sold in unless they say otherwise (the column default). */
|
|
6
7
|
export declare const DEFAULT_CURRENCY = "DKK";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { translate } from "@frigear-nu/ui/translated";
|
|
2
2
|
import { formatMoney as formatPrice } from "@frigear-nu/ui/money";
|
|
3
3
|
export { translate };
|
|
4
|
+
export * from "./links.js";
|
|
4
5
|
export const DEFAULT_CURRENCY = "DKK";
|
|
5
6
|
export function normalizeMembership(value) {
|
|
6
7
|
if (value === "any") return "any";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** The configured page paths (`public.events.pages`), each possibly with a `:slug` / `:id` param. */
|
|
2
|
+
export type EventPages = {
|
|
3
|
+
events?: string;
|
|
4
|
+
event?: string;
|
|
5
|
+
tickets?: string;
|
|
6
|
+
admin?: string;
|
|
7
|
+
adminEvent?: string;
|
|
8
|
+
};
|
|
9
|
+
/** Fills a `:param` of a page path with a URL-safe value. */
|
|
10
|
+
export declare function fillPath(pattern: string, param: 'slug' | 'id', value: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Builds every link to an event page. All of them go through `localize` (the active locale's prefix, see
|
|
13
|
+
* `useLocaleLink` of `@frigear-nu/ui`), so a visitor browsing `/en/events` stays under `/en` when opening an event.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createEventLinks(pages: EventPages | undefined, localize: (path: string) => string): {
|
|
16
|
+
events: () => string;
|
|
17
|
+
event: (slug: string) => string;
|
|
18
|
+
tickets: () => string;
|
|
19
|
+
admin: () => string;
|
|
20
|
+
adminEvent: (id: string) => string;
|
|
21
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function fillPath(pattern, param, value) {
|
|
2
|
+
return pattern.replace(`:${param}`, encodeURIComponent(value));
|
|
3
|
+
}
|
|
4
|
+
export function createEventLinks(pages, localize) {
|
|
5
|
+
return {
|
|
6
|
+
events: () => localize(pages?.events || "/events"),
|
|
7
|
+
event: (slug) => localize(fillPath(pages?.event || "/events/:slug", "slug", slug)),
|
|
8
|
+
tickets: () => localize(pages?.tickets || "/account/tickets"),
|
|
9
|
+
admin: () => localize(pages?.admin || "/admin/events"),
|
|
10
|
+
adminEvent: (id) => localize(fillPath(pages?.adminEvent || "/admin/events/:id", "id", id))
|
|
11
|
+
};
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frigear-nu/events",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Events with ticket types, addons, capacity, membership requirements, Stripe payments and QR check-in for the frigear ecosystem, built on @frigear-nu/payments.",
|
|
5
5
|
"homepage": "https://docs.frigear.dev/modules/events",
|
|
6
6
|
"repository": {
|
|
@@ -30,17 +30,17 @@
|
|
|
30
30
|
"playground"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@frigear-nu/admin": "0.
|
|
34
|
-
"@frigear-nu/module-kit": "1.
|
|
35
|
-
"@frigear-nu/payments": "0.
|
|
36
|
-
"@frigear-nu/stripe": "0.
|
|
37
|
-
"@frigear-nu/subscriptions": "0.
|
|
38
|
-
"@frigear-nu/ui": "0.
|
|
39
|
-
"@frigear-nu/auth": "0.
|
|
40
|
-
"@frigear-nu/mcp": "0.
|
|
41
|
-
"@frigear-nu/users": "1.
|
|
33
|
+
"@frigear-nu/admin": "0.1.1",
|
|
34
|
+
"@frigear-nu/module-kit": "1.1.1",
|
|
35
|
+
"@frigear-nu/payments": "0.1.1",
|
|
36
|
+
"@frigear-nu/stripe": "0.1.1",
|
|
37
|
+
"@frigear-nu/subscriptions": "0.1.1",
|
|
38
|
+
"@frigear-nu/ui": "0.1.1",
|
|
39
|
+
"@frigear-nu/auth": "0.1.2",
|
|
40
|
+
"@frigear-nu/mcp": "0.1.1",
|
|
41
|
+
"@frigear-nu/users": "1.1.2",
|
|
42
42
|
"@libsql/client": "^0.18.0",
|
|
43
|
-
"@nuxt/kit": "^4.6.
|
|
43
|
+
"@nuxt/kit": "^4.6.1",
|
|
44
44
|
"@vueuse/core": "^15.0.0",
|
|
45
45
|
"drizzle-kit": "^0.31.11",
|
|
46
46
|
"drizzle-orm": "^0.45.3",
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
"zod": "^4.6.5"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@frigear-nu/menu": "0.
|
|
55
|
-
"@frigear-nu/widget": "0.
|
|
56
|
-
"@nuxt/ui": "^4.
|
|
54
|
+
"@frigear-nu/menu": "0.1.1",
|
|
55
|
+
"@frigear-nu/widget": "0.1.1",
|
|
56
|
+
"@nuxt/ui": "^4.11.2",
|
|
57
57
|
"@nuxthub/core": "^0.10.8"
|
|
58
58
|
},
|
|
59
59
|
"peerDependenciesMeta": {
|
|
@@ -68,21 +68,21 @@
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@frigear-nu/menu": "0.
|
|
72
|
-
"@frigear-nu/widget": "0.
|
|
71
|
+
"@frigear-nu/menu": "0.1.1",
|
|
72
|
+
"@frigear-nu/widget": "0.1.1",
|
|
73
73
|
"@nuxt/devtools": "^3.4.2",
|
|
74
74
|
"@nuxt/eslint-config": "^1.17.0",
|
|
75
75
|
"@nuxt/module-builder": "^1.0.3",
|
|
76
|
-
"@nuxt/schema": "^4.6.
|
|
76
|
+
"@nuxt/schema": "^4.6.1",
|
|
77
77
|
"@nuxt/test-utils": "^4.3.2",
|
|
78
|
-
"@nuxt/ui": "^4.11.
|
|
78
|
+
"@nuxt/ui": "^4.11.2",
|
|
79
79
|
"@nuxthub/core": "^0.10.8",
|
|
80
|
-
"@types/node": "
|
|
80
|
+
"@types/node": "^26.6.5",
|
|
81
81
|
"changelogen": "^0.6.2",
|
|
82
|
-
"eslint": "^10.
|
|
82
|
+
"eslint": "^10.12.0",
|
|
83
83
|
"nuxt": "^4.6.1",
|
|
84
84
|
"typescript": "^6.0.3",
|
|
85
|
-
"vitest": "^5.0.
|
|
85
|
+
"vitest": "^5.0.2",
|
|
86
86
|
"vue-tsc": "^3.3.11"
|
|
87
87
|
},
|
|
88
88
|
"scripts": {
|