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.
Files changed (168) hide show
  1. package/README.md +6 -6
  2. package/dist/flux-store/index.d.ts +32 -0
  3. package/dist/flux-store/index.d.ts.map +1 -0
  4. package/dist/flux-store/index.js +267 -0
  5. package/dist/flux-store/index.js.map +7 -0
  6. package/dist/flux-store/index.min.js +1 -0
  7. package/dist/flux-store/index.min.js.map +1 -0
  8. package/dist/flux-store/index.mjs +246 -0
  9. package/dist/flux-store/index.mjs.map +7 -0
  10. package/dist/hooks/index.d.ts.map +1 -1
  11. package/dist/hooks/index.js +35 -51
  12. package/dist/hooks/index.js.map +3 -3
  13. package/dist/hooks/index.min.js +1 -0
  14. package/dist/hooks/index.min.js.map +1 -0
  15. package/dist/hooks/index.mjs +36 -52
  16. package/dist/hooks/index.mjs.map +3 -3
  17. package/dist/index.d.ts +18 -14
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +107 -88
  20. package/dist/index.js.map +3 -3
  21. package/dist/index.min.js +1 -1
  22. package/dist/index.min.js.map +1 -1
  23. package/dist/index.mjs +107 -88
  24. package/dist/index.mjs.map +3 -3
  25. package/dist/native-store/index.d.ts +14 -0
  26. package/dist/native-store/index.d.ts.map +1 -0
  27. package/dist/native-store/index.js +103 -0
  28. package/dist/native-store/index.js.map +7 -0
  29. package/dist/native-store/index.min.js +1 -0
  30. package/dist/native-store/index.min.js.map +1 -0
  31. package/dist/native-store/index.mjs +82 -0
  32. package/dist/native-store/index.mjs.map +7 -0
  33. package/dist/node/index.d.ts +1 -1
  34. package/dist/node/index.d.ts.map +1 -1
  35. package/dist/node/index.js +125 -10
  36. package/dist/node/index.js.map +4 -4
  37. package/dist/node/index.mjs +125 -10
  38. package/dist/node/index.mjs.map +4 -4
  39. package/dist/node/node.sw.js +152 -0
  40. package/dist/node/utils/icons.d.ts +4 -5
  41. package/dist/node/utils/icons.d.ts.map +1 -1
  42. package/dist/node/utils/inline.d.ts +1 -1
  43. package/dist/node/utils/inline.d.ts.map +1 -1
  44. package/dist/node/utils/node.sw.js +152 -0
  45. package/dist/node/utils/session-storage.d.ts +22 -0
  46. package/dist/node/utils/session-storage.d.ts.map +1 -0
  47. package/dist/node/utils/sw.d.ts.map +1 -1
  48. package/dist/node/utils/tree-adapter.d.ts +5 -1
  49. package/dist/node/utils/tree-adapter.d.ts.map +1 -1
  50. package/dist/pulse-store/index.d.ts +16 -0
  51. package/dist/pulse-store/index.d.ts.map +1 -0
  52. package/dist/pulse-store/index.js +143 -0
  53. package/dist/pulse-store/index.js.map +7 -0
  54. package/dist/pulse-store/index.min.js +1 -0
  55. package/dist/pulse-store/index.min.js.map +1 -0
  56. package/dist/pulse-store/index.mjs +122 -0
  57. package/dist/pulse-store/index.mjs.map +7 -0
  58. package/dist/request/index.d.ts +11 -11
  59. package/dist/request/index.d.ts.map +1 -1
  60. package/dist/request/index.js +63 -84
  61. package/dist/request/index.js.map +2 -2
  62. package/dist/request/index.min.js +1 -0
  63. package/dist/request/index.min.js.map +1 -0
  64. package/dist/request/index.mjs +63 -84
  65. package/dist/request/index.mjs.map +2 -2
  66. package/dist/router/index.d.ts +36 -33
  67. package/dist/router/index.d.ts.map +1 -1
  68. package/dist/router/index.js +247 -96
  69. package/dist/router/index.js.map +3 -3
  70. package/dist/router/index.min.js +1 -0
  71. package/dist/router/index.min.js.map +1 -0
  72. package/dist/router/index.mjs +247 -96
  73. package/dist/router/index.mjs.map +3 -3
  74. package/dist/signals/index.d.ts +6 -0
  75. package/dist/signals/index.d.ts.map +1 -0
  76. package/dist/signals/index.js +92 -0
  77. package/dist/signals/index.js.map +7 -0
  78. package/dist/signals/index.min.js +1 -0
  79. package/dist/signals/index.min.js.map +1 -0
  80. package/dist/signals/index.mjs +71 -0
  81. package/dist/signals/index.mjs.map +7 -0
  82. package/dist/suspense/index.d.ts +6 -0
  83. package/dist/suspense/index.d.ts.map +1 -0
  84. package/dist/suspense/index.js +67 -0
  85. package/dist/suspense/index.js.map +7 -0
  86. package/dist/suspense/index.min.js +1 -0
  87. package/dist/suspense/index.min.js.map +1 -0
  88. package/dist/suspense/index.mjs +46 -0
  89. package/dist/suspense/index.mjs.map +7 -0
  90. package/dist/sw/index.min.js +1 -0
  91. package/dist/sw/index.min.js.map +1 -0
  92. package/dist/translate/index.d.ts +19 -0
  93. package/dist/translate/index.d.ts.map +1 -0
  94. package/dist/translate/index.js +150 -0
  95. package/dist/translate/index.js.map +7 -0
  96. package/dist/translate/index.min.js +1 -0
  97. package/dist/translate/index.min.js.map +1 -0
  98. package/dist/translate/index.mjs +129 -0
  99. package/dist/translate/index.mjs.map +7 -0
  100. package/dist/tsconfig.tsbuildinfo +1 -1
  101. package/dist/utils/deep-freeze.d.ts +3 -0
  102. package/dist/utils/deep-freeze.d.ts.map +1 -0
  103. package/dist/utils/getter-setter.d.ts +3 -0
  104. package/dist/utils/getter-setter.d.ts.map +1 -0
  105. package/dist/utils/has-changed.d.ts +2 -0
  106. package/dist/utils/has-changed.d.ts.map +1 -0
  107. package/dist/utils/index.d.ts +4 -0
  108. package/dist/utils/index.d.ts.map +1 -0
  109. package/dist/utils/index.js +138 -0
  110. package/dist/utils/index.js.map +7 -0
  111. package/dist/utils/index.min.js +1 -0
  112. package/dist/utils/index.min.js.map +1 -0
  113. package/dist/utils/index.mjs +115 -0
  114. package/dist/utils/index.mjs.map +7 -0
  115. package/lib/flux-store/index.ts +312 -0
  116. package/lib/hooks/index.ts +39 -57
  117. package/lib/index.ts +135 -118
  118. package/lib/native-store/index.ts +106 -0
  119. package/lib/node/index.ts +3 -1
  120. package/lib/node/utils/icons.ts +4 -4
  121. package/lib/node/utils/inline.ts +2 -0
  122. package/lib/node/utils/node.sw.js +152 -0
  123. package/lib/node/utils/session-storage.ts +117 -0
  124. package/lib/node/utils/sw.ts +34 -10
  125. package/lib/node/utils/tree-adapter.ts +19 -1
  126. package/lib/pulse-store/index.ts +188 -0
  127. package/lib/request/index.ts +92 -122
  128. package/lib/router/index.ts +353 -164
  129. package/lib/signals/index.ts +98 -0
  130. package/lib/suspense/index.ts +57 -0
  131. package/lib/translate/index.ts +156 -0
  132. package/lib/utils/deep-freeze.ts +54 -0
  133. package/lib/utils/getter-setter.ts +40 -0
  134. package/lib/utils/has-changed.ts +43 -0
  135. package/lib/utils/index.ts +3 -0
  136. package/package.json +40 -57
  137. package/tsconfig.json +5 -4
  138. package/dist/dataset/index.d.ts +0 -24
  139. package/dist/dataset/index.d.ts.map +0 -1
  140. package/dist/dataset/index.js +0 -178
  141. package/dist/dataset/index.js.map +0 -7
  142. package/dist/dataset/index.mjs +0 -157
  143. package/dist/dataset/index.mjs.map +0 -7
  144. package/dist/node/node.sw.tpl +0 -133
  145. package/dist/node/utils/node.sw.tpl +0 -133
  146. package/dist/proxy-signal/index.d.ts +0 -23
  147. package/dist/proxy-signal/index.d.ts.map +0 -1
  148. package/dist/proxy-signal/index.js +0 -138
  149. package/dist/proxy-signal/index.js.map +0 -7
  150. package/dist/proxy-signal/index.mjs +0 -117
  151. package/dist/proxy-signal/index.mjs.map +0 -7
  152. package/dist/signal/index.d.ts +0 -9
  153. package/dist/signal/index.d.ts.map +0 -1
  154. package/dist/signal/index.js +0 -76
  155. package/dist/signal/index.js.map +0 -7
  156. package/dist/signal/index.mjs +0 -55
  157. package/dist/signal/index.mjs.map +0 -7
  158. package/dist/store/index.d.ts +0 -16
  159. package/dist/store/index.d.ts.map +0 -1
  160. package/dist/store/index.js +0 -93
  161. package/dist/store/index.js.map +0 -7
  162. package/dist/store/index.mjs +0 -72
  163. package/dist/store/index.mjs.map +0 -7
  164. package/lib/dataset/index.ts +0 -193
  165. package/lib/node/utils/node.sw.tpl +0 -133
  166. package/lib/proxy-signal/index.ts +0 -187
  167. package/lib/signal/index.ts +0 -86
  168. package/lib/store/index.ts +0 -101
@@ -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
- }
@@ -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
- }
@@ -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"}