@vonage/vivid-test-utils 5.15.1 → 5.16.0
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/components.generated-Bgf7lMJM.js +2336 -0
- package/dist/components.generated-DNNSCeHI.cjs +1 -0
- package/dist/components.generated.d.ts +1 -2
- package/dist/cypress.cjs +1 -3
- package/dist/cypress.js +118 -133
- package/dist/dom.cjs +1 -3
- package/dist/dom.js +110 -120
- package/dist/jsdom-polyfill.cjs +1 -1
- package/dist/jsdom-polyfill.js +18 -34
- package/dist/playwright.cjs +1 -3
- package/dist/playwright.js +72 -87
- package/package.json +9 -8
- package/dist/components.generated-CGHMGSPz.js +0 -3671
- package/dist/components.generated-DfmxVXP1.cjs +0 -1
package/dist/dom.js
CHANGED
|
@@ -1,120 +1,110 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}, f = (c, i) => {
|
|
112
|
-
const s = {
|
|
113
|
-
rootLocator: i,
|
|
114
|
-
driver: p(c)
|
|
115
|
-
};
|
|
116
|
-
return new u(s);
|
|
117
|
-
};
|
|
118
|
-
export {
|
|
119
|
-
f as vividDOM
|
|
120
|
-
};
|
|
1
|
+
import { t as e } from "./components.generated-Bgf7lMJM.js";
|
|
2
|
+
import t from "@testing-library/user-event";
|
|
3
|
+
//#region src/drivers/dom.ts
|
|
4
|
+
var n = () => new Promise((e) => {
|
|
5
|
+
requestAnimationFrame(() => e());
|
|
6
|
+
}), r = (e) => {
|
|
7
|
+
let r = t.setup(), i = async (e) => {
|
|
8
|
+
e.focus(), e.value = "", e.dispatchEvent(new InputEvent("input", {
|
|
9
|
+
bubbles: !0,
|
|
10
|
+
composed: !0
|
|
11
|
+
}));
|
|
12
|
+
};
|
|
13
|
+
return {
|
|
14
|
+
querySelector: (e, t) => {
|
|
15
|
+
let n = e.querySelector(t);
|
|
16
|
+
if (!n) throw Error(`Could not find element: ${t}`);
|
|
17
|
+
return n;
|
|
18
|
+
},
|
|
19
|
+
enterShadow(e) {
|
|
20
|
+
if (!e.shadowRoot) throw Error(`Element ${e.outerHTML} does not have a shadow root`);
|
|
21
|
+
return e.shadowRoot;
|
|
22
|
+
},
|
|
23
|
+
querySelectorAll: (e, t) => e ? Array.from(e.querySelectorAll(t)) : [],
|
|
24
|
+
nth: (e, t) => {
|
|
25
|
+
if (t < 0 || t > e.length - 1) throw Error(`Could not find element with index "${t}". Collection only has "${e.length}" elements.`);
|
|
26
|
+
return e[t];
|
|
27
|
+
},
|
|
28
|
+
userClick: async (e) => {
|
|
29
|
+
await r.click(e), await n();
|
|
30
|
+
},
|
|
31
|
+
userFill: async (e, t) => {
|
|
32
|
+
await i(e), t && await r.type(e, t), await n();
|
|
33
|
+
},
|
|
34
|
+
userClear: async (e) => {
|
|
35
|
+
await i(e), await n();
|
|
36
|
+
},
|
|
37
|
+
userFocus: async (e) => {
|
|
38
|
+
e.focus(), await n();
|
|
39
|
+
},
|
|
40
|
+
userBlur: async (e) => {
|
|
41
|
+
e.blur(), (e.tagName === "INPUT" || e.tagName === "TEXTAREA") && e.dispatchEvent(new InputEvent("change", {
|
|
42
|
+
bubbles: !0,
|
|
43
|
+
composed: !0
|
|
44
|
+
})), await n();
|
|
45
|
+
},
|
|
46
|
+
userHover: async (e) => {
|
|
47
|
+
await r.hover(e), await n();
|
|
48
|
+
},
|
|
49
|
+
userDragSlider: async (e, t, r, i) => {
|
|
50
|
+
if (r.id === "start-thumb") {
|
|
51
|
+
let t = e;
|
|
52
|
+
t.startAsNumber = i, t.$emit("input:start"), t.$emit("input");
|
|
53
|
+
} else if (r.id === "end-thumb") {
|
|
54
|
+
let t = e;
|
|
55
|
+
t.endAsNumber = i, t.$emit("input:end"), t.$emit("input");
|
|
56
|
+
} else {
|
|
57
|
+
let t = e;
|
|
58
|
+
t.valueAsNumber = i;
|
|
59
|
+
}
|
|
60
|
+
await n();
|
|
61
|
+
},
|
|
62
|
+
eval: async (e, t, n, r) => {
|
|
63
|
+
let i = await t(e, n);
|
|
64
|
+
await r?.(i);
|
|
65
|
+
},
|
|
66
|
+
waitForUpdate: async () => {
|
|
67
|
+
await n();
|
|
68
|
+
},
|
|
69
|
+
expectEq: (t, n, r) => {
|
|
70
|
+
switch (t.type) {
|
|
71
|
+
case "eval":
|
|
72
|
+
try {
|
|
73
|
+
e(t.fn(t.el, t.arg)).toEqual(n);
|
|
74
|
+
} catch (e) {
|
|
75
|
+
throw e instanceof Error && (e.message = `${r}\n\nOriginal error: ${e.message}`), e;
|
|
76
|
+
}
|
|
77
|
+
break;
|
|
78
|
+
case "count":
|
|
79
|
+
e(t.el.length).toEqual(n);
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
wrapAction: (e) => async function t(...n) {
|
|
84
|
+
try {
|
|
85
|
+
return await e(...n);
|
|
86
|
+
} catch (e) {
|
|
87
|
+
throw e instanceof Error && Error.captureStackTrace(e, t), e;
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
wrapExpect: (e) => function t(...n) {
|
|
91
|
+
try {
|
|
92
|
+
return e(...n);
|
|
93
|
+
} catch (e) {
|
|
94
|
+
throw e instanceof Error && Error.captureStackTrace(e, t), e;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
wrapSelector: (e) => function t(...n) {
|
|
98
|
+
try {
|
|
99
|
+
return e(...n);
|
|
100
|
+
} catch (e) {
|
|
101
|
+
throw e instanceof Error && Error.captureStackTrace(e, t), e;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}, i = (t, n) => new e({
|
|
106
|
+
rootLocator: n,
|
|
107
|
+
driver: r(t)
|
|
108
|
+
});
|
|
109
|
+
//#endregion
|
|
110
|
+
export { i as vividDOM };
|
package/dist/jsdom-polyfill.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./dom.cjs`);let e=require(`@vonage/vivid`);function t(){HTMLDialogElement.prototype.showModal=function(){this.open=!0,this.setAttribute(`open`,``)},HTMLDialogElement.prototype.close=function(){this.open=!1,this.removeAttribute(`open`)},HTMLElement.prototype.hidePopover=function(){},HTMLElement.prototype.showPopover=function(){},HTMLElement.prototype.scrollIntoView=function(){},Object.defineProperty(Object.getPrototypeOf(e.VwcButtonElement).prototype,`handleUnsupportedDelegatesFocus`,{set(){},get(){return()=>void 0}}),window.ResizeObserver=class{constructor(){}observe(){}disconnect(){}}}t(),window.HTMLElement.prototype.scrollIntoView=function(){},window.HTMLElement.prototype.scrollTo=function(){},exports.setDialogPolyfill=t;
|
package/dist/jsdom-polyfill.js
CHANGED
|
@@ -1,37 +1,21 @@
|
|
|
1
1
|
import { VwcButtonElement as e } from "@vonage/vivid";
|
|
2
|
+
//#region src/jsdom-polyfill.ts
|
|
2
3
|
function t() {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return () => {
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
), window.ResizeObserver = class {
|
|
22
|
-
constructor() {
|
|
23
|
-
}
|
|
24
|
-
observe() {
|
|
25
|
-
}
|
|
26
|
-
disconnect() {
|
|
27
|
-
}
|
|
28
|
-
};
|
|
4
|
+
HTMLDialogElement.prototype.showModal = function() {
|
|
5
|
+
this.open = !0, this.setAttribute("open", "");
|
|
6
|
+
}, HTMLDialogElement.prototype.close = function() {
|
|
7
|
+
this.open = !1, this.removeAttribute("open");
|
|
8
|
+
}, HTMLElement.prototype.hidePopover = function() {}, HTMLElement.prototype.showPopover = function() {}, HTMLElement.prototype.scrollIntoView = function() {}, Object.defineProperty(Object.getPrototypeOf(e).prototype, "handleUnsupportedDelegatesFocus", {
|
|
9
|
+
set() {},
|
|
10
|
+
get() {
|
|
11
|
+
return () => void 0;
|
|
12
|
+
}
|
|
13
|
+
}), window.ResizeObserver = class {
|
|
14
|
+
constructor() {}
|
|
15
|
+
observe() {}
|
|
16
|
+
disconnect() {}
|
|
17
|
+
};
|
|
29
18
|
}
|
|
30
|
-
t();
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
window.HTMLElement.prototype.scrollTo = function() {
|
|
34
|
-
};
|
|
35
|
-
export {
|
|
36
|
-
t as setDialogPolyfill
|
|
37
|
-
};
|
|
19
|
+
t(), window.HTMLElement.prototype.scrollIntoView = function() {}, window.HTMLElement.prototype.scrollTo = function() {};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { t as setDialogPolyfill };
|
package/dist/playwright.cjs
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Original error: ${e.message}`),e}break;case"count":await c(r.el).toHaveCount(t);break}},wrapAction:r=>async function t(...a){try{return await r(...a)}catch(e){throw e instanceof Error&&Error.captureStackTrace(e,t),e}},wrapExpect:r=>async function t(...a){try{return await r(...a)}catch(e){throw e instanceof Error&&Error.captureStackTrace(e,t),e}},wrapSelector:r=>r}),p=(c,r)=>{const t={rootLocator:c,driver:w(r)};return new l.VividWrapper(t)};exports.vividPlaywright=p;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./components.generated-DNNSCeHI.cjs`);var t=e=>({querySelector:(e,t)=>e.locator(t),enterShadow:e=>e,querySelectorAll:(e,t)=>e.locator(t),nth:(e,t)=>e.nth(t),userClick:e=>e.click(),userFill:(e,t)=>e.fill(t),userClear:e=>e.clear(),userFocus:e=>e.focus(),userBlur:e=>e.blur(),userHover:e=>e.hover(),userDragSlider:async(e,t,n,r)=>{let i=await n.getAttribute(`id`);await e.evaluate((e,[t,n])=>{if(t===`start-thumb`){let t=e;t.startAsNumber=n,t.$emit(`input:start`),t.$emit(`input`)}else if(t===`end-thumb`){let t=e;t.endAsNumber=n,t.$emit(`input:end`),t.$emit(`input`)}else{let t=e;t.valueAsNumber=n}},[i,r])},eval:async(e,t,n,r)=>{let i=await e.evaluate(t,n);await r?.(i)},waitForUpdate:async e=>{await e.evaluate(()=>new Promise(e=>{requestAnimationFrame(()=>e())}))},expectEq:async(t,n,r)=>{switch(t.type){case`eval`:try{await e(async()=>e(await t.el.evaluate(t.fn,t.arg)).toEqual(n)).toPass()}catch(e){throw e instanceof Error&&(e.message=`${r}\n\nOriginal error: ${e.message}`),e}break;case`count`:await e(t.el).toHaveCount(n);break}},wrapAction:e=>async function t(...n){try{return await e(...n)}catch(e){throw e instanceof Error&&Error.captureStackTrace(e,t),e}},wrapExpect:e=>async function t(...n){try{return await e(...n)}catch(e){throw e instanceof Error&&Error.captureStackTrace(e,t),e}},wrapSelector:e=>e}),n=(n,r)=>new e.t({rootLocator:n,driver:t(r)});exports.vividPlaywright=n;
|
package/dist/playwright.js
CHANGED
|
@@ -1,87 +1,72 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
} catch (e) {
|
|
74
|
-
throw e instanceof Error && Error.captureStackTrace(e, t), e;
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
wrapSelector: (r) => r
|
|
78
|
-
}), h = (c, r) => {
|
|
79
|
-
const t = {
|
|
80
|
-
rootLocator: c,
|
|
81
|
-
driver: w(r)
|
|
82
|
-
};
|
|
83
|
-
return new l(t);
|
|
84
|
-
};
|
|
85
|
-
export {
|
|
86
|
-
h as vividPlaywright
|
|
87
|
-
};
|
|
1
|
+
import { t as e } from "./components.generated-Bgf7lMJM.js";
|
|
2
|
+
//#region src/drivers/playwright.ts
|
|
3
|
+
var t = (e) => ({
|
|
4
|
+
querySelector: (e, t) => e.locator(t),
|
|
5
|
+
enterShadow: (e) => e,
|
|
6
|
+
querySelectorAll: (e, t) => e.locator(t),
|
|
7
|
+
nth: (e, t) => e.nth(t),
|
|
8
|
+
userClick: (e) => e.click(),
|
|
9
|
+
userFill: (e, t) => e.fill(t),
|
|
10
|
+
userClear: (e) => e.clear(),
|
|
11
|
+
userFocus: (e) => e.focus(),
|
|
12
|
+
userBlur: (e) => e.blur(),
|
|
13
|
+
userHover: (e) => e.hover(),
|
|
14
|
+
userDragSlider: async (e, t, n, r) => {
|
|
15
|
+
let i = await n.getAttribute("id");
|
|
16
|
+
await e.evaluate((e, [t, n]) => {
|
|
17
|
+
if (t === "start-thumb") {
|
|
18
|
+
let t = e;
|
|
19
|
+
t.startAsNumber = n, t.$emit("input:start"), t.$emit("input");
|
|
20
|
+
} else if (t === "end-thumb") {
|
|
21
|
+
let t = e;
|
|
22
|
+
t.endAsNumber = n, t.$emit("input:end"), t.$emit("input");
|
|
23
|
+
} else {
|
|
24
|
+
let t = e;
|
|
25
|
+
t.valueAsNumber = n;
|
|
26
|
+
}
|
|
27
|
+
}, [i, r]);
|
|
28
|
+
},
|
|
29
|
+
eval: async (e, t, n, r) => {
|
|
30
|
+
let i = await e.evaluate(t, n);
|
|
31
|
+
await r?.(i);
|
|
32
|
+
},
|
|
33
|
+
waitForUpdate: async (e) => {
|
|
34
|
+
await e.evaluate(() => new Promise((e) => {
|
|
35
|
+
requestAnimationFrame(() => e());
|
|
36
|
+
}));
|
|
37
|
+
},
|
|
38
|
+
expectEq: async (t, n, r) => {
|
|
39
|
+
switch (t.type) {
|
|
40
|
+
case "eval":
|
|
41
|
+
try {
|
|
42
|
+
await e(async () => e(await t.el.evaluate(t.fn, t.arg)).toEqual(n)).toPass();
|
|
43
|
+
} catch (e) {
|
|
44
|
+
throw e instanceof Error && (e.message = `${r}\n\nOriginal error: ${e.message}`), e;
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
case "count":
|
|
48
|
+
await e(t.el).toHaveCount(n);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
wrapAction: (e) => async function t(...n) {
|
|
53
|
+
try {
|
|
54
|
+
return await e(...n);
|
|
55
|
+
} catch (e) {
|
|
56
|
+
throw e instanceof Error && Error.captureStackTrace(e, t), e;
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
wrapExpect: (e) => async function t(...n) {
|
|
60
|
+
try {
|
|
61
|
+
return await e(...n);
|
|
62
|
+
} catch (e) {
|
|
63
|
+
throw e instanceof Error && Error.captureStackTrace(e, t), e;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
wrapSelector: (e) => e
|
|
67
|
+
}), n = (n, r) => new e({
|
|
68
|
+
rootLocator: n,
|
|
69
|
+
driver: t(r)
|
|
70
|
+
});
|
|
71
|
+
//#endregion
|
|
72
|
+
export { n as vividPlaywright };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vonage/vivid-test-utils",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.16.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./dom": {
|
|
@@ -30,26 +30,27 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@testing-library/user-event": "^14.6.1",
|
|
32
32
|
"change-case": "^5.4.4",
|
|
33
|
-
"@vonage/vivid": "^5.
|
|
33
|
+
"@vonage/vivid": "^5.16.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@playwright/test": "1.57.0",
|
|
37
|
+
"@types/node": "^20.19.25",
|
|
37
38
|
"@vitejs/plugin-vue": "^6.0.0",
|
|
38
39
|
"@vue/test-utils": "^2.4.6",
|
|
39
40
|
"concurrently": "^9.2.1",
|
|
40
|
-
"cypress": "^
|
|
41
|
+
"cypress": "^15.11.0",
|
|
41
42
|
"tsx": "^4.21.0",
|
|
42
|
-
"vite": "^
|
|
43
|
-
"vitest": "^
|
|
43
|
+
"vite": "^8.0.0",
|
|
44
|
+
"vitest": "^4.1.0",
|
|
44
45
|
"vue": "^3.5.29",
|
|
45
46
|
"wait-on": "^8.0.5",
|
|
46
47
|
"@repo/eslint-config": "1.0.0",
|
|
47
48
|
"@repo/shared": "1.0.0",
|
|
48
|
-
"@repo/
|
|
49
|
+
"@repo/metadata-extractor": "1.0.0",
|
|
49
50
|
"@repo/vitest-config": "1.0.0",
|
|
51
|
+
"@repo/typescript-config": "1.0.0",
|
|
50
52
|
"@repo/wrapper-gen": "1.0.0",
|
|
51
|
-
"@
|
|
52
|
-
"@vonage/vivid-vue": "5.15.1"
|
|
53
|
+
"@vonage/vivid-vue": "5.16.0"
|
|
53
54
|
},
|
|
54
55
|
"scripts": {
|
|
55
56
|
"prebuild": "tsx scripts/codegen.ts",
|