valyrian.js 7.2.12 → 8.0.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/README.md +6 -6
- package/dist/flux-store/index.d.ts +32 -0
- package/dist/flux-store/index.d.ts.map +1 -0
- package/dist/flux-store/index.js +267 -0
- package/dist/flux-store/index.js.map +7 -0
- package/dist/flux-store/index.min.js +1 -0
- package/dist/flux-store/index.min.js.map +1 -0
- package/dist/flux-store/index.mjs +246 -0
- package/dist/flux-store/index.mjs.map +7 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +35 -51
- package/dist/hooks/index.js.map +3 -3
- package/dist/hooks/index.min.js +1 -0
- package/dist/hooks/index.min.js.map +1 -0
- package/dist/hooks/index.mjs +36 -52
- package/dist/hooks/index.mjs.map +3 -3
- package/dist/index.d.ts +18 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +107 -88
- package/dist/index.js.map +3 -3
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +107 -88
- package/dist/index.mjs.map +3 -3
- package/dist/native-store/index.d.ts +14 -0
- package/dist/native-store/index.d.ts.map +1 -0
- package/dist/native-store/index.js +103 -0
- package/dist/native-store/index.js.map +7 -0
- package/dist/native-store/index.min.js +1 -0
- package/dist/native-store/index.min.js.map +1 -0
- package/dist/native-store/index.mjs +82 -0
- package/dist/native-store/index.mjs.map +7 -0
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +125 -10
- package/dist/node/index.js.map +4 -4
- package/dist/node/index.mjs +125 -10
- package/dist/node/index.mjs.map +4 -4
- package/dist/node/node.sw.js +152 -0
- package/dist/node/utils/icons.d.ts +4 -5
- package/dist/node/utils/icons.d.ts.map +1 -1
- package/dist/node/utils/inline.d.ts +1 -1
- package/dist/node/utils/inline.d.ts.map +1 -1
- package/dist/node/utils/node.sw.js +152 -0
- package/dist/node/utils/session-storage.d.ts +22 -0
- package/dist/node/utils/session-storage.d.ts.map +1 -0
- package/dist/node/utils/sw.d.ts.map +1 -1
- package/dist/node/utils/tree-adapter.d.ts +5 -1
- package/dist/node/utils/tree-adapter.d.ts.map +1 -1
- package/dist/pulse-store/index.d.ts +16 -0
- package/dist/pulse-store/index.d.ts.map +1 -0
- package/dist/pulse-store/index.js +143 -0
- package/dist/pulse-store/index.js.map +7 -0
- package/dist/pulse-store/index.min.js +1 -0
- package/dist/pulse-store/index.min.js.map +1 -0
- package/dist/pulse-store/index.mjs +122 -0
- package/dist/pulse-store/index.mjs.map +7 -0
- package/dist/request/index.d.ts +11 -11
- package/dist/request/index.d.ts.map +1 -1
- package/dist/request/index.js +63 -84
- package/dist/request/index.js.map +2 -2
- package/dist/request/index.min.js +1 -0
- package/dist/request/index.min.js.map +1 -0
- package/dist/request/index.mjs +63 -84
- package/dist/request/index.mjs.map +2 -2
- package/dist/router/index.d.ts +36 -33
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +247 -96
- package/dist/router/index.js.map +3 -3
- package/dist/router/index.min.js +1 -0
- package/dist/router/index.min.js.map +1 -0
- package/dist/router/index.mjs +247 -96
- package/dist/router/index.mjs.map +3 -3
- package/dist/signals/index.d.ts +6 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/index.js +92 -0
- package/dist/signals/index.js.map +7 -0
- package/dist/signals/index.min.js +1 -0
- package/dist/signals/index.min.js.map +1 -0
- package/dist/signals/index.mjs +71 -0
- package/dist/signals/index.mjs.map +7 -0
- package/dist/suspense/index.d.ts +6 -0
- package/dist/suspense/index.d.ts.map +1 -0
- package/dist/suspense/index.js +67 -0
- package/dist/suspense/index.js.map +7 -0
- package/dist/suspense/index.min.js +1 -0
- package/dist/suspense/index.min.js.map +1 -0
- package/dist/suspense/index.mjs +46 -0
- package/dist/suspense/index.mjs.map +7 -0
- package/dist/sw/index.min.js +1 -0
- package/dist/sw/index.min.js.map +1 -0
- package/dist/translate/index.d.ts +19 -0
- package/dist/translate/index.d.ts.map +1 -0
- package/dist/translate/index.js +150 -0
- package/dist/translate/index.js.map +7 -0
- package/dist/translate/index.min.js +1 -0
- package/dist/translate/index.min.js.map +1 -0
- package/dist/translate/index.mjs +129 -0
- package/dist/translate/index.mjs.map +7 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/deep-freeze.d.ts +3 -0
- package/dist/utils/deep-freeze.d.ts.map +1 -0
- package/dist/utils/getter-setter.d.ts +3 -0
- package/dist/utils/getter-setter.d.ts.map +1 -0
- package/dist/utils/has-changed.d.ts +2 -0
- package/dist/utils/has-changed.d.ts.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +138 -0
- package/dist/utils/index.js.map +7 -0
- package/dist/utils/index.min.js +1 -0
- package/dist/utils/index.min.js.map +1 -0
- package/dist/utils/index.mjs +115 -0
- package/dist/utils/index.mjs.map +7 -0
- package/lib/flux-store/index.ts +312 -0
- package/lib/hooks/index.ts +39 -57
- package/lib/index.ts +135 -118
- package/lib/native-store/index.ts +106 -0
- package/lib/node/index.ts +3 -1
- package/lib/node/utils/icons.ts +4 -4
- package/lib/node/utils/inline.ts +2 -0
- package/lib/node/utils/node.sw.js +152 -0
- package/lib/node/utils/session-storage.ts +117 -0
- package/lib/node/utils/sw.ts +34 -10
- package/lib/node/utils/tree-adapter.ts +19 -1
- package/lib/pulse-store/index.ts +188 -0
- package/lib/request/index.ts +92 -122
- package/lib/router/index.ts +353 -164
- package/lib/signals/index.ts +98 -0
- package/lib/suspense/index.ts +57 -0
- package/lib/translate/index.ts +156 -0
- package/lib/utils/deep-freeze.ts +54 -0
- package/lib/utils/getter-setter.ts +40 -0
- package/lib/utils/has-changed.ts +43 -0
- package/lib/utils/index.ts +3 -0
- package/package.json +40 -57
- package/tsconfig.json +5 -4
- package/dist/dataset/index.d.ts +0 -24
- package/dist/dataset/index.d.ts.map +0 -1
- package/dist/dataset/index.js +0 -178
- package/dist/dataset/index.js.map +0 -7
- package/dist/dataset/index.mjs +0 -157
- package/dist/dataset/index.mjs.map +0 -7
- package/dist/node/node.sw.tpl +0 -133
- package/dist/node/utils/node.sw.tpl +0 -133
- package/dist/proxy-signal/index.d.ts +0 -23
- package/dist/proxy-signal/index.d.ts.map +0 -1
- package/dist/proxy-signal/index.js +0 -138
- package/dist/proxy-signal/index.js.map +0 -7
- package/dist/proxy-signal/index.mjs +0 -117
- package/dist/proxy-signal/index.mjs.map +0 -7
- package/dist/signal/index.d.ts +0 -9
- package/dist/signal/index.d.ts.map +0 -1
- package/dist/signal/index.js +0 -76
- package/dist/signal/index.js.map +0 -7
- package/dist/signal/index.mjs +0 -55
- package/dist/signal/index.mjs.map +0 -7
- package/dist/store/index.d.ts +0 -16
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/index.js +0 -93
- package/dist/store/index.js.map +0 -7
- package/dist/store/index.mjs +0 -72
- package/dist/store/index.mjs.map +0 -7
- package/lib/dataset/index.ts +0 -193
- package/lib/node/utils/node.sw.tpl +0 -133
- package/lib/proxy-signal/index.ts +0 -187
- package/lib/signal/index.ts +0 -86
- package/lib/store/index.ts +0 -101
package/dist/dataset/index.js
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
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 __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// lib/dataset/index.ts
|
|
21
|
-
var dataset_exports = {};
|
|
22
|
-
__export(dataset_exports, {
|
|
23
|
-
DataSet: () => DataSet
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(dataset_exports);
|
|
26
|
-
var import_valyrian = require("valyrian.js");
|
|
27
|
-
function deepFreeze(obj) {
|
|
28
|
-
if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
|
|
29
|
-
if (Array.isArray(obj)) {
|
|
30
|
-
for (let i = 0, l = obj.length; i < l; i++) {
|
|
31
|
-
deepFreeze(obj[i]);
|
|
32
|
-
}
|
|
33
|
-
} else {
|
|
34
|
-
const props = Reflect.ownKeys(obj);
|
|
35
|
-
for (let i = 0, l = props.length; i < l; i++) {
|
|
36
|
-
deepFreeze(obj[props[i]]);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
Object.freeze(obj);
|
|
40
|
-
}
|
|
41
|
-
return obj;
|
|
42
|
-
}
|
|
43
|
-
var DataSet = class {
|
|
44
|
-
#vnode = null;
|
|
45
|
-
// eslint-disable-next-line no-unused-vars
|
|
46
|
-
#handler = null;
|
|
47
|
-
#data = [];
|
|
48
|
-
#isFrozen = false;
|
|
49
|
-
#dataProxy = null;
|
|
50
|
-
get data() {
|
|
51
|
-
if (this.#dataProxy === null) {
|
|
52
|
-
throw new Error("DataSet is not initialized");
|
|
53
|
-
}
|
|
54
|
-
return this.#dataProxy;
|
|
55
|
-
}
|
|
56
|
-
set data(data) {
|
|
57
|
-
throw new Error("You need to use the reset method to set the data");
|
|
58
|
-
}
|
|
59
|
-
#setData(data) {
|
|
60
|
-
if (this.#isFrozen) {
|
|
61
|
-
this.#data = deepFreeze([...data]);
|
|
62
|
-
} else {
|
|
63
|
-
this.#data = data;
|
|
64
|
-
}
|
|
65
|
-
this.#dataProxy = new Proxy(this.#data, {
|
|
66
|
-
set: () => {
|
|
67
|
-
throw new Error("You need to use the add, update or delete methods to change the data");
|
|
68
|
-
},
|
|
69
|
-
get(target, prop) {
|
|
70
|
-
return target[prop];
|
|
71
|
-
},
|
|
72
|
-
deleteProperty: () => {
|
|
73
|
-
throw new Error("You need to use the add, update or delete methods to change the data");
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
constructor(data = [], shouldFreeze = true) {
|
|
78
|
-
this.#isFrozen = shouldFreeze;
|
|
79
|
-
this.#setData(data);
|
|
80
|
-
}
|
|
81
|
-
setVnodeAndHandler(vnode, handler) {
|
|
82
|
-
this.#vnode = vnode;
|
|
83
|
-
this.#handler = handler;
|
|
84
|
-
this.reset(this.#data);
|
|
85
|
-
}
|
|
86
|
-
reset(data) {
|
|
87
|
-
this.#setData(data);
|
|
88
|
-
if (this.#vnode === null || this.#handler === null) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
const vnode = this.#vnode;
|
|
92
|
-
const handler = this.#handler;
|
|
93
|
-
if (data.length === 0) {
|
|
94
|
-
vnode.children = [];
|
|
95
|
-
vnode.dom.textContent = "";
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const childrenLength = vnode.children.length;
|
|
99
|
-
for (let i = 0, l = data.length; i < l; i++) {
|
|
100
|
-
const child = handler(this.data[i], i);
|
|
101
|
-
if (i < childrenLength) {
|
|
102
|
-
const oldChild = vnode.children[i];
|
|
103
|
-
child.isSVG = oldChild.isSVG;
|
|
104
|
-
child.dom = oldChild.dom;
|
|
105
|
-
(0, import_valyrian.updateAttributes)(child, null);
|
|
106
|
-
vnode.children[i] = child;
|
|
107
|
-
(0, import_valyrian.patch)(child);
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
111
|
-
child.dom = (0, import_valyrian.createElement)(child.tag, child.isSVG);
|
|
112
|
-
vnode.dom.appendChild(child.dom);
|
|
113
|
-
(0, import_valyrian.updateAttributes)(child, null);
|
|
114
|
-
vnode.children.push(child);
|
|
115
|
-
(0, import_valyrian.patch)(child);
|
|
116
|
-
}
|
|
117
|
-
for (let i = data.length; i < childrenLength; i++) {
|
|
118
|
-
vnode.dom.removeChild(vnode.children[i].dom);
|
|
119
|
-
}
|
|
120
|
-
vnode.children.length = data.length;
|
|
121
|
-
}
|
|
122
|
-
add(...data) {
|
|
123
|
-
if (this.#data) {
|
|
124
|
-
const oldLength = this.#data.length;
|
|
125
|
-
if (this.#isFrozen) {
|
|
126
|
-
this.#setData([...this.#data, ...data]);
|
|
127
|
-
} else {
|
|
128
|
-
this.#data.push(...data);
|
|
129
|
-
}
|
|
130
|
-
if (this.#vnode === null || this.#handler === null) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const vnode = this.#vnode;
|
|
134
|
-
const handler = this.#handler;
|
|
135
|
-
for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {
|
|
136
|
-
const child = handler(this.#data[i], ii);
|
|
137
|
-
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
138
|
-
child.dom = (0, import_valyrian.createElement)(child.tag, child.isSVG);
|
|
139
|
-
vnode.dom.appendChild(child.dom);
|
|
140
|
-
(0, import_valyrian.updateAttributes)(child, null);
|
|
141
|
-
vnode.children.push(child);
|
|
142
|
-
(0, import_valyrian.patch)(child);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
delete(index) {
|
|
147
|
-
if (this.#data && this.#vnode) {
|
|
148
|
-
const child = this.#vnode.children[index];
|
|
149
|
-
if (this.#isFrozen) {
|
|
150
|
-
this.#setData(this.data.filter((_, i) => i !== index));
|
|
151
|
-
} else {
|
|
152
|
-
this.#data.splice(index, 1);
|
|
153
|
-
}
|
|
154
|
-
this.#vnode.dom.removeChild(child.dom);
|
|
155
|
-
this.#vnode.children.splice(index, 1);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
update(index, item) {
|
|
159
|
-
if (this.#data && this.#vnode && this.#handler) {
|
|
160
|
-
const child = this.#vnode.children[index];
|
|
161
|
-
if (this.#isFrozen) {
|
|
162
|
-
this.#setData(this.#data.map((d, i) => i === index ? { ...d, ...item } : d));
|
|
163
|
-
} else {
|
|
164
|
-
this.#data[index] = { ...this.#data[index], ...item };
|
|
165
|
-
}
|
|
166
|
-
const newChild = this.#handler(this.#data[index], index);
|
|
167
|
-
newChild.isSVG = this.#vnode.isSVG || newChild.tag === "svg";
|
|
168
|
-
newChild.dom = child.dom;
|
|
169
|
-
this.#vnode.children[index] = newChild;
|
|
170
|
-
(0, import_valyrian.updateAttributes)(newChild, null);
|
|
171
|
-
(0, import_valyrian.patch)(newChild);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
(0, import_valyrian.directive)("with-dataset", (dataSet, vnode) => {
|
|
176
|
-
dataSet.setVnodeAndHandler(vnode, vnode.children[0]);
|
|
177
|
-
return false;
|
|
178
|
-
});
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/dataset/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { VnodeWithDom, createElement, directive, patch, updateAttributes } from \"valyrian.js\";\n\ninterface DataSetInterface<T> {\n data: T[];\n // eslint-disable-next-line no-unused-vars\n reset: (data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n add: (...data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n update: (index: number, data: T) => void;\n // eslint-disable-next-line no-unused-vars\n delete: (index: number) => void;\n}\ninterface DataSetHandler<T> {\n // eslint-disable-next-line no-unused-vars\n (data: T, index: number): VnodeWithDom;\n}\n\nfunction deepFreeze(obj: any) {\n if (typeof obj === \"object\" && obj !== null && !Object.isFrozen(obj)) {\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i]);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]]);\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport class DataSet<T> implements DataSetInterface<T> {\n #vnode: VnodeWithDom | null = null;\n // eslint-disable-next-line no-unused-vars\n #handler: DataSetHandler<T> | null = null;\n #data: T[] = [];\n #isFrozen = false;\n #dataProxy: T[] | null = null;\n\n get data() {\n if (this.#dataProxy === null) {\n throw new Error(\"DataSet is not initialized\");\n }\n\n return this.#dataProxy;\n }\n\n set data(data: T[]) {\n throw new Error(\"You need to use the reset method to set the data\");\n }\n\n #setData(data: T[]) {\n if (this.#isFrozen) {\n this.#data = deepFreeze([...data]);\n } else {\n this.#data = data;\n }\n this.#dataProxy = new Proxy(this.#data as T[], {\n set: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n },\n get(target: any, prop: string) {\n return target[prop];\n },\n deleteProperty: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n }\n }) as T[];\n }\n\n constructor(data: T[] = [], shouldFreeze = true) {\n this.#isFrozen = shouldFreeze;\n this.#setData(data);\n }\n\n setVnodeAndHandler(vnode: VnodeWithDom, handler: DataSetHandler<T>) {\n this.#vnode = vnode;\n this.#handler = handler;\n this.reset(this.#data);\n }\n\n reset(data: T[]) {\n this.#setData(data);\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n if (data.length === 0) {\n vnode.children = [];\n vnode.dom.textContent = \"\";\n return;\n }\n\n const childrenLength = vnode.children.length;\n for (let i = 0, l = data.length; i < l; i++) {\n const child = handler(this.data[i], i);\n\n if (i < childrenLength) {\n const oldChild = vnode.children[i];\n child.isSVG = oldChild.isSVG;\n child.dom = oldChild.dom;\n updateAttributes(child as VnodeWithDom, null);\n vnode.children[i] = child;\n patch(child as VnodeWithDom);\n continue;\n }\n\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n\n for (let i = data.length; i < childrenLength; i++) {\n vnode.dom.removeChild(vnode.children[i].dom);\n }\n vnode.children.length = data.length;\n }\n\n add(...data: T[]) {\n if (this.#data) {\n const oldLength = this.#data.length;\n if (this.#isFrozen) {\n this.#setData([...this.#data, ...data]);\n } else {\n this.#data.push(...data);\n }\n\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {\n const child = handler(this.#data[i], ii);\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n }\n }\n\n delete(index: number) {\n if (this.#data && this.#vnode) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.data.filter((_, i) => i !== index));\n } else {\n this.#data.splice(index, 1);\n }\n\n this.#vnode.dom.removeChild(child.dom);\n this.#vnode.children.splice(index, 1);\n }\n }\n\n update(index: number, item: Partial<T>) {\n if (this.#data && this.#vnode && this.#handler) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.#data.map((d, i) => (i === index ? { ...d, ...item } : d)));\n } else {\n this.#data[index] = { ...this.#data[index], ...item };\n }\n const newChild = this.#handler(this.#data[index], index);\n newChild.isSVG = this.#vnode.isSVG || newChild.tag === \"svg\";\n newChild.dom = child.dom;\n this.#vnode.children[index] = newChild;\n updateAttributes(newChild as VnodeWithDom, null);\n patch(newChild as VnodeWithDom);\n }\n }\n}\n\ndirective(\"with-dataset\", (dataSet: DataSet<any>, vnode: VnodeWithDom) => {\n dataSet.setVnodeAndHandler(vnode, vnode.children[0]);\n return false;\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/dataset/index.mjs
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
// lib/dataset/index.ts
|
|
2
|
-
import { createElement, directive, patch, updateAttributes } from "valyrian.js";
|
|
3
|
-
function deepFreeze(obj) {
|
|
4
|
-
if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
|
|
5
|
-
if (Array.isArray(obj)) {
|
|
6
|
-
for (let i = 0, l = obj.length; i < l; i++) {
|
|
7
|
-
deepFreeze(obj[i]);
|
|
8
|
-
}
|
|
9
|
-
} else {
|
|
10
|
-
const props = Reflect.ownKeys(obj);
|
|
11
|
-
for (let i = 0, l = props.length; i < l; i++) {
|
|
12
|
-
deepFreeze(obj[props[i]]);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
Object.freeze(obj);
|
|
16
|
-
}
|
|
17
|
-
return obj;
|
|
18
|
-
}
|
|
19
|
-
var DataSet = class {
|
|
20
|
-
#vnode = null;
|
|
21
|
-
// eslint-disable-next-line no-unused-vars
|
|
22
|
-
#handler = null;
|
|
23
|
-
#data = [];
|
|
24
|
-
#isFrozen = false;
|
|
25
|
-
#dataProxy = null;
|
|
26
|
-
get data() {
|
|
27
|
-
if (this.#dataProxy === null) {
|
|
28
|
-
throw new Error("DataSet is not initialized");
|
|
29
|
-
}
|
|
30
|
-
return this.#dataProxy;
|
|
31
|
-
}
|
|
32
|
-
set data(data) {
|
|
33
|
-
throw new Error("You need to use the reset method to set the data");
|
|
34
|
-
}
|
|
35
|
-
#setData(data) {
|
|
36
|
-
if (this.#isFrozen) {
|
|
37
|
-
this.#data = deepFreeze([...data]);
|
|
38
|
-
} else {
|
|
39
|
-
this.#data = data;
|
|
40
|
-
}
|
|
41
|
-
this.#dataProxy = new Proxy(this.#data, {
|
|
42
|
-
set: () => {
|
|
43
|
-
throw new Error("You need to use the add, update or delete methods to change the data");
|
|
44
|
-
},
|
|
45
|
-
get(target, prop) {
|
|
46
|
-
return target[prop];
|
|
47
|
-
},
|
|
48
|
-
deleteProperty: () => {
|
|
49
|
-
throw new Error("You need to use the add, update or delete methods to change the data");
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
constructor(data = [], shouldFreeze = true) {
|
|
54
|
-
this.#isFrozen = shouldFreeze;
|
|
55
|
-
this.#setData(data);
|
|
56
|
-
}
|
|
57
|
-
setVnodeAndHandler(vnode, handler) {
|
|
58
|
-
this.#vnode = vnode;
|
|
59
|
-
this.#handler = handler;
|
|
60
|
-
this.reset(this.#data);
|
|
61
|
-
}
|
|
62
|
-
reset(data) {
|
|
63
|
-
this.#setData(data);
|
|
64
|
-
if (this.#vnode === null || this.#handler === null) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
const vnode = this.#vnode;
|
|
68
|
-
const handler = this.#handler;
|
|
69
|
-
if (data.length === 0) {
|
|
70
|
-
vnode.children = [];
|
|
71
|
-
vnode.dom.textContent = "";
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const childrenLength = vnode.children.length;
|
|
75
|
-
for (let i = 0, l = data.length; i < l; i++) {
|
|
76
|
-
const child = handler(this.data[i], i);
|
|
77
|
-
if (i < childrenLength) {
|
|
78
|
-
const oldChild = vnode.children[i];
|
|
79
|
-
child.isSVG = oldChild.isSVG;
|
|
80
|
-
child.dom = oldChild.dom;
|
|
81
|
-
updateAttributes(child, null);
|
|
82
|
-
vnode.children[i] = child;
|
|
83
|
-
patch(child);
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
87
|
-
child.dom = createElement(child.tag, child.isSVG);
|
|
88
|
-
vnode.dom.appendChild(child.dom);
|
|
89
|
-
updateAttributes(child, null);
|
|
90
|
-
vnode.children.push(child);
|
|
91
|
-
patch(child);
|
|
92
|
-
}
|
|
93
|
-
for (let i = data.length; i < childrenLength; i++) {
|
|
94
|
-
vnode.dom.removeChild(vnode.children[i].dom);
|
|
95
|
-
}
|
|
96
|
-
vnode.children.length = data.length;
|
|
97
|
-
}
|
|
98
|
-
add(...data) {
|
|
99
|
-
if (this.#data) {
|
|
100
|
-
const oldLength = this.#data.length;
|
|
101
|
-
if (this.#isFrozen) {
|
|
102
|
-
this.#setData([...this.#data, ...data]);
|
|
103
|
-
} else {
|
|
104
|
-
this.#data.push(...data);
|
|
105
|
-
}
|
|
106
|
-
if (this.#vnode === null || this.#handler === null) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const vnode = this.#vnode;
|
|
110
|
-
const handler = this.#handler;
|
|
111
|
-
for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {
|
|
112
|
-
const child = handler(this.#data[i], ii);
|
|
113
|
-
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
114
|
-
child.dom = createElement(child.tag, child.isSVG);
|
|
115
|
-
vnode.dom.appendChild(child.dom);
|
|
116
|
-
updateAttributes(child, null);
|
|
117
|
-
vnode.children.push(child);
|
|
118
|
-
patch(child);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
delete(index) {
|
|
123
|
-
if (this.#data && this.#vnode) {
|
|
124
|
-
const child = this.#vnode.children[index];
|
|
125
|
-
if (this.#isFrozen) {
|
|
126
|
-
this.#setData(this.data.filter((_, i) => i !== index));
|
|
127
|
-
} else {
|
|
128
|
-
this.#data.splice(index, 1);
|
|
129
|
-
}
|
|
130
|
-
this.#vnode.dom.removeChild(child.dom);
|
|
131
|
-
this.#vnode.children.splice(index, 1);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
update(index, item) {
|
|
135
|
-
if (this.#data && this.#vnode && this.#handler) {
|
|
136
|
-
const child = this.#vnode.children[index];
|
|
137
|
-
if (this.#isFrozen) {
|
|
138
|
-
this.#setData(this.#data.map((d, i) => i === index ? { ...d, ...item } : d));
|
|
139
|
-
} else {
|
|
140
|
-
this.#data[index] = { ...this.#data[index], ...item };
|
|
141
|
-
}
|
|
142
|
-
const newChild = this.#handler(this.#data[index], index);
|
|
143
|
-
newChild.isSVG = this.#vnode.isSVG || newChild.tag === "svg";
|
|
144
|
-
newChild.dom = child.dom;
|
|
145
|
-
this.#vnode.children[index] = newChild;
|
|
146
|
-
updateAttributes(newChild, null);
|
|
147
|
-
patch(newChild);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
directive("with-dataset", (dataSet, vnode) => {
|
|
152
|
-
dataSet.setVnodeAndHandler(vnode, vnode.children[0]);
|
|
153
|
-
return false;
|
|
154
|
-
});
|
|
155
|
-
export {
|
|
156
|
-
DataSet
|
|
157
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/dataset/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { VnodeWithDom, createElement, directive, patch, updateAttributes } from \"valyrian.js\";\n\ninterface DataSetInterface<T> {\n data: T[];\n // eslint-disable-next-line no-unused-vars\n reset: (data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n add: (...data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n update: (index: number, data: T) => void;\n // eslint-disable-next-line no-unused-vars\n delete: (index: number) => void;\n}\ninterface DataSetHandler<T> {\n // eslint-disable-next-line no-unused-vars\n (data: T, index: number): VnodeWithDom;\n}\n\nfunction deepFreeze(obj: any) {\n if (typeof obj === \"object\" && obj !== null && !Object.isFrozen(obj)) {\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i]);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]]);\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport class DataSet<T> implements DataSetInterface<T> {\n #vnode: VnodeWithDom | null = null;\n // eslint-disable-next-line no-unused-vars\n #handler: DataSetHandler<T> | null = null;\n #data: T[] = [];\n #isFrozen = false;\n #dataProxy: T[] | null = null;\n\n get data() {\n if (this.#dataProxy === null) {\n throw new Error(\"DataSet is not initialized\");\n }\n\n return this.#dataProxy;\n }\n\n set data(data: T[]) {\n throw new Error(\"You need to use the reset method to set the data\");\n }\n\n #setData(data: T[]) {\n if (this.#isFrozen) {\n this.#data = deepFreeze([...data]);\n } else {\n this.#data = data;\n }\n this.#dataProxy = new Proxy(this.#data as T[], {\n set: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n },\n get(target: any, prop: string) {\n return target[prop];\n },\n deleteProperty: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n }\n }) as T[];\n }\n\n constructor(data: T[] = [], shouldFreeze = true) {\n this.#isFrozen = shouldFreeze;\n this.#setData(data);\n }\n\n setVnodeAndHandler(vnode: VnodeWithDom, handler: DataSetHandler<T>) {\n this.#vnode = vnode;\n this.#handler = handler;\n this.reset(this.#data);\n }\n\n reset(data: T[]) {\n this.#setData(data);\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n if (data.length === 0) {\n vnode.children = [];\n vnode.dom.textContent = \"\";\n return;\n }\n\n const childrenLength = vnode.children.length;\n for (let i = 0, l = data.length; i < l; i++) {\n const child = handler(this.data[i], i);\n\n if (i < childrenLength) {\n const oldChild = vnode.children[i];\n child.isSVG = oldChild.isSVG;\n child.dom = oldChild.dom;\n updateAttributes(child as VnodeWithDom, null);\n vnode.children[i] = child;\n patch(child as VnodeWithDom);\n continue;\n }\n\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n\n for (let i = data.length; i < childrenLength; i++) {\n vnode.dom.removeChild(vnode.children[i].dom);\n }\n vnode.children.length = data.length;\n }\n\n add(...data: T[]) {\n if (this.#data) {\n const oldLength = this.#data.length;\n if (this.#isFrozen) {\n this.#setData([...this.#data, ...data]);\n } else {\n this.#data.push(...data);\n }\n\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {\n const child = handler(this.#data[i], ii);\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n }\n }\n\n delete(index: number) {\n if (this.#data && this.#vnode) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.data.filter((_, i) => i !== index));\n } else {\n this.#data.splice(index, 1);\n }\n\n this.#vnode.dom.removeChild(child.dom);\n this.#vnode.children.splice(index, 1);\n }\n }\n\n update(index: number, item: Partial<T>) {\n if (this.#data && this.#vnode && this.#handler) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.#data.map((d, i) => (i === index ? { ...d, ...item } : d)));\n } else {\n this.#data[index] = { ...this.#data[index], ...item };\n }\n const newChild = this.#handler(this.#data[index], index);\n newChild.isSVG = this.#vnode.isSVG || newChild.tag === \"svg\";\n newChild.dom = child.dom;\n this.#vnode.children[index] = newChild;\n updateAttributes(newChild as VnodeWithDom, null);\n patch(newChild as VnodeWithDom);\n }\n }\n}\n\ndirective(\"with-dataset\", (dataSet: DataSet<any>, vnode: VnodeWithDom) => {\n dataSet.setVnodeAndHandler(vnode, vnode.children[0]);\n return false;\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/node/node.sw.tpl
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
let Log = console.log;
|
|
2
|
-
|
|
3
|
-
let config = {
|
|
4
|
-
version: "v1::",
|
|
5
|
-
name: "Valyrian.js",
|
|
6
|
-
urls: ["/"]
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
let cacheName = config.version + config.name;
|
|
10
|
-
|
|
11
|
-
async function fetchRequest(event) {
|
|
12
|
-
Log("WORKER: fetchevent for " + event.request.url);
|
|
13
|
-
let response;
|
|
14
|
-
try {
|
|
15
|
-
// IMPORTANT: Clone the request. A request is a stream and
|
|
16
|
-
// can only be consumed once. Since we are consuming this
|
|
17
|
-
// once by cache and once by the browser for fetch, we need
|
|
18
|
-
// to clone the response.
|
|
19
|
-
let fetchRequest = event.request.clone();
|
|
20
|
-
response = await fetch(fetchRequest);
|
|
21
|
-
if (response && response.status < 300 && response.type === "basic") {
|
|
22
|
-
try {
|
|
23
|
-
// IMPORTANT: Clone the response. A response is a stream
|
|
24
|
-
// and because we want the browser to consume the response
|
|
25
|
-
// as well as the cache consuming the response, we need
|
|
26
|
-
// to clone it so we have two streams.
|
|
27
|
-
let responseToCache = response.clone();
|
|
28
|
-
let cache = await caches.open(cacheName);
|
|
29
|
-
cache.put(event.request, responseToCache);
|
|
30
|
-
|
|
31
|
-
Log("WORKER: fetch response stored in cache.", event.request.url);
|
|
32
|
-
} catch (err) {
|
|
33
|
-
Log("WORKER: fetch response could not be stored in cache.", err);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return response;
|
|
37
|
-
}
|
|
38
|
-
} catch (error) {
|
|
39
|
-
Log("WORKER: fetch request failed.", error);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
let cachedResponse;
|
|
43
|
-
try {
|
|
44
|
-
cachedResponse = await caches.match(event.request);
|
|
45
|
-
if (cachedResponse) {
|
|
46
|
-
Log("WORKER: fetch request failed, responding with cache.");
|
|
47
|
-
return cachedResponse;
|
|
48
|
-
}
|
|
49
|
-
} catch (error) {
|
|
50
|
-
Log("WORKER: cache request failed.", error);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
Log(
|
|
54
|
-
"WORKER: fetch request failed in both cache and network, responding with service unavailable."
|
|
55
|
-
);
|
|
56
|
-
return (
|
|
57
|
-
response ||
|
|
58
|
-
new Response("<h1>Service Unavailable</h1>", {
|
|
59
|
-
status: 503,
|
|
60
|
-
statusText: "Service Unavailable",
|
|
61
|
-
headers: new Headers({
|
|
62
|
-
"Content-Type": "text/html"
|
|
63
|
-
})
|
|
64
|
-
})
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
self.addEventListener("fetch", (event) => {
|
|
69
|
-
// DevTools opening will trigger these o-i-c requests, which this SW can't handle.
|
|
70
|
-
// https://github.com/paulirish/caltrainschedule.io/issues/49
|
|
71
|
-
if (
|
|
72
|
-
event.request.cache === "only-if-cached" &&
|
|
73
|
-
event.request.mode !== "same-origin"
|
|
74
|
-
) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
Log("WORKER: fetch event in progress.", event.request.url);
|
|
79
|
-
|
|
80
|
-
// We only handle Get requests all others let them pass
|
|
81
|
-
if (event.request.method !== "GET") {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
event.respondWith(fetchRequest(event));
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
self.addEventListener("install", (event) => {
|
|
89
|
-
Log("WORKER: Version install", cacheName);
|
|
90
|
-
event.waitUntil(
|
|
91
|
-
caches
|
|
92
|
-
.open(cacheName)
|
|
93
|
-
.then((cache) => cache.addAll(config.urls))
|
|
94
|
-
// IMPORTANT: `skipWaiting()` forces the waiting ServiceWorker to become the
|
|
95
|
-
// active ServiceWorker, triggering the `onactivate` event.
|
|
96
|
-
// Together with `Clients.claim()` this allows a worker to take effect
|
|
97
|
-
// immediately in the client(s).
|
|
98
|
-
.then(() => self.skipWaiting())
|
|
99
|
-
);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
// IMPORTANT: `onactivate` is usually called after a worker was installed and the page
|
|
103
|
-
// got refreshed. Since we call `skipWaiting()` in `oninstall`, `onactivate` is
|
|
104
|
-
// called immediately.
|
|
105
|
-
self.addEventListener("activate", (event) => {
|
|
106
|
-
self.clients
|
|
107
|
-
.matchAll({
|
|
108
|
-
includeUncontrolled: true
|
|
109
|
-
})
|
|
110
|
-
.then((clientList) => {
|
|
111
|
-
urls = clientList.map((client) => client.url);
|
|
112
|
-
Log("WORKER: Matching clients:", urls.join(", "));
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
event.waitUntil(
|
|
116
|
-
caches
|
|
117
|
-
.keys()
|
|
118
|
-
.then((keys) =>
|
|
119
|
-
Promise.all(
|
|
120
|
-
keys
|
|
121
|
-
// Filter by keys that don't start with the latest version prefix.
|
|
122
|
-
.filter((key) => !key.startsWith(cacheName))
|
|
123
|
-
// Return a promise that's fulfilled when each outdated cache is deleted.
|
|
124
|
-
.map((key) => caches.delete(key))
|
|
125
|
-
)
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
// IMPORTANT: `claim()` sets this worker as the active worker for all clients that
|
|
129
|
-
// match the workers scope and triggers an `oncontrollerchange` event for
|
|
130
|
-
// the clients.
|
|
131
|
-
.then(() => self.clients.claim())
|
|
132
|
-
);
|
|
133
|
-
});
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
let Log = console.log;
|
|
2
|
-
|
|
3
|
-
let config = {
|
|
4
|
-
version: "v1::",
|
|
5
|
-
name: "Valyrian.js",
|
|
6
|
-
urls: ["/"]
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
let cacheName = config.version + config.name;
|
|
10
|
-
|
|
11
|
-
async function fetchRequest(event) {
|
|
12
|
-
Log("WORKER: fetchevent for " + event.request.url);
|
|
13
|
-
let response;
|
|
14
|
-
try {
|
|
15
|
-
// IMPORTANT: Clone the request. A request is a stream and
|
|
16
|
-
// can only be consumed once. Since we are consuming this
|
|
17
|
-
// once by cache and once by the browser for fetch, we need
|
|
18
|
-
// to clone the response.
|
|
19
|
-
let fetchRequest = event.request.clone();
|
|
20
|
-
response = await fetch(fetchRequest);
|
|
21
|
-
if (response && response.status < 300 && response.type === "basic") {
|
|
22
|
-
try {
|
|
23
|
-
// IMPORTANT: Clone the response. A response is a stream
|
|
24
|
-
// and because we want the browser to consume the response
|
|
25
|
-
// as well as the cache consuming the response, we need
|
|
26
|
-
// to clone it so we have two streams.
|
|
27
|
-
let responseToCache = response.clone();
|
|
28
|
-
let cache = await caches.open(cacheName);
|
|
29
|
-
cache.put(event.request, responseToCache);
|
|
30
|
-
|
|
31
|
-
Log("WORKER: fetch response stored in cache.", event.request.url);
|
|
32
|
-
} catch (err) {
|
|
33
|
-
Log("WORKER: fetch response could not be stored in cache.", err);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return response;
|
|
37
|
-
}
|
|
38
|
-
} catch (error) {
|
|
39
|
-
Log("WORKER: fetch request failed.", error);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
let cachedResponse;
|
|
43
|
-
try {
|
|
44
|
-
cachedResponse = await caches.match(event.request);
|
|
45
|
-
if (cachedResponse) {
|
|
46
|
-
Log("WORKER: fetch request failed, responding with cache.");
|
|
47
|
-
return cachedResponse;
|
|
48
|
-
}
|
|
49
|
-
} catch (error) {
|
|
50
|
-
Log("WORKER: cache request failed.", error);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
Log(
|
|
54
|
-
"WORKER: fetch request failed in both cache and network, responding with service unavailable."
|
|
55
|
-
);
|
|
56
|
-
return (
|
|
57
|
-
response ||
|
|
58
|
-
new Response("<h1>Service Unavailable</h1>", {
|
|
59
|
-
status: 503,
|
|
60
|
-
statusText: "Service Unavailable",
|
|
61
|
-
headers: new Headers({
|
|
62
|
-
"Content-Type": "text/html"
|
|
63
|
-
})
|
|
64
|
-
})
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
self.addEventListener("fetch", (event) => {
|
|
69
|
-
// DevTools opening will trigger these o-i-c requests, which this SW can't handle.
|
|
70
|
-
// https://github.com/paulirish/caltrainschedule.io/issues/49
|
|
71
|
-
if (
|
|
72
|
-
event.request.cache === "only-if-cached" &&
|
|
73
|
-
event.request.mode !== "same-origin"
|
|
74
|
-
) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
Log("WORKER: fetch event in progress.", event.request.url);
|
|
79
|
-
|
|
80
|
-
// We only handle Get requests all others let them pass
|
|
81
|
-
if (event.request.method !== "GET") {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
event.respondWith(fetchRequest(event));
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
self.addEventListener("install", (event) => {
|
|
89
|
-
Log("WORKER: Version install", cacheName);
|
|
90
|
-
event.waitUntil(
|
|
91
|
-
caches
|
|
92
|
-
.open(cacheName)
|
|
93
|
-
.then((cache) => cache.addAll(config.urls))
|
|
94
|
-
// IMPORTANT: `skipWaiting()` forces the waiting ServiceWorker to become the
|
|
95
|
-
// active ServiceWorker, triggering the `onactivate` event.
|
|
96
|
-
// Together with `Clients.claim()` this allows a worker to take effect
|
|
97
|
-
// immediately in the client(s).
|
|
98
|
-
.then(() => self.skipWaiting())
|
|
99
|
-
);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
// IMPORTANT: `onactivate` is usually called after a worker was installed and the page
|
|
103
|
-
// got refreshed. Since we call `skipWaiting()` in `oninstall`, `onactivate` is
|
|
104
|
-
// called immediately.
|
|
105
|
-
self.addEventListener("activate", (event) => {
|
|
106
|
-
self.clients
|
|
107
|
-
.matchAll({
|
|
108
|
-
includeUncontrolled: true
|
|
109
|
-
})
|
|
110
|
-
.then((clientList) => {
|
|
111
|
-
urls = clientList.map((client) => client.url);
|
|
112
|
-
Log("WORKER: Matching clients:", urls.join(", "));
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
event.waitUntil(
|
|
116
|
-
caches
|
|
117
|
-
.keys()
|
|
118
|
-
.then((keys) =>
|
|
119
|
-
Promise.all(
|
|
120
|
-
keys
|
|
121
|
-
// Filter by keys that don't start with the latest version prefix.
|
|
122
|
-
.filter((key) => !key.startsWith(cacheName))
|
|
123
|
-
// Return a promise that's fulfilled when each outdated cache is deleted.
|
|
124
|
-
.map((key) => caches.delete(key))
|
|
125
|
-
)
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
// IMPORTANT: `claim()` sets this worker as the active worker for all clients that
|
|
129
|
-
// match the workers scope and triggers an `oncontrollerchange` event for
|
|
130
|
-
// the clients.
|
|
131
|
-
.then(() => self.clients.claim())
|
|
132
|
-
);
|
|
133
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
interface Cleanup {
|
|
2
|
-
(): void;
|
|
3
|
-
}
|
|
4
|
-
interface Subscription {
|
|
5
|
-
(value: ProxySignal["value"]): void | Cleanup;
|
|
6
|
-
}
|
|
7
|
-
interface Getter {
|
|
8
|
-
(value: ProxySignal["value"]): any;
|
|
9
|
-
}
|
|
10
|
-
interface ProxySignal {
|
|
11
|
-
(): ProxySignal["value"];
|
|
12
|
-
(value: Subscription): ProxySignal;
|
|
13
|
-
(path: string, handler: (valueAtPathPosition: any) => any): ProxySignal["value"];
|
|
14
|
-
(path: string, value: any): ProxySignal["value"];
|
|
15
|
-
(value: any): ProxySignal["value"];
|
|
16
|
-
value: any;
|
|
17
|
-
cleanup: () => void;
|
|
18
|
-
getter: (name: string, handler: Getter) => any;
|
|
19
|
-
[key: string | number | symbol]: any;
|
|
20
|
-
}
|
|
21
|
-
export declare function ProxySignal(value: any): ProxySignal;
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/proxy-signal/index.ts"],"names":[],"mappings":"AAGA,UAAU,OAAO;IACf,IAAI,IAAI,CAAC;CACV;AAED,UAAU,YAAY;IAEpB,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC;CAC/C;AAID,UAAU,MAAM;IAEd,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;CACpC;AAMD,UAAU,WAAW;IAEnB,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAGzB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAAC;IAGnC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,mBAAmB,EAAE,GAAG,KAAK,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAGjF,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAGjD,CAAC,KAAK,EAAE,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEnC,KAAK,EAAE,GAAG,CAAC;IAEX,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC;IAE/C,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;CACtC;AAoCD,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,WAAW,CAuGnD"}
|