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
|
@@ -0,0 +1,103 @@
|
|
|
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/native-store/index.ts
|
|
21
|
+
var native_store_exports = {};
|
|
22
|
+
__export(native_store_exports, {
|
|
23
|
+
StorageType: () => StorageType,
|
|
24
|
+
createNativeStore: () => createNativeStore
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(native_store_exports);
|
|
27
|
+
var import_valyrian = require("valyrian.js");
|
|
28
|
+
var StorageType = /* @__PURE__ */ ((StorageType2) => {
|
|
29
|
+
StorageType2["Session"] = "session";
|
|
30
|
+
StorageType2["Local"] = "local";
|
|
31
|
+
return StorageType2;
|
|
32
|
+
})(StorageType || {});
|
|
33
|
+
var ids = /* @__PURE__ */ new Set();
|
|
34
|
+
function getStorage(storageType) {
|
|
35
|
+
if (import_valyrian.isNodeJs && typeof localStorage === "undefined") {
|
|
36
|
+
throw new Error(
|
|
37
|
+
`localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to "import "valyrian.js/node"`
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
return storageType === "session" /* Session */ ? sessionStorage : localStorage;
|
|
41
|
+
}
|
|
42
|
+
function createNativeStore(key, definition = {}, storageType = "local" /* Local */, reuseIfExist = false) {
|
|
43
|
+
const nativeStore = getStorage(storageType);
|
|
44
|
+
if (ids.has(key)) {
|
|
45
|
+
if (reuseIfExist) {
|
|
46
|
+
console.warn(`Store with key ${key} already exists and will be reused`);
|
|
47
|
+
} else {
|
|
48
|
+
throw new Error(`Store with key ${key} already exists`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ids.add(key);
|
|
52
|
+
const id = key;
|
|
53
|
+
const Store = {
|
|
54
|
+
state: {},
|
|
55
|
+
set(key2, value) {
|
|
56
|
+
try {
|
|
57
|
+
this.state[key2] = value;
|
|
58
|
+
nativeStore.setItem(id, JSON.stringify(this.state));
|
|
59
|
+
} catch (e) {
|
|
60
|
+
console.error("Error setting item in storage:", e);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
get(key2) {
|
|
64
|
+
if (Object.keys(this.state).length === 0) {
|
|
65
|
+
this.load();
|
|
66
|
+
}
|
|
67
|
+
return this.state[key2];
|
|
68
|
+
},
|
|
69
|
+
delete(key2) {
|
|
70
|
+
try {
|
|
71
|
+
Reflect.deleteProperty(this.state, key2);
|
|
72
|
+
nativeStore.setItem(id, JSON.stringify(this.state));
|
|
73
|
+
} catch (e) {
|
|
74
|
+
console.error("Error deleting item in storage:", e);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
load() {
|
|
78
|
+
try {
|
|
79
|
+
const state = nativeStore.getItem(id);
|
|
80
|
+
if (!state) {
|
|
81
|
+
this.state = {};
|
|
82
|
+
nativeStore.setItem(id, JSON.stringify(this.state));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.state = JSON.parse(state);
|
|
86
|
+
} catch (e) {
|
|
87
|
+
console.error("Error loading state from storage:", e);
|
|
88
|
+
this.state = {};
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
clear() {
|
|
92
|
+
try {
|
|
93
|
+
this.state = {};
|
|
94
|
+
nativeStore.removeItem(id);
|
|
95
|
+
} catch (e) {
|
|
96
|
+
console.error("Error clearing storage:", e);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
...definition
|
|
100
|
+
};
|
|
101
|
+
Store.load();
|
|
102
|
+
return Store;
|
|
103
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../lib/native-store/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { isNodeJs } from \"valyrian.js\";\n\n/* eslint-disable no-console */\nexport enum StorageType {\n // eslint-disable-next-line no-unused-vars\n Session = \"session\",\n // eslint-disable-next-line no-unused-vars\n Local = \"local\"\n}\n\nexport interface NativeStorageInterface {\n state: Record<string, any>;\n // eslint-disable-next-line no-unused-vars\n set(key: string, value: any): void;\n // eslint-disable-next-line no-unused-vars\n get(key: string): any;\n // eslint-disable-next-line no-unused-vars\n delete(key: string): void;\n load(): void;\n clear(): void;\n}\n\nconst ids = new Set<string>();\n\nfunction getStorage(storageType: StorageType) {\n if (isNodeJs && typeof localStorage === \"undefined\") {\n throw new Error(\n `localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to \"import \"valyrian.js/node\"`\n );\n }\n return storageType === StorageType.Session ? sessionStorage : localStorage;\n}\n\nexport function createNativeStore<T>(\n key: string,\n definition: Record<string, any> = {},\n storageType: StorageType = StorageType.Local,\n reuseIfExist = false\n): NativeStorageInterface & T {\n const nativeStore = getStorage(storageType);\n\n if (ids.has(key)) {\n if (reuseIfExist) {\n // eslint-disable-next-line no-console\n console.warn(`Store with key ${key} already exists and will be reused`);\n } else {\n throw new Error(`Store with key ${key} already exists`);\n }\n }\n ids.add(key);\n\n const id = key;\n\n const Store: NativeStorageInterface = {\n state: {},\n set(key, value) {\n try {\n this.state[key] = value;\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error setting item in storage:\", e);\n }\n },\n get(key) {\n if (Object.keys(this.state).length === 0) {\n this.load();\n }\n return this.state[key];\n },\n delete(key) {\n try {\n Reflect.deleteProperty(this.state, key);\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error deleting item in storage:\", e);\n }\n },\n load() {\n try {\n const state = nativeStore.getItem(id);\n if (!state) {\n this.state = {};\n nativeStore.setItem(id, JSON.stringify(this.state));\n return;\n }\n this.state = JSON.parse(state);\n } catch (e) {\n console.error(\"Error loading state from storage:\", e);\n this.state = {};\n }\n },\n clear() {\n try {\n this.state = {};\n nativeStore.removeItem(id);\n } catch (e) {\n console.error(\"Error clearing storage:\", e);\n }\n },\n ...definition\n };\n\n Store.load();\n\n return Store as NativeStorageInterface & T;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AAGlB,IAAK,cAAL,kBAAKA,iBAAL;AAEL,EAAAA,aAAA,aAAU;AAEV,EAAAA,aAAA,WAAQ;AAJE,SAAAA;AAAA,GAAA;AAmBZ,IAAM,MAAM,oBAAI,IAAY;AAE5B,SAAS,WAAW,aAA0B;AAC5C,MAAI,4BAAY,OAAO,iBAAiB,aAAa;AACnD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,gBAAgB,0BAAsB,iBAAiB;AAChE;AAEO,SAAS,kBACd,KACA,aAAkC,CAAC,GACnC,cAA2B,qBAC3B,eAAe,OACa;AAC5B,QAAM,cAAc,WAAW,WAAW;AAE1C,MAAI,IAAI,IAAI,GAAG,GAAG;AAChB,QAAI,cAAc;AAEhB,cAAQ,KAAK,kBAAkB,GAAG,oCAAoC;AAAA,IACxE,OAAO;AACL,YAAM,IAAI,MAAM,kBAAkB,GAAG,iBAAiB;AAAA,IACxD;AAAA,EACF;AACA,MAAI,IAAI,GAAG;AAEX,QAAM,KAAK;AAEX,QAAM,QAAgC;AAAA,IACpC,OAAO,CAAC;AAAA,IACR,IAAIC,MAAK,OAAO;AACd,UAAI;AACF,aAAK,MAAMA,IAAG,IAAI;AAClB,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,kCAAkC,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,IACA,IAAIA,MAAK;AACP,UAAI,OAAO,KAAK,KAAK,KAAK,EAAE,WAAW,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,aAAO,KAAK,MAAMA,IAAG;AAAA,IACvB;AAAA,IACA,OAAOA,MAAK;AACV,UAAI;AACF,gBAAQ,eAAe,KAAK,OAAOA,IAAG;AACtC,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,mCAAmC,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAI;AACF,cAAM,QAAQ,YAAY,QAAQ,EAAE;AACpC,YAAI,CAAC,OAAO;AACV,eAAK,QAAQ,CAAC;AACd,sBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAClD;AAAA,QACF;AACA,aAAK,QAAQ,KAAK,MAAM,KAAK;AAAA,MAC/B,SAAS,GAAG;AACV,gBAAQ,MAAM,qCAAqC,CAAC;AACpD,aAAK,QAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IACA,QAAQ;AACN,UAAI;AACF,aAAK,QAAQ,CAAC;AACd,oBAAY,WAAW,EAAE;AAAA,MAC3B,SAAS,GAAG;AACV,gBAAQ,MAAM,2BAA2B,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,GAAG;AAAA,EACL;AAEA,QAAM,KAAK;AAEX,SAAO;AACT;",
|
|
6
|
+
"names": ["StorageType", "key"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={};((t,r)=>{for(var o in r)e(t,o,{get:r[o],enumerable:!0})})(s,{StorageType:()=>l,createNativeStore:()=>y});var a,i=(a=s,((s,a,i,n)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let l of r(a))o.call(s,l)||l===i||e(s,l,{get:()=>a[l],enumerable:!(n=t(a,l))||n.enumerable});return s})(e({},"__esModule",{value:!0}),a)),n=require("valyrian.js"),l=(e=>(e.Session="session",e.Local="local",e))(l||{}),c=new Set;function y(e,t={},r="local",o=!1){const s=function(e){if(n.isNodeJs&&"undefined"==typeof localStorage)throw new Error('localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to "import "valyrian.js/node"');return"session"===e?sessionStorage:localStorage}(r);if(c.has(e)){if(!o)throw new Error(`Store with key ${e} already exists`);console.warn(`Store with key ${e} already exists and will be reused`)}c.add(e);const a=e,i={state:{},set(e,t){try{this.state[e]=t,s.setItem(a,JSON.stringify(this.state))}catch(e){console.error("Error setting item in storage:",e)}},get(e){return 0===Object.keys(this.state).length&&this.load(),this.state[e]},delete(e){try{Reflect.deleteProperty(this.state,e),s.setItem(a,JSON.stringify(this.state))}catch(e){console.error("Error deleting item in storage:",e)}},load(){try{const e=s.getItem(a);if(!e)return this.state={},void s.setItem(a,JSON.stringify(this.state));this.state=JSON.parse(e)}catch(e){console.error("Error loading state from storage:",e),this.state={}}},clear(){try{this.state={},s.removeItem(a)}catch(e){console.error("Error clearing storage:",e)}},...t};return i.load(),i}"undefined"!=typeof module?module.exports=i:self.ValyrianNativeStore=i})();//# sourceMappingURL=index.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuYXRpdmVfc3RvcmVfZXhwb3J0cyIsIl9fZXhwb3J0IiwiU3RvcmFnZVR5cGUiLCJjcmVhdGVOYXRpdmVTdG9yZSIsIl9fRVhQT1JUU19fIiwiaW1wb3J0X3ZhbHlyaWFuIiwicmVxdWlyZSIsImlkcyIsIlNldCIsImtleSIsImRlZmluaXRpb24iLCJzdG9yYWdlVHlwZSIsInJldXNlSWZFeGlzdCIsIm5hdGl2ZVN0b3JlIiwiaXNOb2RlSnMiLCJsb2NhbFN0b3JhZ2UiLCJFcnJvciIsInNlc3Npb25TdG9yYWdlIiwiZ2V0U3RvcmFnZSIsImhhcyIsImNvbnNvbGUiLCJ3YXJuIiwiYWRkIiwiaWQiLCJTdG9yZSIsInN0YXRlIiwic2V0IiwidmFsdWUiLCJ0aGlzIiwic2V0SXRlbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwiZXJyb3IiLCJnZXQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwibG9hZCIsIlJlZmxlY3QiLCJkZWxldGVQcm9wZXJ0eSIsImdldEl0ZW0iLCJwYXJzZSIsImNsZWFyIiwicmVtb3ZlSXRlbSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9uYXRpdmUtc3RvcmUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlSnMgfSBmcm9tIFwidmFseXJpYW4uanNcIjtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZVR5cGUge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgU2Vzc2lvbiA9IFwic2Vzc2lvblwiLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgTG9jYWwgPSBcImxvY2FsXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVTdG9yYWdlSW50ZXJmYWNlIHtcbiAgc3RhdGU6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0KGtleTogc3RyaW5nKTogYW55O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZGVsZXRlKGtleTogc3RyaW5nKTogdm9pZDtcbiAgbG9hZCgpOiB2b2lkO1xuICBjbGVhcigpOiB2b2lkO1xufVxuXG5jb25zdCBpZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuZnVuY3Rpb24gZ2V0U3RvcmFnZShzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUpIHtcbiAgaWYgKGlzTm9kZUpzICYmIHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgbG9jYWxTdG9yYWdlIGFuZCBzZXNzaW9uU3RvcmFnZSBhcmUgbm90IGF2YWlsYWJsZSBpbiBOb2RlLmpzLCB0byB1c2UgaXQgaW4geW91ciBwcm9qZWN0LCB5b3UgbmVlZCB0byBcImltcG9ydCBcInZhbHlyaWFuLmpzL25vZGVcImBcbiAgICApO1xuICB9XG4gIHJldHVybiBzdG9yYWdlVHlwZSA9PT0gU3RvcmFnZVR5cGUuU2Vzc2lvbiA/IHNlc3Npb25TdG9yYWdlIDogbG9jYWxTdG9yYWdlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmF0aXZlU3RvcmU8VD4oXG4gIGtleTogc3RyaW5nLFxuICBkZWZpbml0aW9uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gIHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZSA9IFN0b3JhZ2VUeXBlLkxvY2FsLFxuICByZXVzZUlmRXhpc3QgPSBmYWxzZVxuKTogTmF0aXZlU3RvcmFnZUludGVyZmFjZSAmIFQge1xuICBjb25zdCBuYXRpdmVTdG9yZSA9IGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUpO1xuXG4gIGlmIChpZHMuaGFzKGtleSkpIHtcbiAgICBpZiAocmV1c2VJZkV4aXN0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGBTdG9yZSB3aXRoIGtleSAke2tleX0gYWxyZWFkeSBleGlzdHMgYW5kIHdpbGwgYmUgcmV1c2VkYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3RvcmUgd2l0aCBrZXkgJHtrZXl9IGFscmVhZHkgZXhpc3RzYCk7XG4gICAgfVxuICB9XG4gIGlkcy5hZGQoa2V5KTtcblxuICBjb25zdCBpZCA9IGtleTtcblxuICBjb25zdCBTdG9yZTogTmF0aXZlU3RvcmFnZUludGVyZmFjZSA9IHtcbiAgICBzdGF0ZToge30sXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RhdGVba2V5XSA9IHZhbHVlO1xuICAgICAgICBuYXRpdmVTdG9yZS5zZXRJdGVtKGlkLCBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBzZXR0aW5nIGl0ZW0gaW4gc3RvcmFnZTpcIiwgZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXQoa2V5KSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zdGF0ZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVba2V5XTtcbiAgICB9LFxuICAgIGRlbGV0ZShrZXkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGhpcy5zdGF0ZSwga2V5KTtcbiAgICAgICAgbmF0aXZlU3RvcmUuc2V0SXRlbShpZCwgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZGVsZXRpbmcgaXRlbSBpbiBzdG9yYWdlOlwiLCBlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxvYWQoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5hdGl2ZVN0b3JlLmdldEl0ZW0oaWQpO1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IHt9O1xuICAgICAgICAgIG5hdGl2ZVN0b3JlLnNldEl0ZW0oaWQsIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IEpTT04ucGFyc2Uoc3RhdGUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgbG9hZGluZyBzdGF0ZSBmcm9tIHN0b3JhZ2U6XCIsIGUpO1xuICAgICAgICB0aGlzLnN0YXRlID0ge307XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICAgICAgbmF0aXZlU3RvcmUucmVtb3ZlSXRlbShpZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBjbGVhcmluZyBzdG9yYWdlOlwiLCBlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC4uLmRlZmluaXRpb25cbiAgfTtcblxuICBTdG9yZS5sb2FkKCk7XG5cbiAgcmV0dXJuIFN0b3JlIGFzIE5hdGl2ZVN0b3JhZ2VJbnRlcmZhY2UgJiBUO1xufVxuIl0sIm1hcHBpbmdzIjoiZ0pBQUFBLEVBQUEsRyx5REFBQUMsQ0FBQUQsRUFBQSxDQUFBRSxZQUFBLElBQUFBLEVBQUFDLGtCQUFBLElBQUFBLElBQUEsSSxFQUFBQyxHLEVBQUFKLEUsME1BQUFLLEVBQXlCQyxRQUFBLGVBR2JKLEVBQUwsQ0FBS0EsSUFFVkEsRUFBQSxRQUFVLFVBRVZBLEVBQUEsTUFBUSxRQUpFQSxHQUFMLENBQUtBLEdBQUEsSUFtQk5LLEVBQU0sSUFBSUMsSUFXVCxTQUFTTCxFQUNkTSxFQUNBQyxFQUFrQyxDQUFDLEVBQ25DQyxFQUEyQixRQUMzQkMsR0FBZSxHQUVmLE1BQU1DLEVBZlIsU0FBb0JGLEdBQ2xCLEdBQUlOLEVBQUFTLFVBQW9DLG9CQUFqQkMsYUFDckIsTUFBTSxJQUFJQyxNQUNSLG1JQUdKLE1BQXVCLFlBQWhCTCxFQUFzQ00sZUFBaUJGLFlBQ2hFLENBUXNCRyxDQUFXUCxHQUUvQixHQUFJSixFQUFJWSxJQUFJVixHQUFNLENBQ2hCLElBQUlHLEVBSUYsTUFBTSxJQUFJSSxNQUFNLGtCQUFrQlAsb0JBRmxDVyxRQUFRQyxLQUFLLGtCQUFrQlosc0NBSW5DLENBQ0FGLEVBQUllLElBQUliLEdBRVIsTUFBTWMsRUFBS2QsRUFFTGUsRUFBZ0MsQ0FDcENDLE1BQU8sQ0FBQyxFQUNSLEdBQUFDLENBQUlqQixFQUFLa0IsR0FDUCxJQUNFQyxLQUFLSCxNQUFNaEIsR0FBT2tCLEVBQ2xCZCxFQUFZZ0IsUUFBUU4sRUFBSU8sS0FBS0MsVUFBVUgsS0FBS0gsT0FDOUMsT0FBU08sR0FDUFosUUFBUWEsTUFBTSxpQ0FBa0NELEVBQ2xELENBQ0YsRUFDQSxHQUFBRSxDQUFJekIsR0FJRixPQUh1QyxJQUFuQzBCLE9BQU9DLEtBQUtSLEtBQUtILE9BQU9ZLFFBQzFCVCxLQUFLVSxPQUVBVixLQUFLSCxNQUFNaEIsRUFDcEIsRUFDQSxPQUFPQSxHQUNMLElBQ0U4QixRQUFRQyxlQUFlWixLQUFLSCxNQUFPaEIsR0FDbkNJLEVBQVlnQixRQUFRTixFQUFJTyxLQUFLQyxVQUFVSCxLQUFLSCxPQUM5QyxPQUFTTyxHQUNQWixRQUFRYSxNQUFNLGtDQUFtQ0QsRUFDbkQsQ0FDRixFQUNBLElBQUFNLEdBQ0UsSUFDRSxNQUFNYixFQUFRWixFQUFZNEIsUUFBUWxCLEdBQ2xDLElBQUtFLEVBR0gsT0FGQUcsS0FBS0gsTUFBUSxDQUFDLE9BQ2RaLEVBQVlnQixRQUFRTixFQUFJTyxLQUFLQyxVQUFVSCxLQUFLSCxRQUc5Q0csS0FBS0gsTUFBUUssS0FBS1ksTUFBTWpCLEVBQzFCLE9BQVNPLEdBQ1BaLFFBQVFhLE1BQU0sb0NBQXFDRCxHQUNuREosS0FBS0gsTUFBUSxDQUFDLENBQ2hCLENBQ0YsRUFDQSxLQUFBa0IsR0FDRSxJQUNFZixLQUFLSCxNQUFRLENBQUMsRUFDZFosRUFBWStCLFdBQVdyQixFQUN6QixPQUFTUyxHQUNQWixRQUFRYSxNQUFNLDBCQUEyQkQsRUFDM0MsQ0FDRixLQUNHdEIsR0FLTCxPQUZBYyxFQUFNYyxPQUVDZCxDQUNULEMifQ==
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// lib/native-store/index.ts
|
|
2
|
+
import { isNodeJs } from "valyrian.js";
|
|
3
|
+
var StorageType = /* @__PURE__ */ ((StorageType2) => {
|
|
4
|
+
StorageType2["Session"] = "session";
|
|
5
|
+
StorageType2["Local"] = "local";
|
|
6
|
+
return StorageType2;
|
|
7
|
+
})(StorageType || {});
|
|
8
|
+
var ids = /* @__PURE__ */ new Set();
|
|
9
|
+
function getStorage(storageType) {
|
|
10
|
+
if (isNodeJs && typeof localStorage === "undefined") {
|
|
11
|
+
throw new Error(
|
|
12
|
+
`localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to "import "valyrian.js/node"`
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
return storageType === "session" /* Session */ ? sessionStorage : localStorage;
|
|
16
|
+
}
|
|
17
|
+
function createNativeStore(key, definition = {}, storageType = "local" /* Local */, reuseIfExist = false) {
|
|
18
|
+
const nativeStore = getStorage(storageType);
|
|
19
|
+
if (ids.has(key)) {
|
|
20
|
+
if (reuseIfExist) {
|
|
21
|
+
console.warn(`Store with key ${key} already exists and will be reused`);
|
|
22
|
+
} else {
|
|
23
|
+
throw new Error(`Store with key ${key} already exists`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
ids.add(key);
|
|
27
|
+
const id = key;
|
|
28
|
+
const Store = {
|
|
29
|
+
state: {},
|
|
30
|
+
set(key2, value) {
|
|
31
|
+
try {
|
|
32
|
+
this.state[key2] = value;
|
|
33
|
+
nativeStore.setItem(id, JSON.stringify(this.state));
|
|
34
|
+
} catch (e) {
|
|
35
|
+
console.error("Error setting item in storage:", e);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
get(key2) {
|
|
39
|
+
if (Object.keys(this.state).length === 0) {
|
|
40
|
+
this.load();
|
|
41
|
+
}
|
|
42
|
+
return this.state[key2];
|
|
43
|
+
},
|
|
44
|
+
delete(key2) {
|
|
45
|
+
try {
|
|
46
|
+
Reflect.deleteProperty(this.state, key2);
|
|
47
|
+
nativeStore.setItem(id, JSON.stringify(this.state));
|
|
48
|
+
} catch (e) {
|
|
49
|
+
console.error("Error deleting item in storage:", e);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
load() {
|
|
53
|
+
try {
|
|
54
|
+
const state = nativeStore.getItem(id);
|
|
55
|
+
if (!state) {
|
|
56
|
+
this.state = {};
|
|
57
|
+
nativeStore.setItem(id, JSON.stringify(this.state));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this.state = JSON.parse(state);
|
|
61
|
+
} catch (e) {
|
|
62
|
+
console.error("Error loading state from storage:", e);
|
|
63
|
+
this.state = {};
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
clear() {
|
|
67
|
+
try {
|
|
68
|
+
this.state = {};
|
|
69
|
+
nativeStore.removeItem(id);
|
|
70
|
+
} catch (e) {
|
|
71
|
+
console.error("Error clearing storage:", e);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
...definition
|
|
75
|
+
};
|
|
76
|
+
Store.load();
|
|
77
|
+
return Store;
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
StorageType,
|
|
81
|
+
createNativeStore
|
|
82
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../lib/native-store/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { isNodeJs } from \"valyrian.js\";\n\n/* eslint-disable no-console */\nexport enum StorageType {\n // eslint-disable-next-line no-unused-vars\n Session = \"session\",\n // eslint-disable-next-line no-unused-vars\n Local = \"local\"\n}\n\nexport interface NativeStorageInterface {\n state: Record<string, any>;\n // eslint-disable-next-line no-unused-vars\n set(key: string, value: any): void;\n // eslint-disable-next-line no-unused-vars\n get(key: string): any;\n // eslint-disable-next-line no-unused-vars\n delete(key: string): void;\n load(): void;\n clear(): void;\n}\n\nconst ids = new Set<string>();\n\nfunction getStorage(storageType: StorageType) {\n if (isNodeJs && typeof localStorage === \"undefined\") {\n throw new Error(\n `localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to \"import \"valyrian.js/node\"`\n );\n }\n return storageType === StorageType.Session ? sessionStorage : localStorage;\n}\n\nexport function createNativeStore<T>(\n key: string,\n definition: Record<string, any> = {},\n storageType: StorageType = StorageType.Local,\n reuseIfExist = false\n): NativeStorageInterface & T {\n const nativeStore = getStorage(storageType);\n\n if (ids.has(key)) {\n if (reuseIfExist) {\n // eslint-disable-next-line no-console\n console.warn(`Store with key ${key} already exists and will be reused`);\n } else {\n throw new Error(`Store with key ${key} already exists`);\n }\n }\n ids.add(key);\n\n const id = key;\n\n const Store: NativeStorageInterface = {\n state: {},\n set(key, value) {\n try {\n this.state[key] = value;\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error setting item in storage:\", e);\n }\n },\n get(key) {\n if (Object.keys(this.state).length === 0) {\n this.load();\n }\n return this.state[key];\n },\n delete(key) {\n try {\n Reflect.deleteProperty(this.state, key);\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error deleting item in storage:\", e);\n }\n },\n load() {\n try {\n const state = nativeStore.getItem(id);\n if (!state) {\n this.state = {};\n nativeStore.setItem(id, JSON.stringify(this.state));\n return;\n }\n this.state = JSON.parse(state);\n } catch (e) {\n console.error(\"Error loading state from storage:\", e);\n this.state = {};\n }\n },\n clear() {\n try {\n this.state = {};\n nativeStore.removeItem(id);\n } catch (e) {\n console.error(\"Error clearing storage:\", e);\n }\n },\n ...definition\n };\n\n Store.load();\n\n return Store as NativeStorageInterface & T;\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,gBAAgB;AAGlB,IAAK,cAAL,kBAAKA,iBAAL;AAEL,EAAAA,aAAA,aAAU;AAEV,EAAAA,aAAA,WAAQ;AAJE,SAAAA;AAAA,GAAA;AAmBZ,IAAM,MAAM,oBAAI,IAAY;AAE5B,SAAS,WAAW,aAA0B;AAC5C,MAAI,YAAY,OAAO,iBAAiB,aAAa;AACnD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,gBAAgB,0BAAsB,iBAAiB;AAChE;AAEO,SAAS,kBACd,KACA,aAAkC,CAAC,GACnC,cAA2B,qBAC3B,eAAe,OACa;AAC5B,QAAM,cAAc,WAAW,WAAW;AAE1C,MAAI,IAAI,IAAI,GAAG,GAAG;AAChB,QAAI,cAAc;AAEhB,cAAQ,KAAK,kBAAkB,GAAG,oCAAoC;AAAA,IACxE,OAAO;AACL,YAAM,IAAI,MAAM,kBAAkB,GAAG,iBAAiB;AAAA,IACxD;AAAA,EACF;AACA,MAAI,IAAI,GAAG;AAEX,QAAM,KAAK;AAEX,QAAM,QAAgC;AAAA,IACpC,OAAO,CAAC;AAAA,IACR,IAAIC,MAAK,OAAO;AACd,UAAI;AACF,aAAK,MAAMA,IAAG,IAAI;AAClB,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,kCAAkC,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,IACA,IAAIA,MAAK;AACP,UAAI,OAAO,KAAK,KAAK,KAAK,EAAE,WAAW,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,aAAO,KAAK,MAAMA,IAAG;AAAA,IACvB;AAAA,IACA,OAAOA,MAAK;AACV,UAAI;AACF,gBAAQ,eAAe,KAAK,OAAOA,IAAG;AACtC,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,mCAAmC,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAI;AACF,cAAM,QAAQ,YAAY,QAAQ,EAAE;AACpC,YAAI,CAAC,OAAO;AACV,eAAK,QAAQ,CAAC;AACd,sBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAClD;AAAA,QACF;AACA,aAAK,QAAQ,KAAK,MAAM,KAAK;AAAA,MAC/B,SAAS,GAAG;AACV,gBAAQ,MAAM,qCAAqC,CAAC;AACpD,aAAK,QAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IACA,QAAQ;AACN,UAAI;AACF,aAAK,QAAQ,CAAC;AACd,oBAAY,WAAW,EAAE;AAAA,MAC3B,SAAS,GAAG;AACV,gBAAQ,MAAM,2BAA2B,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,GAAG;AAAA,EACL;AAEA,QAAM,KAAK;AAEX,SAAO;AACT;",
|
|
6
|
+
"names": ["StorageType", "key"]
|
|
7
|
+
}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ import { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript } from "./uti
|
|
|
2
2
|
import { icons } from "./utils/icons";
|
|
3
3
|
import { inline } from "./utils/inline";
|
|
4
4
|
import { sw } from "./utils/sw";
|
|
5
|
-
declare function render(...args: any[]): string
|
|
5
|
+
declare function render(...args: any[]): string;
|
|
6
6
|
export { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render };
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI3G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAQhC,iBAAS,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,UAK7B;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/node/index.js
CHANGED
|
@@ -88,6 +88,13 @@ var Node = class _Node {
|
|
|
88
88
|
set parentNode(node) {
|
|
89
89
|
this.parent_node = node;
|
|
90
90
|
}
|
|
91
|
+
#dataset = {};
|
|
92
|
+
get dataset() {
|
|
93
|
+
return this.#dataset;
|
|
94
|
+
}
|
|
95
|
+
set dataset(value) {
|
|
96
|
+
this.#dataset = value;
|
|
97
|
+
}
|
|
91
98
|
constructor() {
|
|
92
99
|
}
|
|
93
100
|
appendChild(node) {
|
|
@@ -142,6 +149,9 @@ var Node = class _Node {
|
|
|
142
149
|
node2.setAttribute(this.attributes[i].nodeName, this.attributes[i].nodeValue);
|
|
143
150
|
}
|
|
144
151
|
}
|
|
152
|
+
for (const key in this.dataset) {
|
|
153
|
+
node2.dataset[key] = this.dataset[key];
|
|
154
|
+
}
|
|
145
155
|
if (deep) {
|
|
146
156
|
for (let i = 0, l = this.childNodes.length; i < l; i++) {
|
|
147
157
|
node2.appendChild(this.childNodes[i].cloneNode(deep));
|
|
@@ -413,7 +423,9 @@ var Document = class extends Element {
|
|
|
413
423
|
super();
|
|
414
424
|
this.nodeType = 9;
|
|
415
425
|
this.nodeName = "#document";
|
|
426
|
+
this.body = this.createElement("body");
|
|
416
427
|
}
|
|
428
|
+
body;
|
|
417
429
|
createDocumentFragment() {
|
|
418
430
|
return new DocumentFragment();
|
|
419
431
|
}
|
|
@@ -891,6 +903,7 @@ async function inline(file, options = {}) {
|
|
|
891
903
|
} else if (typeof file === "object" && "raw" in file) {
|
|
892
904
|
return { map: null, ...file };
|
|
893
905
|
}
|
|
906
|
+
throw new Error(`Unknown file type: ${file}`);
|
|
894
907
|
}
|
|
895
908
|
inline.uncss = async function(renderedHtml, css, options = {}) {
|
|
896
909
|
const html = await Promise.all(renderedHtml);
|
|
@@ -930,17 +943,15 @@ inline.uncss = async function(renderedHtml, css, options = {}) {
|
|
|
930
943
|
var import_fs3 = __toESM(require("fs"));
|
|
931
944
|
var import_path = __toESM(require("path"));
|
|
932
945
|
function sw(file, options = {}) {
|
|
933
|
-
const swfiletemplate = import_path.default.resolve(__dirname, "./node.sw.
|
|
946
|
+
const swfiletemplate = import_path.default.resolve(__dirname, "./node.sw.js");
|
|
934
947
|
const swTpl = import_fs3.default.readFileSync(swfiletemplate, "utf8");
|
|
935
|
-
const opt =
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
options
|
|
943
|
-
);
|
|
948
|
+
const opt = {
|
|
949
|
+
version: "v1::",
|
|
950
|
+
name: "Valyrian.js",
|
|
951
|
+
urls: ["/"],
|
|
952
|
+
debug: false,
|
|
953
|
+
...options
|
|
954
|
+
};
|
|
944
955
|
let contents = swTpl.replace("v1::", "v" + opt.version + "::").replace("Valyrian.js", opt.name).replace("['/']", '["' + opt.urls.join('","') + '"]');
|
|
945
956
|
if (!opt.debug) {
|
|
946
957
|
contents = contents.replace("console.log", "() => {}");
|
|
@@ -948,9 +959,113 @@ function sw(file, options = {}) {
|
|
|
948
959
|
import_fs3.default.writeFileSync(file, contents, "utf8");
|
|
949
960
|
}
|
|
950
961
|
|
|
962
|
+
// lib/node/utils/session-storage.ts
|
|
963
|
+
var import_fs4 = __toESM(require("fs"));
|
|
964
|
+
var import_path2 = __toESM(require("path"));
|
|
965
|
+
var SessionStorage = class {
|
|
966
|
+
storage;
|
|
967
|
+
limit;
|
|
968
|
+
persist;
|
|
969
|
+
filePath;
|
|
970
|
+
directory = ".session-storage";
|
|
971
|
+
constructor({ persist = false, filePath = "./sessionData.json" } = {}) {
|
|
972
|
+
this.storage = {};
|
|
973
|
+
this.limit = 5 * 1024 * 1024;
|
|
974
|
+
this.persist = persist;
|
|
975
|
+
this.filePath = import_path2.default.resolve(this.directory, filePath);
|
|
976
|
+
if (!import_fs4.default.existsSync(this.directory)) {
|
|
977
|
+
import_fs4.default.mkdirSync(this.directory, { recursive: true });
|
|
978
|
+
}
|
|
979
|
+
if (this.persist) {
|
|
980
|
+
this.loadFromFile();
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
// Calculate total size in bytes of stored data
|
|
984
|
+
getStorageSize() {
|
|
985
|
+
return new TextEncoder().encode(JSON.stringify(this.storage)).length;
|
|
986
|
+
}
|
|
987
|
+
// Check if storage limit is exceeded
|
|
988
|
+
checkSizeLimit() {
|
|
989
|
+
const size = this.getStorageSize();
|
|
990
|
+
if (size > this.limit) {
|
|
991
|
+
throw new DOMException("Storage limit exceeded", "QuotaExceededError");
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
// Store value under the specified key
|
|
995
|
+
setItem(key, value) {
|
|
996
|
+
if (key === null || key === void 0) {
|
|
997
|
+
throw new TypeError("Failed to execute 'setItem' on 'Storage': 1 argument required, but only 0 present.");
|
|
998
|
+
}
|
|
999
|
+
if (value === null) {
|
|
1000
|
+
value = "null";
|
|
1001
|
+
} else if (value === void 0) {
|
|
1002
|
+
value = "undefined";
|
|
1003
|
+
}
|
|
1004
|
+
this.storage[key] = String(value);
|
|
1005
|
+
this.checkSizeLimit();
|
|
1006
|
+
if (this.persist) {
|
|
1007
|
+
this.saveToFile();
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
// Retrieve value stored under the specified key
|
|
1011
|
+
getItem(key) {
|
|
1012
|
+
if (key === null || key === void 0) {
|
|
1013
|
+
throw new TypeError("Failed to execute 'getItem' on 'Storage': 1 argument required, but only 0 present.");
|
|
1014
|
+
}
|
|
1015
|
+
return this.storage[key] || null;
|
|
1016
|
+
}
|
|
1017
|
+
// Remove the value under the specified key
|
|
1018
|
+
removeItem(key) {
|
|
1019
|
+
if (key === null || key === void 0) {
|
|
1020
|
+
throw new TypeError("Failed to execute 'removeItem' on 'Storage': 1 argument required, but only 0 present.");
|
|
1021
|
+
}
|
|
1022
|
+
delete this.storage[key];
|
|
1023
|
+
if (this.persist) {
|
|
1024
|
+
this.saveToFile();
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
// Clear all stored values
|
|
1028
|
+
clear() {
|
|
1029
|
+
this.storage = {};
|
|
1030
|
+
if (this.persist) {
|
|
1031
|
+
this.saveToFile();
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
// Return the number of stored items
|
|
1035
|
+
get length() {
|
|
1036
|
+
return Object.keys(this.storage).length;
|
|
1037
|
+
}
|
|
1038
|
+
// Return the key at the specified index
|
|
1039
|
+
key(index) {
|
|
1040
|
+
const keys = Object.keys(this.storage);
|
|
1041
|
+
return keys[index] || null;
|
|
1042
|
+
}
|
|
1043
|
+
// Save data to a file (only if persistence is enabled)
|
|
1044
|
+
saveToFile() {
|
|
1045
|
+
try {
|
|
1046
|
+
import_fs4.default.writeFileSync(this.filePath, JSON.stringify(this.storage), "utf-8");
|
|
1047
|
+
} catch (error) {
|
|
1048
|
+
throw new Error(`Error saving data to file: ${error.message}`);
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
// Load data from a file (only if persistence is enabled)
|
|
1052
|
+
loadFromFile() {
|
|
1053
|
+
try {
|
|
1054
|
+
if (import_fs4.default.existsSync(this.filePath)) {
|
|
1055
|
+
const data = import_fs4.default.readFileSync(this.filePath, "utf-8");
|
|
1056
|
+
this.storage = JSON.parse(data || "{}");
|
|
1057
|
+
}
|
|
1058
|
+
} catch (error) {
|
|
1059
|
+
throw new Error(`Error loading data from file: ${error.message}`);
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
};
|
|
1063
|
+
|
|
951
1064
|
// lib/node/index.ts
|
|
952
1065
|
global.FormData = import_form_data.default;
|
|
953
1066
|
global.document = document;
|
|
1067
|
+
global.sessionStorage = new SessionStorage();
|
|
1068
|
+
global.localStorage = new SessionStorage();
|
|
954
1069
|
function render(...args) {
|
|
955
1070
|
const Component = () => args;
|
|
956
1071
|
const result = (0, import_valyrian.mount)("div", Component);
|