microtags 0.0.1 → 0.0.3
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/README.md +206 -43
- package/dist/chunk-7QVYU63E.js +7 -0
- package/dist/chunk-7QVYU63E.js.map +7 -0
- package/dist/chunk-CCYWRJW6.js +98 -0
- package/dist/chunk-CCYWRJW6.js.map +7 -0
- package/dist/chunk-E7ZGOHL3.js +51 -0
- package/dist/chunk-E7ZGOHL3.js.map +7 -0
- package/dist/context.cjs +10 -4
- package/dist/context.cjs.map +3 -3
- package/dist/context.js +7 -63
- package/dist/context.js.map +3 -3
- package/dist/index.cjs +416 -5
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +345 -2
- package/dist/index.js.map +3 -3
- package/dist/meta.json +276 -26
- package/dist/render.cjs +6 -4
- package/dist/render.cjs.map +1 -1
- package/dist/render.js +9 -6
- package/dist/render.js.map +1 -1
- package/dist/util.cjs +68 -0
- package/dist/util.cjs.map +7 -0
- package/dist/util.js +16 -0
- package/dist/util.js.map +7 -0
- package/dist/util.min.js +2 -0
- package/dist/util.min.js.map +7 -0
- package/package.json +26 -14
package/dist/meta.json
CHANGED
|
@@ -1,18 +1,146 @@
|
|
|
1
1
|
{
|
|
2
2
|
"inputs": {
|
|
3
|
-
"src/
|
|
4
|
-
"bytes":
|
|
5
|
-
"imports": [
|
|
3
|
+
"src/reactivity.ts": {
|
|
4
|
+
"bytes": 790,
|
|
5
|
+
"imports": [
|
|
6
|
+
{
|
|
7
|
+
"path": "alien-signals",
|
|
8
|
+
"kind": "import-statement",
|
|
9
|
+
"external": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"path": "<runtime>",
|
|
13
|
+
"kind": "import-statement",
|
|
14
|
+
"external": true
|
|
15
|
+
}
|
|
16
|
+
],
|
|
6
17
|
"format": "esm"
|
|
7
18
|
},
|
|
8
|
-
"src/
|
|
9
|
-
"bytes":
|
|
10
|
-
"imports": [
|
|
19
|
+
"src/util.ts": {
|
|
20
|
+
"bytes": 1451,
|
|
21
|
+
"imports": [
|
|
22
|
+
{
|
|
23
|
+
"path": "<runtime>",
|
|
24
|
+
"kind": "import-statement",
|
|
25
|
+
"external": true
|
|
26
|
+
}
|
|
27
|
+
],
|
|
11
28
|
"format": "esm"
|
|
12
29
|
},
|
|
13
30
|
"src/context.ts": {
|
|
14
31
|
"bytes": 2503,
|
|
15
|
-
"imports": [
|
|
32
|
+
"imports": [
|
|
33
|
+
{
|
|
34
|
+
"path": "src/reactivity.ts",
|
|
35
|
+
"kind": "import-statement",
|
|
36
|
+
"original": "./reactivity.js"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"path": "<runtime>",
|
|
40
|
+
"kind": "import-statement",
|
|
41
|
+
"external": true
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"format": "esm"
|
|
45
|
+
},
|
|
46
|
+
"src/setup-context.ts": {
|
|
47
|
+
"bytes": 2877,
|
|
48
|
+
"imports": [
|
|
49
|
+
{
|
|
50
|
+
"path": "src/reactivity.ts",
|
|
51
|
+
"kind": "import-statement",
|
|
52
|
+
"original": "./reactivity.js"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"path": "src/context.ts",
|
|
56
|
+
"kind": "import-statement",
|
|
57
|
+
"original": "./context.js"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"path": "<runtime>",
|
|
61
|
+
"kind": "import-statement",
|
|
62
|
+
"external": true
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"format": "esm"
|
|
66
|
+
},
|
|
67
|
+
"src/factory.ts": {
|
|
68
|
+
"bytes": 7090,
|
|
69
|
+
"imports": [
|
|
70
|
+
{
|
|
71
|
+
"path": "src/reactivity.ts",
|
|
72
|
+
"kind": "import-statement",
|
|
73
|
+
"original": "./reactivity.js"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"path": "src/util.ts",
|
|
77
|
+
"kind": "import-statement",
|
|
78
|
+
"original": "./util.js"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"path": "src/setup-context.ts",
|
|
82
|
+
"kind": "import-statement",
|
|
83
|
+
"original": "./setup-context.js"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"path": "src/context.ts",
|
|
87
|
+
"kind": "import-statement",
|
|
88
|
+
"original": "./context.js"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"path": "<runtime>",
|
|
92
|
+
"kind": "import-statement",
|
|
93
|
+
"external": true
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"format": "esm"
|
|
97
|
+
},
|
|
98
|
+
"src/builders.ts": {
|
|
99
|
+
"bytes": 8523,
|
|
100
|
+
"imports": [
|
|
101
|
+
{
|
|
102
|
+
"path": "src/util.ts",
|
|
103
|
+
"kind": "import-statement",
|
|
104
|
+
"original": "./util.js"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"path": "src/factory.ts",
|
|
108
|
+
"kind": "import-statement",
|
|
109
|
+
"original": "./factory.js"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"path": "<runtime>",
|
|
113
|
+
"kind": "import-statement",
|
|
114
|
+
"external": true
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"format": "esm"
|
|
118
|
+
},
|
|
119
|
+
"src/index.ts": {
|
|
120
|
+
"bytes": 89,
|
|
121
|
+
"imports": [
|
|
122
|
+
{
|
|
123
|
+
"path": "src/reactivity.ts",
|
|
124
|
+
"kind": "import-statement",
|
|
125
|
+
"original": "./reactivity.js"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"path": "src/builders.ts",
|
|
129
|
+
"kind": "import-statement",
|
|
130
|
+
"original": "./builders.js"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"format": "esm"
|
|
134
|
+
},
|
|
135
|
+
"src/render.ts": {
|
|
136
|
+
"bytes": 2601,
|
|
137
|
+
"imports": [
|
|
138
|
+
{
|
|
139
|
+
"path": "<runtime>",
|
|
140
|
+
"kind": "import-statement",
|
|
141
|
+
"external": true
|
|
142
|
+
}
|
|
143
|
+
],
|
|
16
144
|
"format": "esm"
|
|
17
145
|
}
|
|
18
146
|
},
|
|
@@ -21,19 +149,21 @@
|
|
|
21
149
|
"imports": [],
|
|
22
150
|
"exports": [],
|
|
23
151
|
"inputs": {},
|
|
24
|
-
"bytes":
|
|
152
|
+
"bytes": 25428
|
|
25
153
|
},
|
|
26
154
|
"dist/index.js": {
|
|
27
155
|
"imports": [
|
|
28
156
|
{
|
|
29
|
-
"path": "
|
|
30
|
-
"kind": "import-statement"
|
|
31
|
-
"external": true
|
|
157
|
+
"path": "dist/chunk-CCYWRJW6.js",
|
|
158
|
+
"kind": "import-statement"
|
|
32
159
|
},
|
|
33
160
|
{
|
|
34
|
-
"path": "
|
|
35
|
-
"kind": "import-statement"
|
|
36
|
-
|
|
161
|
+
"path": "dist/chunk-E7ZGOHL3.js",
|
|
162
|
+
"kind": "import-statement"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"path": "dist/chunk-7QVYU63E.js",
|
|
166
|
+
"kind": "import-statement"
|
|
37
167
|
}
|
|
38
168
|
],
|
|
39
169
|
"exports": [
|
|
@@ -44,19 +174,33 @@
|
|
|
44
174
|
"entryPoint": "src/index.ts",
|
|
45
175
|
"inputs": {
|
|
46
176
|
"src/index.ts": {
|
|
47
|
-
"bytesInOutput":
|
|
177
|
+
"bytesInOutput": 0
|
|
178
|
+
},
|
|
179
|
+
"src/setup-context.ts": {
|
|
180
|
+
"bytesInOutput": 1747
|
|
181
|
+
},
|
|
182
|
+
"src/factory.ts": {
|
|
183
|
+
"bytesInOutput": 3594
|
|
184
|
+
},
|
|
185
|
+
"src/builders.ts": {
|
|
186
|
+
"bytesInOutput": 3646
|
|
48
187
|
}
|
|
49
188
|
},
|
|
50
|
-
"bytes":
|
|
189
|
+
"bytes": 9416
|
|
51
190
|
},
|
|
52
191
|
"dist/render.js.map": {
|
|
53
192
|
"imports": [],
|
|
54
193
|
"exports": [],
|
|
55
194
|
"inputs": {},
|
|
56
|
-
"bytes":
|
|
195
|
+
"bytes": 4204
|
|
57
196
|
},
|
|
58
197
|
"dist/render.js": {
|
|
59
|
-
"imports": [
|
|
198
|
+
"imports": [
|
|
199
|
+
{
|
|
200
|
+
"path": "dist/chunk-7QVYU63E.js",
|
|
201
|
+
"kind": "import-statement"
|
|
202
|
+
}
|
|
203
|
+
],
|
|
60
204
|
"exports": [
|
|
61
205
|
"render",
|
|
62
206
|
"renderList"
|
|
@@ -64,23 +208,26 @@
|
|
|
64
208
|
"entryPoint": "src/render.ts",
|
|
65
209
|
"inputs": {
|
|
66
210
|
"src/render.ts": {
|
|
67
|
-
"bytesInOutput":
|
|
211
|
+
"bytesInOutput": 1827
|
|
68
212
|
}
|
|
69
213
|
},
|
|
70
|
-
"bytes":
|
|
214
|
+
"bytes": 1963
|
|
71
215
|
},
|
|
72
216
|
"dist/context.js.map": {
|
|
73
217
|
"imports": [],
|
|
74
218
|
"exports": [],
|
|
75
219
|
"inputs": {},
|
|
76
|
-
"bytes":
|
|
220
|
+
"bytes": 93
|
|
77
221
|
},
|
|
78
222
|
"dist/context.js": {
|
|
79
223
|
"imports": [
|
|
80
224
|
{
|
|
81
|
-
"path": "
|
|
82
|
-
"kind": "import-statement"
|
|
83
|
-
|
|
225
|
+
"path": "dist/chunk-CCYWRJW6.js",
|
|
226
|
+
"kind": "import-statement"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"path": "dist/chunk-7QVYU63E.js",
|
|
230
|
+
"kind": "import-statement"
|
|
84
231
|
}
|
|
85
232
|
],
|
|
86
233
|
"exports": [
|
|
@@ -90,12 +237,115 @@
|
|
|
90
237
|
"resolveContextSignal"
|
|
91
238
|
],
|
|
92
239
|
"entryPoint": "src/context.ts",
|
|
240
|
+
"inputs": {},
|
|
241
|
+
"bytes": 263
|
|
242
|
+
},
|
|
243
|
+
"dist/chunk-CCYWRJW6.js.map": {
|
|
244
|
+
"imports": [],
|
|
245
|
+
"exports": [],
|
|
246
|
+
"inputs": {},
|
|
247
|
+
"bytes": 4998
|
|
248
|
+
},
|
|
249
|
+
"dist/chunk-CCYWRJW6.js": {
|
|
250
|
+
"imports": [
|
|
251
|
+
{
|
|
252
|
+
"path": "dist/chunk-7QVYU63E.js",
|
|
253
|
+
"kind": "import-statement"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"path": "alien-signals",
|
|
257
|
+
"kind": "import-statement",
|
|
258
|
+
"external": true
|
|
259
|
+
}
|
|
260
|
+
],
|
|
261
|
+
"exports": [
|
|
262
|
+
"createContext",
|
|
263
|
+
"effect",
|
|
264
|
+
"onContextAvailable",
|
|
265
|
+
"peek",
|
|
266
|
+
"provide",
|
|
267
|
+
"resolveContextSignal",
|
|
268
|
+
"signal",
|
|
269
|
+
"untracked"
|
|
270
|
+
],
|
|
93
271
|
"inputs": {
|
|
272
|
+
"src/reactivity.ts": {
|
|
273
|
+
"bytesInOutput": 324
|
|
274
|
+
},
|
|
94
275
|
"src/context.ts": {
|
|
95
|
-
"bytesInOutput":
|
|
276
|
+
"bytesInOutput": 1603
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"bytes": 2186
|
|
280
|
+
},
|
|
281
|
+
"dist/util.js.map": {
|
|
282
|
+
"imports": [],
|
|
283
|
+
"exports": [],
|
|
284
|
+
"inputs": {},
|
|
285
|
+
"bytes": 93
|
|
286
|
+
},
|
|
287
|
+
"dist/util.js": {
|
|
288
|
+
"imports": [
|
|
289
|
+
{
|
|
290
|
+
"path": "dist/chunk-E7ZGOHL3.js",
|
|
291
|
+
"kind": "import-statement"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"path": "dist/chunk-7QVYU63E.js",
|
|
295
|
+
"kind": "import-statement"
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"exports": [
|
|
299
|
+
"coerceBoolean",
|
|
300
|
+
"coerceJson",
|
|
301
|
+
"coerceNumber",
|
|
302
|
+
"coerceString",
|
|
303
|
+
"runCleanups"
|
|
304
|
+
],
|
|
305
|
+
"entryPoint": "src/util.ts",
|
|
306
|
+
"inputs": {},
|
|
307
|
+
"bytes": 268
|
|
308
|
+
},
|
|
309
|
+
"dist/chunk-E7ZGOHL3.js.map": {
|
|
310
|
+
"imports": [],
|
|
311
|
+
"exports": [],
|
|
312
|
+
"inputs": {},
|
|
313
|
+
"bytes": 2135
|
|
314
|
+
},
|
|
315
|
+
"dist/chunk-E7ZGOHL3.js": {
|
|
316
|
+
"imports": [
|
|
317
|
+
{
|
|
318
|
+
"path": "dist/chunk-7QVYU63E.js",
|
|
319
|
+
"kind": "import-statement"
|
|
320
|
+
}
|
|
321
|
+
],
|
|
322
|
+
"exports": [
|
|
323
|
+
"coerceBoolean",
|
|
324
|
+
"coerceJson",
|
|
325
|
+
"coerceNumber",
|
|
326
|
+
"coerceString",
|
|
327
|
+
"runCleanups"
|
|
328
|
+
],
|
|
329
|
+
"inputs": {
|
|
330
|
+
"src/util.ts": {
|
|
331
|
+
"bytesInOutput": 759
|
|
96
332
|
}
|
|
97
333
|
},
|
|
98
|
-
"bytes":
|
|
334
|
+
"bytes": 956
|
|
335
|
+
},
|
|
336
|
+
"dist/chunk-7QVYU63E.js.map": {
|
|
337
|
+
"imports": [],
|
|
338
|
+
"exports": [],
|
|
339
|
+
"inputs": {},
|
|
340
|
+
"bytes": 93
|
|
341
|
+
},
|
|
342
|
+
"dist/chunk-7QVYU63E.js": {
|
|
343
|
+
"imports": [],
|
|
344
|
+
"exports": [
|
|
345
|
+
"__name"
|
|
346
|
+
],
|
|
347
|
+
"inputs": {},
|
|
348
|
+
"bytes": 194
|
|
99
349
|
}
|
|
100
350
|
}
|
|
101
351
|
}
|
package/dist/render.cjs
CHANGED
|
@@ -17,14 +17,16 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/render.ts
|
|
20
22
|
var render_exports = {};
|
|
21
23
|
__export(render_exports, {
|
|
22
24
|
render: () => render,
|
|
23
25
|
renderList: () => renderList
|
|
24
26
|
});
|
|
25
27
|
module.exports = __toCommonJS(render_exports);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
var elementData = /* @__PURE__ */ new WeakMap();
|
|
29
|
+
var elementKeys = /* @__PURE__ */ new WeakMap();
|
|
28
30
|
function renderList(container, template, options) {
|
|
29
31
|
const { data, key: getKey, update } = options;
|
|
30
32
|
const existingByKey = /* @__PURE__ */ new Map();
|
|
@@ -63,8 +65,8 @@ function renderList(container, template, options) {
|
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
__name(renderList, "renderList");
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
var _tplCounter = 0;
|
|
69
|
+
var tplIds = /* @__PURE__ */ new WeakMap();
|
|
68
70
|
function render(container, template, options) {
|
|
69
71
|
renderList(container, template, {
|
|
70
72
|
data: [
|
package/dist/render.cjs.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/render.ts"],
|
|
4
4
|
"sourcesContent": ["export type RenderListOptions<T, E extends Element = Element> = {\n data:readonly T[];\n key:(item:T, index:number) => string | number;\n update:(el:E, item:T) => void;\n}\n\nexport type RenderOptions<T, E extends Element = Element> = {\n data?:T;\n update?:(el:E, item:T) => void;\n}\n\nconst elementData = new WeakMap<Element, unknown>()\nconst elementKeys = new WeakMap<Element, string | number>()\n\nexport function renderList<T, E extends Element = Element> (\n container:Element,\n template:HTMLTemplateElement,\n options:RenderListOptions<T, E>\n):void {\n const { data, key: getKey, update } = options\n const existingByKey = new Map<string | number, E>()\n\n for (const child of Array.from(container.children)) {\n const key = elementKeys.get(child)\n if (key !== undefined) existingByKey.set(key, child as E)\n }\n\n const dataKeys = new Set(data.map(getKey))\n\n for (const child of Array.from(container.children)) {\n const key = elementKeys.get(child)\n if (key === undefined || !dataKeys.has(key)) {\n child.remove()\n elementKeys.delete(child)\n elementData.delete(child)\n }\n }\n\n let prev:E | null = null\n for (let i = 0; i < data.length; i++) {\n const item = data[i]\n const key = getKey(item, i)\n let el = existingByKey.get(key)\n\n if (!el) {\n el = (template.content.cloneNode(true) as Element)\n .firstElementChild as E\n elementKeys.set(el, key)\n }\n\n if (elementData.get(el) !== item) {\n update(el, item)\n elementData.set(el, item)\n }\n\n const expected = prev ?\n prev.nextElementSibling :\n container.firstElementChild\n\n if (el !== expected) {\n if (prev) prev.after(el)\n else container.prepend(el)\n }\n\n prev = el\n }\n}\n\nlet _tplCounter = 0\nconst tplIds = new WeakMap<HTMLTemplateElement, number>()\n\nexport function render<T, E extends Element = Element> (\n container:Element,\n template:HTMLTemplateElement,\n options?:RenderOptions<T, E>\n):void {\n renderList<T, E>(container, template, {\n data: [\n options !== undefined && 'data' in options ?\n options.data as T :\n {} as T\n ],\n key: () => {\n let id = tplIds.get(template)\n if (id === undefined) {\n id = _tplCounter++\n tplIds.set(template, id)\n }\n return id\n },\n update: options?.update ?? (() => {}),\n })\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,IAAM,cAAc,oBAAI,QAA0B;AAClD,IAAM,cAAc,oBAAI,QAAkC;AAEnD,SAAS,WACZ,WACA,UACA,SACG;AACH,QAAM,EAAE,MAAM,KAAK,QAAQ,OAAO,IAAI;AACtC,QAAM,gBAAgB,oBAAI,IAAwB;AAElD,aAAW,SAAS,MAAM,KAAK,UAAU,QAAQ,GAAG;AAChD,UAAM,MAAM,YAAY,IAAI,KAAK;AACjC,QAAI,QAAQ,OAAW,eAAc,IAAI,KAAK,KAAU;AAAA,EAC5D;AAEA,QAAM,WAAW,IAAI,IAAI,KAAK,IAAI,MAAM,CAAC;AAEzC,aAAW,SAAS,MAAM,KAAK,UAAU,QAAQ,GAAG;AAChD,UAAM,MAAM,YAAY,IAAI,KAAK;AACjC,QAAI,QAAQ,UAAa,CAAC,SAAS,IAAI,GAAG,GAAG;AACzC,YAAM,OAAO;AACb,kBAAY,OAAO,KAAK;AACxB,kBAAY,OAAO,KAAK;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,OAAgB;AACpB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAM,OAAO,KAAK,CAAC;AACnB,UAAM,MAAM,OAAO,MAAM,CAAC;AAC1B,QAAI,KAAK,cAAc,IAAI,GAAG;AAE9B,QAAI,CAAC,IAAI;AACL,WAAM,SAAS,QAAQ,UAAU,IAAI,EAChC;AACL,kBAAY,IAAI,IAAI,GAAG;AAAA,IAC3B;AAEA,QAAI,YAAY,IAAI,EAAE,MAAM,MAAM;AAC9B,aAAO,IAAI,IAAI;AACf,kBAAY,IAAI,IAAI,IAAI;AAAA,IAC5B;AAEA,UAAM,WAAW,OACb,KAAK,qBACL,UAAU;AAEd,QAAI,OAAO,UAAU;AACjB,UAAI,KAAM,MAAK,MAAM,EAAE;AAAA,UAClB,WAAU,QAAQ,EAAE;AAAA,IAC7B;AAEA,WAAO;AAAA,EACX;AACJ;AApDgB;AAsDhB,IAAI,cAAc;AAClB,IAAM,SAAS,oBAAI,QAAqC;AAEjD,SAAS,OACZ,WACA,UACA,SACG;AACH,aAAiB,WAAW,UAAU;AAAA,IAClC,MAAM;AAAA,MACF,YAAY,UAAa,UAAU,UAC/B,QAAQ,OACR,CAAC;AAAA,IACT;AAAA,IACA,KAAK,6BAAM;AACP,UAAI,KAAK,OAAO,IAAI,QAAQ;AAC5B,UAAI,OAAO,QAAW;AAClB,aAAK;AACL,eAAO,IAAI,UAAU,EAAE;AAAA,MAC3B;AACA,aAAO;AAAA,IACX,GAPK;AAAA,IAQL,QAAQ,SAAS,WAAW,MAAM;AAAA,IAAC;AAAA,EACvC,CAAC;AACL;AArBgB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/render.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-7QVYU63E.js";
|
|
4
|
+
|
|
5
|
+
// src/render.ts
|
|
6
|
+
var elementData = /* @__PURE__ */ new WeakMap();
|
|
7
|
+
var elementKeys = /* @__PURE__ */ new WeakMap();
|
|
5
8
|
function renderList(container, template, options) {
|
|
6
9
|
const { data, key: getKey, update } = options;
|
|
7
10
|
const existingByKey = /* @__PURE__ */ new Map();
|
|
@@ -40,8 +43,8 @@ function renderList(container, template, options) {
|
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
45
|
__name(renderList, "renderList");
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
var _tplCounter = 0;
|
|
47
|
+
var tplIds = /* @__PURE__ */ new WeakMap();
|
|
45
48
|
function render(container, template, options) {
|
|
46
49
|
renderList(container, template, {
|
|
47
50
|
data: [
|
package/dist/render.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/render.ts"],
|
|
4
4
|
"sourcesContent": ["export type RenderListOptions<T, E extends Element = Element> = {\n data:readonly T[];\n key:(item:T, index:number) => string | number;\n update:(el:E, item:T) => void;\n}\n\nexport type RenderOptions<T, E extends Element = Element> = {\n data?:T;\n update?:(el:E, item:T) => void;\n}\n\nconst elementData = new WeakMap<Element, unknown>()\nconst elementKeys = new WeakMap<Element, string | number>()\n\nexport function renderList<T, E extends Element = Element> (\n container:Element,\n template:HTMLTemplateElement,\n options:RenderListOptions<T, E>\n):void {\n const { data, key: getKey, update } = options\n const existingByKey = new Map<string | number, E>()\n\n for (const child of Array.from(container.children)) {\n const key = elementKeys.get(child)\n if (key !== undefined) existingByKey.set(key, child as E)\n }\n\n const dataKeys = new Set(data.map(getKey))\n\n for (const child of Array.from(container.children)) {\n const key = elementKeys.get(child)\n if (key === undefined || !dataKeys.has(key)) {\n child.remove()\n elementKeys.delete(child)\n elementData.delete(child)\n }\n }\n\n let prev:E | null = null\n for (let i = 0; i < data.length; i++) {\n const item = data[i]\n const key = getKey(item, i)\n let el = existingByKey.get(key)\n\n if (!el) {\n el = (template.content.cloneNode(true) as Element)\n .firstElementChild as E\n elementKeys.set(el, key)\n }\n\n if (elementData.get(el) !== item) {\n update(el, item)\n elementData.set(el, item)\n }\n\n const expected = prev ?\n prev.nextElementSibling :\n container.firstElementChild\n\n if (el !== expected) {\n if (prev) prev.after(el)\n else container.prepend(el)\n }\n\n prev = el\n }\n}\n\nlet _tplCounter = 0\nconst tplIds = new WeakMap<HTMLTemplateElement, number>()\n\nexport function render<T, E extends Element = Element> (\n container:Element,\n template:HTMLTemplateElement,\n options?:RenderOptions<T, E>\n):void {\n renderList<T, E>(container, template, {\n data: [\n options !== undefined && 'data' in options ?\n options.data as T :\n {} as T\n ],\n key: () => {\n let id = tplIds.get(template)\n if (id === undefined) {\n id = _tplCounter++\n tplIds.set(template, id)\n }\n return id\n },\n update: options?.update ?? (() => {}),\n })\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;AAWA,IAAM,cAAc,oBAAI,QAA0B;AAClD,IAAM,cAAc,oBAAI,QAAkC;AAEnD,SAAS,WACZ,WACA,UACA,SACG;AACH,QAAM,EAAE,MAAM,KAAK,QAAQ,OAAO,IAAI;AACtC,QAAM,gBAAgB,oBAAI,IAAwB;AAElD,aAAW,SAAS,MAAM,KAAK,UAAU,QAAQ,GAAG;AAChD,UAAM,MAAM,YAAY,IAAI,KAAK;AACjC,QAAI,QAAQ,OAAW,eAAc,IAAI,KAAK,KAAU;AAAA,EAC5D;AAEA,QAAM,WAAW,IAAI,IAAI,KAAK,IAAI,MAAM,CAAC;AAEzC,aAAW,SAAS,MAAM,KAAK,UAAU,QAAQ,GAAG;AAChD,UAAM,MAAM,YAAY,IAAI,KAAK;AACjC,QAAI,QAAQ,UAAa,CAAC,SAAS,IAAI,GAAG,GAAG;AACzC,YAAM,OAAO;AACb,kBAAY,OAAO,KAAK;AACxB,kBAAY,OAAO,KAAK;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,OAAgB;AACpB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAM,OAAO,KAAK,CAAC;AACnB,UAAM,MAAM,OAAO,MAAM,CAAC;AAC1B,QAAI,KAAK,cAAc,IAAI,GAAG;AAE9B,QAAI,CAAC,IAAI;AACL,WAAM,SAAS,QAAQ,UAAU,IAAI,EAChC;AACL,kBAAY,IAAI,IAAI,GAAG;AAAA,IAC3B;AAEA,QAAI,YAAY,IAAI,EAAE,MAAM,MAAM;AAC9B,aAAO,IAAI,IAAI;AACf,kBAAY,IAAI,IAAI,IAAI;AAAA,IAC5B;AAEA,UAAM,WAAW,OACb,KAAK,qBACL,UAAU;AAEd,QAAI,OAAO,UAAU;AACjB,UAAI,KAAM,MAAK,MAAM,EAAE;AAAA,UAClB,WAAU,QAAQ,EAAE;AAAA,IAC7B;AAEA,WAAO;AAAA,EACX;AACJ;AApDgB;AAsDhB,IAAI,cAAc;AAClB,IAAM,SAAS,oBAAI,QAAqC;AAEjD,SAAS,OACZ,WACA,UACA,SACG;AACH,aAAiB,WAAW,UAAU;AAAA,IAClC,MAAM;AAAA,MACF,YAAY,UAAa,UAAU,UAC/B,QAAQ,OACR,CAAC;AAAA,IACT;AAAA,IACA,KAAK,6BAAM;AACP,UAAI,KAAK,OAAO,IAAI,QAAQ;AAC5B,UAAI,OAAO,QAAW;AAClB,aAAK;AACL,eAAO,IAAI,UAAU,EAAE;AAAA,MAC3B;AACA,aAAO;AAAA,IACX,GAPK;AAAA,IAQL,QAAQ,SAAS,WAAW,MAAM;AAAA,IAAC;AAAA,EACvC,CAAC;AACL;AArBgB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/util.cjs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/util.ts
|
|
22
|
+
var util_exports = {};
|
|
23
|
+
__export(util_exports, {
|
|
24
|
+
coerceBoolean: () => coerceBoolean,
|
|
25
|
+
coerceJson: () => coerceJson,
|
|
26
|
+
coerceNumber: () => coerceNumber,
|
|
27
|
+
coerceString: () => coerceString,
|
|
28
|
+
runCleanups: () => runCleanups
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(util_exports);
|
|
31
|
+
function coerceNumber(raw) {
|
|
32
|
+
return raw === null ? NaN : Number(raw);
|
|
33
|
+
}
|
|
34
|
+
__name(coerceNumber, "coerceNumber");
|
|
35
|
+
function coerceString(raw) {
|
|
36
|
+
return raw ?? "";
|
|
37
|
+
}
|
|
38
|
+
__name(coerceString, "coerceString");
|
|
39
|
+
function coerceBoolean(raw) {
|
|
40
|
+
return raw !== null;
|
|
41
|
+
}
|
|
42
|
+
__name(coerceBoolean, "coerceBoolean");
|
|
43
|
+
function coerceJson(raw) {
|
|
44
|
+
if (raw === null) return void 0;
|
|
45
|
+
try {
|
|
46
|
+
return JSON.parse(raw);
|
|
47
|
+
} catch {
|
|
48
|
+
return void 0;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
__name(coerceJson, "coerceJson");
|
|
52
|
+
function runCleanups(fns) {
|
|
53
|
+
let firstError;
|
|
54
|
+
let caught = false;
|
|
55
|
+
for (const fn of fns) {
|
|
56
|
+
try {
|
|
57
|
+
fn();
|
|
58
|
+
} catch (err) {
|
|
59
|
+
if (!caught) {
|
|
60
|
+
firstError = err;
|
|
61
|
+
caught = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (caught) throw firstError;
|
|
66
|
+
}
|
|
67
|
+
__name(runCleanups, "runCleanups");
|
|
68
|
+
//# sourceMappingURL=util.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/util.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Cleanup } from './types.js'\n\n/**\n * Coerce a raw attribute string to a number.\n * Returns NaN if the value cannot be parsed.\n */\nexport function coerceNumber (raw:string | null):number {\n return raw === null ? NaN : Number(raw)\n}\n\n/**\n * Coerce a raw attribute string to a string.\n * Converts null to empty string.\n */\nexport function coerceString (raw:string | null):string {\n return raw ?? ''\n}\n\n/**\n * Coerce a raw attribute string to a boolean.\n * Absence (null) is false; presence of any value (including '') is true.\n */\nexport function coerceBoolean (raw:string | null):boolean {\n return raw !== null\n}\n\n/**\n * Coerce a raw attribute string to a parsed JSON value.\n * Returns undefined if the value is null or cannot be parsed.\n */\nexport function coerceJson<T = unknown> (raw:string | null):T | undefined {\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n}\n\n/**\n * Run every cleanup in the list, ensuring all run even if some throw.\n * After all have run, re-throws the first error encountered.\n */\nexport function runCleanups (fns:Cleanup[]):void {\n let firstError:unknown\n let caught = false\n for (const fn of fns) {\n try {\n fn()\n } catch (err) {\n if (!caught) {\n firstError = err\n caught = true\n }\n }\n }\n if (caught) throw firstError\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,SAAS,aAAc,KAA0B;AACpD,SAAO,QAAQ,OAAO,MAAM,OAAO,GAAG;AAC1C;AAFgB;AAQT,SAAS,aAAc,KAA0B;AACpD,SAAO,OAAO;AAClB;AAFgB;AAQT,SAAS,cAAe,KAA2B;AACtD,SAAO,QAAQ;AACnB;AAFgB;AAQT,SAAS,WAAyB,KAAiC;AACtE,MAAI,QAAQ,KAAM,QAAO;AACzB,MAAI;AACA,WAAO,KAAK,MAAM,GAAG;AAAA,EACzB,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAPgB;AAaT,SAAS,YAAa,KAAoB;AAC7C,MAAI;AACJ,MAAI,SAAS;AACb,aAAW,MAAM,KAAK;AAClB,QAAI;AACA,SAAG;AAAA,IACP,SAAS,KAAK;AACV,UAAI,CAAC,QAAQ;AACT,qBAAa;AACb,iBAAS;AAAA,MACb;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,OAAQ,OAAM;AACtB;AAdgB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/util.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
coerceBoolean,
|
|
3
|
+
coerceJson,
|
|
4
|
+
coerceNumber,
|
|
5
|
+
coerceString,
|
|
6
|
+
runCleanups
|
|
7
|
+
} from "./chunk-E7ZGOHL3.js";
|
|
8
|
+
import "./chunk-7QVYU63E.js";
|
|
9
|
+
export {
|
|
10
|
+
coerceBoolean,
|
|
11
|
+
coerceJson,
|
|
12
|
+
coerceNumber,
|
|
13
|
+
coerceString,
|
|
14
|
+
runCleanups
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
ADDED
package/dist/util.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var l=Object.defineProperty;var r=(n,e)=>l(n,"name",{value:e,configurable:!0});function c(n){return n===null?NaN:Number(n)}r(c,"coerceNumber");function f(n){return n??""}r(f,"coerceString");function s(n){return n!==null}r(s,"coerceBoolean");function p(n){if(n!==null)try{return JSON.parse(n)}catch{return}}r(p,"coerceJson");function a(n){let e,t=!1;for(let u of n)try{u()}catch(o){t||(e=o,t=!0)}if(t)throw e}r(a,"runCleanups");export{s as coerceBoolean,p as coerceJson,c as coerceNumber,f as coerceString,a as runCleanups};
|
|
2
|
+
//# sourceMappingURL=util.min.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/util.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Cleanup } from './types.js'\n\n/**\n * Coerce a raw attribute string to a number.\n * Returns NaN if the value cannot be parsed.\n */\nexport function coerceNumber (raw:string | null):number {\n return raw === null ? NaN : Number(raw)\n}\n\n/**\n * Coerce a raw attribute string to a string.\n * Converts null to empty string.\n */\nexport function coerceString (raw:string | null):string {\n return raw ?? ''\n}\n\n/**\n * Coerce a raw attribute string to a boolean.\n * Absence (null) is false; presence of any value (including '') is true.\n */\nexport function coerceBoolean (raw:string | null):boolean {\n return raw !== null\n}\n\n/**\n * Coerce a raw attribute string to a parsed JSON value.\n * Returns undefined if the value is null or cannot be parsed.\n */\nexport function coerceJson<T = unknown> (raw:string | null):T | undefined {\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n}\n\n/**\n * Run every cleanup in the list, ensuring all run even if some throw.\n * After all have run, re-throws the first error encountered.\n */\nexport function runCleanups (fns:Cleanup[]):void {\n let firstError:unknown\n let caught = false\n for (const fn of fns) {\n try {\n fn()\n } catch (err) {\n if (!caught) {\n firstError = err\n caught = true\n }\n }\n }\n if (caught) throw firstError\n}\n"],
|
|
5
|
+
"mappings": "+EAMO,SAASA,EAAcC,EAA0B,CACpD,OAAOA,IAAQ,KAAO,IAAM,OAAOA,CAAG,CAC1C,CAFgBC,EAAAF,EAAA,gBAQT,SAASG,EAAcF,EAA0B,CACpD,OAAOA,GAAO,EAClB,CAFgBC,EAAAC,EAAA,gBAQT,SAASC,EAAeH,EAA2B,CACtD,OAAOA,IAAQ,IACnB,CAFgBC,EAAAE,EAAA,iBAQT,SAASC,EAAyBJ,EAAiC,CACtE,GAAIA,IAAQ,KACZ,GAAI,CACA,OAAO,KAAK,MAAMA,CAAG,CACzB,MAAQ,CACJ,MACJ,CACJ,CAPgBC,EAAAG,EAAA,cAaT,SAASC,EAAaC,EAAoB,CAC7C,IAAIC,EACAC,EAAS,GACb,QAAWC,KAAMH,EACb,GAAI,CACAG,EAAG,CACP,OAASC,EAAK,CACLF,IACDD,EAAaG,EACbF,EAAS,GAEjB,CAEJ,GAAIA,EAAQ,MAAMD,CACtB,CAdgBN,EAAAI,EAAA",
|
|
6
|
+
"names": ["coerceNumber", "raw", "__name", "coerceString", "coerceBoolean", "coerceJson", "runCleanups", "fns", "firstError", "caught", "fn", "err"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "microtags",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
5
|
-
"sideEffects":
|
|
4
|
+
"version": "0.0.3",
|
|
5
|
+
"sideEffects": [
|
|
6
|
+
"./example/**"
|
|
7
|
+
],
|
|
6
8
|
"main": "dist/index.js",
|
|
7
9
|
"files": [
|
|
8
10
|
"./dist/*"
|
|
@@ -12,15 +14,18 @@
|
|
|
12
14
|
"typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
|
|
13
15
|
"test": "npm run typecheck && esbuild --bundle ./test/index.ts | tapout",
|
|
14
16
|
"test:ssr": "npx esbuild ./test/ssr.ts --bundle --format=cjs --platform=node | node",
|
|
15
|
-
"
|
|
16
|
-
"build-
|
|
17
|
-
"build-esm
|
|
18
|
-
"build-
|
|
17
|
+
"test:importmap": "esbuild ./test/importmap/run.ts --bundle --platform=node --format=cjs --packages=external | node",
|
|
18
|
+
"build-cjs": "esbuild src/index.ts src/render.ts src/context.ts src/util.ts --bundle --packages=external --format=cjs --keep-names --tsconfig=tsconfig.build.json --outdir=./dist --out-extension:.js=.cjs --sourcemap",
|
|
19
|
+
"build-esm": "esbuild src/index.ts src/render.ts src/context.ts src/util.ts --bundle --packages=external --splitting --format=esm --metafile=dist/meta.json --keep-names --tsconfig=tsconfig.build.json --outdir=./dist --sourcemap && tsc --emitDeclarationOnly --project tsconfig.build.json --outDir dist",
|
|
20
|
+
"build-esm:min": "esbuild src/index.ts src/render.ts src/context.ts src/util.ts --format=esm --keep-names --bundle --tsconfig=tsconfig.build.json --minify --out-extension:.js=.min.js --outdir=./dist --sourcemap",
|
|
21
|
+
"build-example": "npm run build-html && mkdir -p ./public && rm -rf ./public/* && NODE_ENV=development vite --mode staging --base=\"/microtags\" build",
|
|
19
22
|
"build-docs": "typedoc --tsconfig tsconfig.build.json ./src/index.ts",
|
|
20
23
|
"build": "mkdir -p ./dist && rm -rf ./dist/* && npm run build-cjs && npm run build-esm && npm run build-esm:min",
|
|
21
|
-
"
|
|
24
|
+
"build-html": "npm run --silent ssr > example/index.html",
|
|
25
|
+
"size": "size-limit",
|
|
26
|
+
"start": "npm run build-html && vite",
|
|
22
27
|
"ssr": "esbuild ./example/ssr.ts --bundle --platform=node --format=cjs | node ",
|
|
23
|
-
"toc": "markdown-toc --maxdepth
|
|
28
|
+
"toc": "markdown-toc --maxdepth 4 -i README.md",
|
|
24
29
|
"preversion": "npm run lint",
|
|
25
30
|
"version": "npm run toc && auto-changelog -p --template keepachangelog --breaking-pattern 'BREAKING CHANGE:' && git add CHANGELOG.md README.md",
|
|
26
31
|
"postversion": "git push --follow-tags && npm publish",
|
|
@@ -32,6 +37,10 @@
|
|
|
32
37
|
"import": "./dist/index.js",
|
|
33
38
|
"require": "./dist/index.cjs"
|
|
34
39
|
},
|
|
40
|
+
"./min": {
|
|
41
|
+
"types": "./dist/index.d.ts",
|
|
42
|
+
"import": "./dist/index.min.js"
|
|
43
|
+
},
|
|
35
44
|
"./render": {
|
|
36
45
|
"types": "./dist/render.d.ts",
|
|
37
46
|
"import": "./dist/render.js",
|
|
@@ -48,7 +57,12 @@
|
|
|
48
57
|
"require": "./dist/util.cjs"
|
|
49
58
|
}
|
|
50
59
|
},
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"@standard-schema/spec": "^1.1.0",
|
|
62
|
+
"alien-signals": "^3.2.1"
|
|
63
|
+
},
|
|
51
64
|
"devDependencies": {
|
|
65
|
+
"@size-limit/preset-small-lib": "^12.1.0",
|
|
52
66
|
"@substrate-system/debug": "^0.9.64",
|
|
53
67
|
"@substrate-system/dom": "^0.1.13",
|
|
54
68
|
"@substrate-system/tapout": "^0.0.38",
|
|
@@ -62,15 +76,13 @@
|
|
|
62
76
|
"markdown-toc": "^1.2.0",
|
|
63
77
|
"nanotags": "^0.15.2",
|
|
64
78
|
"newneostandard": "^0.14.1",
|
|
79
|
+
"size-limit": "^12.1.0",
|
|
65
80
|
"tap-spec": "^5.0.0",
|
|
66
81
|
"typedoc": "^0.28.1",
|
|
67
82
|
"typescript": "^6.0.3",
|
|
68
|
-
"vite": "^8.0.5"
|
|
83
|
+
"vite": "^8.0.5",
|
|
84
|
+
"zod": "^4.4.3"
|
|
69
85
|
},
|
|
70
86
|
"author": "nichoth <nichoth@nichoth.com> (https://nichoth.com)",
|
|
71
|
-
"license": "SEE LICENSE IN LICENSE"
|
|
72
|
-
"dependencies": {
|
|
73
|
-
"@standard-schema/spec": "^1.1.0",
|
|
74
|
-
"alien-signals": "^3.2.1"
|
|
75
|
-
}
|
|
87
|
+
"license": "SEE LICENSE IN LICENSE"
|
|
76
88
|
}
|