@native-dom/runtime 0.0.2
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/LICENSE +22 -0
- package/README.md +44 -0
- package/dist/attributes.d.ts +20 -0
- package/dist/attributes.d.ts.map +1 -0
- package/dist/attributes.js +145 -0
- package/dist/attributes.js.map +1 -0
- package/dist/css.d.ts +139 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +573 -0
- package/dist/css.js.map +1 -0
- package/dist/custom-elements.d.ts +22 -0
- package/dist/custom-elements.d.ts.map +1 -0
- package/dist/custom-elements.js +62 -0
- package/dist/custom-elements.js.map +1 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-init.d.ts +93 -0
- package/dist/event-init.d.ts.map +1 -0
- package/dist/event-init.js +2 -0
- package/dist/event-init.js.map +1 -0
- package/dist/events.d.ts +164 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +470 -0
- package/dist/events.js.map +1 -0
- package/dist/geometry.d.ts +46 -0
- package/dist/geometry.d.ts.map +1 -0
- package/dist/geometry.js +73 -0
- package/dist/geometry.js.map +1 -0
- package/dist/history.d.ts +16 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +64 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +824 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3685 -0
- package/dist/index.js.map +1 -0
- package/dist/observers.d.ts +49 -0
- package/dist/observers.d.ts.map +1 -0
- package/dist/observers.js +59 -0
- package/dist/observers.js.map +1 -0
- package/dist/platform.d.ts +77 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +216 -0
- package/dist/platform.js.map +1 -0
- package/dist/stats.d.ts +33 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/stats.js +105 -0
- package/dist/stats.js.map +1 -0
- package/package.json +51 -0
package/dist/platform.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
export class Location {
|
|
2
|
+
#href;
|
|
3
|
+
constructor(href = "about:blank") {
|
|
4
|
+
this.#href = href;
|
|
5
|
+
}
|
|
6
|
+
get href() {
|
|
7
|
+
return this.#href;
|
|
8
|
+
}
|
|
9
|
+
set href(value) {
|
|
10
|
+
this.#href = this.#resolveHref(value);
|
|
11
|
+
}
|
|
12
|
+
get origin() {
|
|
13
|
+
return this.#url().origin;
|
|
14
|
+
}
|
|
15
|
+
get protocol() {
|
|
16
|
+
return this.#url().protocol;
|
|
17
|
+
}
|
|
18
|
+
set protocol(value) {
|
|
19
|
+
const url = this.#url();
|
|
20
|
+
url.protocol = String(value);
|
|
21
|
+
this.#href = url.href;
|
|
22
|
+
}
|
|
23
|
+
get host() {
|
|
24
|
+
return this.#url().host;
|
|
25
|
+
}
|
|
26
|
+
set host(value) {
|
|
27
|
+
const url = this.#url();
|
|
28
|
+
url.host = String(value);
|
|
29
|
+
this.#href = url.href;
|
|
30
|
+
}
|
|
31
|
+
get hostname() {
|
|
32
|
+
return this.#url().hostname;
|
|
33
|
+
}
|
|
34
|
+
set hostname(value) {
|
|
35
|
+
const url = this.#url();
|
|
36
|
+
url.hostname = String(value);
|
|
37
|
+
this.#href = url.href;
|
|
38
|
+
}
|
|
39
|
+
get port() {
|
|
40
|
+
return this.#url().port;
|
|
41
|
+
}
|
|
42
|
+
set port(value) {
|
|
43
|
+
const url = this.#url();
|
|
44
|
+
url.port = String(value);
|
|
45
|
+
this.#href = url.href;
|
|
46
|
+
}
|
|
47
|
+
get pathname() {
|
|
48
|
+
return this.#url().pathname;
|
|
49
|
+
}
|
|
50
|
+
set pathname(value) {
|
|
51
|
+
const url = this.#url();
|
|
52
|
+
url.pathname = String(value);
|
|
53
|
+
this.#href = url.href;
|
|
54
|
+
}
|
|
55
|
+
get search() {
|
|
56
|
+
return this.#url().search;
|
|
57
|
+
}
|
|
58
|
+
set search(value) {
|
|
59
|
+
const url = this.#url();
|
|
60
|
+
url.search = String(value);
|
|
61
|
+
this.#href = url.href;
|
|
62
|
+
}
|
|
63
|
+
get hash() {
|
|
64
|
+
return this.#url().hash;
|
|
65
|
+
}
|
|
66
|
+
set hash(value) {
|
|
67
|
+
const url = this.#url();
|
|
68
|
+
url.hash = String(value);
|
|
69
|
+
this.#href = url.href;
|
|
70
|
+
}
|
|
71
|
+
assign(value) {
|
|
72
|
+
this.href = value;
|
|
73
|
+
}
|
|
74
|
+
replace(value) {
|
|
75
|
+
this.href = value;
|
|
76
|
+
}
|
|
77
|
+
reload() { }
|
|
78
|
+
toString() {
|
|
79
|
+
return this.href;
|
|
80
|
+
}
|
|
81
|
+
#url() {
|
|
82
|
+
try {
|
|
83
|
+
return new URL(this.#href);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return new URL(this.#href, locationFallbackBase(this.#href));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
#resolveHref(value) {
|
|
90
|
+
const next = String(value);
|
|
91
|
+
try {
|
|
92
|
+
return new URL(next, locationFallbackBase(this.#href)).href;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return next;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const objectUrlRegistry = new Map();
|
|
100
|
+
let objectUrlCounter = 0;
|
|
101
|
+
export class URL extends globalThis.URL {
|
|
102
|
+
static createObjectURL(object) {
|
|
103
|
+
const createObjectURL = globalThis.URL.createObjectURL;
|
|
104
|
+
if (typeof createObjectURL === "function") {
|
|
105
|
+
return createObjectURL.call(globalThis.URL, object);
|
|
106
|
+
}
|
|
107
|
+
const random = typeof globalThis.crypto?.randomUUID === "function"
|
|
108
|
+
? globalThis.crypto.randomUUID()
|
|
109
|
+
: String(++objectUrlCounter);
|
|
110
|
+
const objectUrl = `blob:native-dom:${random}`;
|
|
111
|
+
objectUrlRegistry.set(objectUrl, object);
|
|
112
|
+
return objectUrl;
|
|
113
|
+
}
|
|
114
|
+
static revokeObjectURL(url) {
|
|
115
|
+
const revokeObjectURL = globalThis.URL.revokeObjectURL;
|
|
116
|
+
if (typeof revokeObjectURL === "function") {
|
|
117
|
+
revokeObjectURL.call(globalThis.URL, String(url));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
objectUrlRegistry.delete(String(url));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function locationFallbackBase(href) {
|
|
124
|
+
try {
|
|
125
|
+
const current = new URL(href);
|
|
126
|
+
if (current.protocol !== "about:" && current.protocol !== "data:") {
|
|
127
|
+
return current.href;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Fall back below.
|
|
132
|
+
}
|
|
133
|
+
return "http://localhost/";
|
|
134
|
+
}
|
|
135
|
+
export class Navigator {
|
|
136
|
+
userAgent = "Mozilla/5.0 (X11; Darwin arm64) AppleWebKit/537.36 (KHTML, like Gecko) NativeDOM/0.0.0";
|
|
137
|
+
cookieEnabled = true;
|
|
138
|
+
}
|
|
139
|
+
export class ScreenOrientation {
|
|
140
|
+
angle = 0;
|
|
141
|
+
type = "landscape-primary";
|
|
142
|
+
}
|
|
143
|
+
export class Screen {
|
|
144
|
+
width = 1024;
|
|
145
|
+
height = 768;
|
|
146
|
+
availWidth = 1024;
|
|
147
|
+
availHeight = 768;
|
|
148
|
+
colorDepth = 24;
|
|
149
|
+
pixelDepth = 24;
|
|
150
|
+
orientation = new ScreenOrientation();
|
|
151
|
+
}
|
|
152
|
+
export class Storage {
|
|
153
|
+
#entries = new Map();
|
|
154
|
+
get length() {
|
|
155
|
+
return this.#entries.size;
|
|
156
|
+
}
|
|
157
|
+
key(index) {
|
|
158
|
+
return [...this.#entries.keys()][index] ?? null;
|
|
159
|
+
}
|
|
160
|
+
getItem(key) {
|
|
161
|
+
return this.#entries.get(String(key)) ?? null;
|
|
162
|
+
}
|
|
163
|
+
setItem(key, value) {
|
|
164
|
+
this.#entries.set(String(key), String(value));
|
|
165
|
+
}
|
|
166
|
+
removeItem(key) {
|
|
167
|
+
this.#entries.delete(String(key));
|
|
168
|
+
}
|
|
169
|
+
clear() {
|
|
170
|
+
this.#entries.clear();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export class DataTransfer {
|
|
174
|
+
dropEffect = "none";
|
|
175
|
+
effectAllowed = "all";
|
|
176
|
+
items = new DataTransferItemList();
|
|
177
|
+
#data = new Map();
|
|
178
|
+
get files() {
|
|
179
|
+
return new FileList(...this.items);
|
|
180
|
+
}
|
|
181
|
+
get types() {
|
|
182
|
+
return [...this.#data.keys()];
|
|
183
|
+
}
|
|
184
|
+
clearData(format) {
|
|
185
|
+
if (format === undefined) {
|
|
186
|
+
this.#data.clear();
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
this.#data.delete(String(format));
|
|
190
|
+
}
|
|
191
|
+
getData(format) {
|
|
192
|
+
return this.#data.get(String(format)) ?? "";
|
|
193
|
+
}
|
|
194
|
+
setData(format, data) {
|
|
195
|
+
this.#data.set(String(format), String(data));
|
|
196
|
+
}
|
|
197
|
+
setDragImage(_image, _x, _y) { }
|
|
198
|
+
}
|
|
199
|
+
export class DataTransferItemList extends Array {
|
|
200
|
+
add(item) {
|
|
201
|
+
this.push(item);
|
|
202
|
+
return item;
|
|
203
|
+
}
|
|
204
|
+
remove(index) {
|
|
205
|
+
this.splice(index, 1);
|
|
206
|
+
}
|
|
207
|
+
clear() {
|
|
208
|
+
this.length = 0;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
export class FileList extends Array {
|
|
212
|
+
item(index) {
|
|
213
|
+
return this[index] ?? null;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/stats.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { NativeDocument as NativeDocumentBinding } from "@native-dom/native-core";
|
|
2
|
+
export interface RuntimeStatsSnapshot {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
nativeCalls: Record<string, number>;
|
|
5
|
+
operations: Record<string, number>;
|
|
6
|
+
wrappers: {
|
|
7
|
+
created: number;
|
|
8
|
+
cacheHits: number;
|
|
9
|
+
documentHits: number;
|
|
10
|
+
byKind: Record<string, number>;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
interface MutableRuntimeStats {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
nativeCalls: Record<string, number>;
|
|
16
|
+
operations: Record<string, number>;
|
|
17
|
+
wrappers: {
|
|
18
|
+
created: number;
|
|
19
|
+
cacheHits: number;
|
|
20
|
+
documentHits: number;
|
|
21
|
+
byKind: Record<string, number>;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare const runtimeStats: MutableRuntimeStats;
|
|
25
|
+
export declare function resetRuntimeStats(enabled?: boolean): RuntimeStatsSnapshot;
|
|
26
|
+
export declare function setRuntimeStatsEnabled(enabled: boolean): RuntimeStatsSnapshot;
|
|
27
|
+
export declare function getRuntimeStats(): RuntimeStatsSnapshot;
|
|
28
|
+
export declare function recordNativeCall(name: string): void;
|
|
29
|
+
export declare function recordOperation(name: string): void;
|
|
30
|
+
export declare function recordWrapperCreated(kind: string): void;
|
|
31
|
+
export declare function prepareNativeDocument(native: NativeDocumentBinding): NativeDocumentBinding;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH;AAED,eAAO,MAAM,YAAY,EAAE,mBAA+C,CAAC;AAI3E,wBAAgB,iBAAiB,CAAC,OAAO,UAAO,GAAG,oBAAoB,CAWtE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAG7E;AAED,wBAAgB,eAAe,IAAI,oBAAoB,CAYtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKlD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,CAE1F"}
|
package/dist/stats.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export const runtimeStats = createRuntimeStats(false);
|
|
2
|
+
const nativeDocumentProxyCache = new WeakMap();
|
|
3
|
+
export function resetRuntimeStats(enabled = true) {
|
|
4
|
+
runtimeStats.enabled = enabled;
|
|
5
|
+
runtimeStats.nativeCalls = emptyCounterMap();
|
|
6
|
+
runtimeStats.operations = emptyCounterMap();
|
|
7
|
+
runtimeStats.wrappers = {
|
|
8
|
+
created: 0,
|
|
9
|
+
cacheHits: 0,
|
|
10
|
+
documentHits: 0,
|
|
11
|
+
byKind: emptyCounterMap()
|
|
12
|
+
};
|
|
13
|
+
return getRuntimeStats();
|
|
14
|
+
}
|
|
15
|
+
export function setRuntimeStatsEnabled(enabled) {
|
|
16
|
+
runtimeStats.enabled = enabled;
|
|
17
|
+
return getRuntimeStats();
|
|
18
|
+
}
|
|
19
|
+
export function getRuntimeStats() {
|
|
20
|
+
return {
|
|
21
|
+
enabled: runtimeStats.enabled,
|
|
22
|
+
nativeCalls: snapshotCounterMap(runtimeStats.nativeCalls),
|
|
23
|
+
operations: snapshotCounterMap(runtimeStats.operations),
|
|
24
|
+
wrappers: {
|
|
25
|
+
created: runtimeStats.wrappers.created,
|
|
26
|
+
cacheHits: runtimeStats.wrappers.cacheHits,
|
|
27
|
+
documentHits: runtimeStats.wrappers.documentHits,
|
|
28
|
+
byKind: snapshotCounterMap(runtimeStats.wrappers.byKind)
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function recordNativeCall(name) {
|
|
33
|
+
if (!runtimeStats.enabled) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
incrementCounter(runtimeStats.nativeCalls, name);
|
|
37
|
+
}
|
|
38
|
+
export function recordOperation(name) {
|
|
39
|
+
if (!runtimeStats.enabled) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
incrementCounter(runtimeStats.operations, name);
|
|
43
|
+
}
|
|
44
|
+
export function recordWrapperCreated(kind) {
|
|
45
|
+
if (!runtimeStats.enabled) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
runtimeStats.wrappers.created++;
|
|
49
|
+
incrementCounter(runtimeStats.wrappers.byKind, kind);
|
|
50
|
+
}
|
|
51
|
+
export function prepareNativeDocument(native) {
|
|
52
|
+
return runtimeStats.enabled ? instrumentNativeDocument(native) : native;
|
|
53
|
+
}
|
|
54
|
+
function createRuntimeStats(enabled) {
|
|
55
|
+
return {
|
|
56
|
+
enabled,
|
|
57
|
+
nativeCalls: emptyCounterMap(),
|
|
58
|
+
operations: emptyCounterMap(),
|
|
59
|
+
wrappers: {
|
|
60
|
+
created: 0,
|
|
61
|
+
cacheHits: 0,
|
|
62
|
+
documentHits: 0,
|
|
63
|
+
byKind: emptyCounterMap()
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function emptyCounterMap() {
|
|
68
|
+
return Object.create(null);
|
|
69
|
+
}
|
|
70
|
+
function snapshotCounterMap(counts) {
|
|
71
|
+
return Object.fromEntries(Object.entries(counts).sort(([left], [right]) => left.localeCompare(right)));
|
|
72
|
+
}
|
|
73
|
+
function incrementCounter(counts, name) {
|
|
74
|
+
counts[name] = (counts[name] ?? 0) + 1;
|
|
75
|
+
}
|
|
76
|
+
function instrumentNativeDocument(native) {
|
|
77
|
+
if (!runtimeStats.enabled || typeof native !== "object" || native === null) {
|
|
78
|
+
return native;
|
|
79
|
+
}
|
|
80
|
+
const cached = nativeDocumentProxyCache.get(native);
|
|
81
|
+
if (cached) {
|
|
82
|
+
return cached;
|
|
83
|
+
}
|
|
84
|
+
const functionCache = new Map();
|
|
85
|
+
const proxy = new Proxy(native, {
|
|
86
|
+
get(target, property, receiver) {
|
|
87
|
+
const value = Reflect.get(target, property, receiver);
|
|
88
|
+
if (typeof value !== "function") {
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
if (functionCache.has(property)) {
|
|
92
|
+
return functionCache.get(property);
|
|
93
|
+
}
|
|
94
|
+
const wrapped = (...args) => {
|
|
95
|
+
recordNativeCall(String(property));
|
|
96
|
+
return Reflect.apply(value, target, args);
|
|
97
|
+
};
|
|
98
|
+
functionCache.set(property, wrapped);
|
|
99
|
+
return wrapped;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
nativeDocumentProxyCache.set(native, proxy);
|
|
103
|
+
return proxy;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@native-dom/runtime",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "DOM runtime facade backed by native-dom's Rust core.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"README.md",
|
|
18
|
+
"dist/**/*.js",
|
|
19
|
+
"dist/**/*.js.map",
|
|
20
|
+
"dist/**/*.d.ts",
|
|
21
|
+
"dist/**/*.d.ts.map",
|
|
22
|
+
"!dist/**/*.test.js",
|
|
23
|
+
"!dist/**/*.test.js.map",
|
|
24
|
+
"!dist/**/*.test.d.ts",
|
|
25
|
+
"!dist/**/*.test.d.ts.map"
|
|
26
|
+
],
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "git+https://github.com/Dunqing/native-dom.git",
|
|
31
|
+
"directory": "packages/runtime"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@native-dom/native-core": "^0.0.2"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"typescript": "6.0.3",
|
|
44
|
+
"vitest": "4.1.5"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsc -b tsconfig.json --pretty false",
|
|
48
|
+
"test": "vitest run",
|
|
49
|
+
"typecheck": "tsc -b tsconfig.json --pretty false"
|
|
50
|
+
}
|
|
51
|
+
}
|