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
@@ -0,0 +1,129 @@
1
+ // lib/translate/index.ts
2
+ import { directive, setPropNameReserved, update } from "valyrian.js";
3
+ import { get } from "valyrian.js/utils";
4
+ var translations = {};
5
+ var lang = "en";
6
+ function t(path, params) {
7
+ const langDef = translations[lang];
8
+ const translation = get(langDef, path);
9
+ if (typeof translation !== "string") {
10
+ console.warn(`Translation not found for ${path}`);
11
+ return path;
12
+ }
13
+ if (!params) {
14
+ return translation;
15
+ }
16
+ return translation.replace(/{(\w+)}/g, (_, key) => {
17
+ if (key in params) {
18
+ return params[key];
19
+ }
20
+ return `{${key}}`;
21
+ });
22
+ }
23
+ function setTranslations(defaultTranslation, newTranslations = {}) {
24
+ for (const lang2 in translations) {
25
+ Reflect.deleteProperty(translations, lang2);
26
+ }
27
+ translations.en = { ...defaultTranslation };
28
+ for (const lang2 in newTranslations) {
29
+ translations[lang2] = {
30
+ ...defaultTranslation,
31
+ ...newTranslations[lang2]
32
+ };
33
+ }
34
+ update();
35
+ }
36
+ function getTranslations() {
37
+ return translations;
38
+ }
39
+ function setLang(newLang) {
40
+ if (typeof newLang !== "string") {
41
+ throw new Error(`Language ${newLang} not found`);
42
+ }
43
+ const parsedLang = newLang.toLowerCase().split("-").shift()?.split("_").shift();
44
+ if (typeof parsedLang !== "string") {
45
+ throw new Error(`Language ${newLang} not found`);
46
+ }
47
+ if (!translations[parsedLang]) {
48
+ throw new Error(`Language ${newLang} not found`);
49
+ }
50
+ lang = parsedLang;
51
+ update();
52
+ }
53
+ function getLang() {
54
+ return lang;
55
+ }
56
+ var NumberFormatter = class _NumberFormatter {
57
+ #value = 0;
58
+ get value() {
59
+ return this.#value;
60
+ }
61
+ constructor() {
62
+ }
63
+ set(newValue, shiftDecimal = false) {
64
+ this.#value = this.clean(newValue, shiftDecimal);
65
+ return this;
66
+ }
67
+ clean(value, shiftDecimal = false) {
68
+ let stringNumber = String(value).replace(/[^0-9.-]+/g, "");
69
+ if (shiftDecimal) {
70
+ stringNumber = stringNumber.replace(/\./g, "");
71
+ }
72
+ const number = Number(stringNumber);
73
+ return isNaN(number) ? 0 : number;
74
+ }
75
+ format(digits = 2, options = {}, customLocale) {
76
+ const lang2 = customLocale || getLang();
77
+ const formatter = new Intl.NumberFormat(lang2, {
78
+ style: "currency",
79
+ currency: "USD",
80
+ minimumFractionDigits: digits,
81
+ maximumFractionDigits: digits,
82
+ ...options
83
+ });
84
+ return formatter.format(this.#value);
85
+ }
86
+ fromDecimalPlaces(decimalPlaces) {
87
+ const currentDecimalPlaces = this.getDecimalPlaces();
88
+ const factor = Math.pow(10, decimalPlaces - currentDecimalPlaces);
89
+ this.#value = Number((this.#value / factor).toFixed(decimalPlaces));
90
+ return this;
91
+ }
92
+ // Ex toDecimalPlaces(1) = 123.456 -> 12345.6
93
+ toDecimalPlaces(decimalPlaces) {
94
+ const currentDecimalPlaces = this.getDecimalPlaces();
95
+ const factor = Math.pow(10, currentDecimalPlaces - decimalPlaces);
96
+ this.#value = Number((this.#value * factor).toFixed(decimalPlaces));
97
+ return this;
98
+ }
99
+ getDecimalPlaces() {
100
+ if (Math.floor(this.#value) === this.#value) {
101
+ return 0;
102
+ }
103
+ const stringValue = String(this.#value);
104
+ const decimalIndex = stringValue.indexOf(".");
105
+ return decimalIndex === -1 ? 0 : stringValue.length - decimalIndex - 1;
106
+ }
107
+ shiftDecimalPlaces() {
108
+ return this.toDecimalPlaces(0);
109
+ }
110
+ static create(value = 0, shiftDecimal = false) {
111
+ const formatter = new _NumberFormatter();
112
+ return formatter.set(value, shiftDecimal);
113
+ }
114
+ };
115
+ directive("t", (value, vnode) => {
116
+ const keys = typeof value === "string" ? [value] : vnode.children;
117
+ const params = vnode.props["v-t-params"] || {};
118
+ const children = keys.map((key) => typeof key === "string" && key.trim().length > 1 ? t(key.trim(), params) : key);
119
+ vnode.children = children;
120
+ });
121
+ setPropNameReserved("v-t-params");
122
+ export {
123
+ NumberFormatter,
124
+ getLang,
125
+ getTranslations,
126
+ setLang,
127
+ setTranslations,
128
+ t
129
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../lib/translate/index.ts"],
4
+ "sourcesContent": ["import { directive, setPropNameReserved, update, VnodeWithDom } from \"valyrian.js\";\nimport { get } from \"valyrian.js/utils\";\n\nconst translations: Record<string, Record<string, any>> = {};\nlet lang = \"en\";\n\nexport function t(path: string, params?: Record<string, string>): string {\n const langDef = translations[lang];\n const translation = get(langDef, path);\n\n if (typeof translation !== \"string\") {\n // eslint-disable-next-line no-console\n console.warn(`Translation not found for ${path}`);\n return path;\n }\n\n if (!params) {\n return translation;\n }\n\n return translation.replace(/{(\\w+)}/g, (_, key) => {\n if (key in params) {\n return params[key];\n }\n return `{${key}}`;\n });\n}\n\nexport function setTranslations(\n defaultTranslation: Record<string, any>,\n newTranslations: Record<string, Record<string, any>> = {}\n) {\n for (const lang in translations) {\n Reflect.deleteProperty(translations, lang);\n }\n\n translations.en = { ...defaultTranslation };\n\n for (const lang in newTranslations) {\n translations[lang] = {\n ...defaultTranslation,\n ...newTranslations[lang]\n };\n }\n update();\n}\n\nexport function getTranslations(): Record<string, Record<string, any>> {\n return translations;\n}\n\nexport function setLang(newLang: string): void {\n if (typeof newLang !== \"string\") {\n throw new Error(`Language ${newLang} not found`);\n }\n\n const parsedLang = newLang.toLowerCase().split(\"-\").shift()?.split(\"_\").shift();\n\n if (typeof parsedLang !== \"string\") {\n throw new Error(`Language ${newLang} not found`);\n }\n\n if (!translations[parsedLang]) {\n throw new Error(`Language ${newLang} not found`);\n }\n\n lang = parsedLang;\n update();\n}\n\nexport function getLang(): string {\n return lang;\n}\n\nexport class NumberFormatter {\n #value: number = 0;\n\n get value(): number {\n return this.#value;\n }\n\n private constructor() {}\n\n public set(newValue: number | string, shiftDecimal = false) {\n this.#value = this.clean(newValue, shiftDecimal);\n return this;\n }\n\n private clean(value: string | number, shiftDecimal = false): number {\n let stringNumber = String(value).replace(/[^0-9.-]+/g, \"\");\n\n if (shiftDecimal) {\n stringNumber = stringNumber.replace(/\\./g, \"\");\n }\n\n const number = Number(stringNumber);\n\n return isNaN(number) ? 0 : number;\n }\n\n format(digits = 2, options: Intl.NumberFormatOptions = {}, customLocale?: Intl.LocalesArgument): string {\n const lang = customLocale || getLang();\n const formatter = new Intl.NumberFormat(lang as string, {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n ...options\n });\n\n return formatter.format(this.#value);\n }\n\n fromDecimalPlaces(decimalPlaces: number) {\n const currentDecimalPlaces = this.getDecimalPlaces();\n const factor = Math.pow(10, decimalPlaces - currentDecimalPlaces);\n this.#value = Number((this.#value / factor).toFixed(decimalPlaces));\n return this;\n }\n\n // Ex toDecimalPlaces(1) = 123.456 -> 12345.6\n toDecimalPlaces(decimalPlaces: number) {\n const currentDecimalPlaces = this.getDecimalPlaces();\n const factor = Math.pow(10, currentDecimalPlaces - decimalPlaces);\n this.#value = Number((this.#value * factor).toFixed(decimalPlaces));\n return this;\n }\n\n getDecimalPlaces(): number {\n if (Math.floor(this.#value) === this.#value) {\n return 0;\n }\n\n const stringValue = String(this.#value);\n const decimalIndex = stringValue.indexOf(\".\");\n return decimalIndex === -1 ? 0 : stringValue.length - decimalIndex - 1;\n }\n\n shiftDecimalPlaces() {\n return this.toDecimalPlaces(0);\n }\n\n static create(value: number | string = 0, shiftDecimal = false): NumberFormatter {\n const formatter = new NumberFormatter();\n return formatter.set(value, shiftDecimal);\n }\n}\n\ndirective(\"t\", (value: string | null, vnode: VnodeWithDom): void => {\n const keys = typeof value === \"string\" ? [value] : vnode.children;\n const params = vnode.props[\"v-t-params\"] || {};\n const children = keys.map((key) => (typeof key === \"string\" && key.trim().length > 1 ? t(key.trim(), params) : key));\n vnode.children = children;\n});\n\nsetPropNameReserved(\"v-t-params\");\n"],
5
+ "mappings": "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",
6
+ "names": ["lang"]
7
+ }
@@ -1 +1 @@
1
- {"version":"5.2.2"}
1
+ {"version":"5.7.2"}
@@ -0,0 +1,3 @@
1
+ export declare function deepFreeze(obj: any): any;
2
+ export declare function deepCloneUnfreeze<T>(obj: T): T;
3
+ //# sourceMappingURL=deep-freeze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-freeze.d.ts","sourceRoot":"","sources":["../../lib/utils/deep-freeze.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAsBxC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CA6B9C"}
@@ -0,0 +1,3 @@
1
+ export declare function get(obj: unknown, path: string, defaultValue?: unknown): any;
2
+ export declare function set(obj: any, path: string, value: any): void;
3
+ //# sourceMappingURL=getter-setter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getter-setter.d.ts","sourceRoot":"","sources":["../../lib/utils/getter-setter.ts"],"names":[],"mappings":"AAEA,wBAAgB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,OAYrE;AAID,wBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAqBrD"}
@@ -0,0 +1,2 @@
1
+ export declare function hasChanged(prev: any, current: any): boolean;
2
+ //# sourceMappingURL=has-changed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-changed.d.ts","sourceRoot":"","sources":["../../lib/utils/has-changed.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAwCjD"}
@@ -0,0 +1,4 @@
1
+ export * from "./getter-setter";
2
+ export * from "./has-changed";
3
+ export * from "./deep-freeze";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,138 @@
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/utils/index.ts
21
+ var utils_exports = {};
22
+ __export(utils_exports, {
23
+ deepCloneUnfreeze: () => deepCloneUnfreeze,
24
+ deepFreeze: () => deepFreeze,
25
+ get: () => get,
26
+ hasChanged: () => hasChanged,
27
+ set: () => set
28
+ });
29
+ module.exports = __toCommonJS(utils_exports);
30
+
31
+ // lib/utils/getter-setter.ts
32
+ function get(obj, path, defaultValue) {
33
+ if (!path || typeof path !== "string" || !obj || typeof obj !== "object") {
34
+ return defaultValue;
35
+ }
36
+ const result = path.split(".").reduce((acc, part) => acc && acc?.[part], obj);
37
+ if (typeof result === "undefined") {
38
+ return defaultValue || null;
39
+ }
40
+ return result;
41
+ }
42
+ function set(obj, path, value) {
43
+ if (!path || typeof path !== "string" || !obj || typeof obj !== "object") {
44
+ return;
45
+ }
46
+ const parts = path.split(".");
47
+ const last = parts.pop();
48
+ if (!last) {
49
+ return;
50
+ }
51
+ let target = obj;
52
+ for (const part of parts) {
53
+ if (!target[part]) {
54
+ target[part] = {};
55
+ }
56
+ target = target[part];
57
+ }
58
+ target[last] = value;
59
+ }
60
+
61
+ // lib/utils/has-changed.ts
62
+ function hasChanged(prev, current) {
63
+ if (Array.isArray(prev)) {
64
+ if (Array.isArray(current) === false) {
65
+ return true;
66
+ }
67
+ if (prev.length !== current.length) {
68
+ return true;
69
+ }
70
+ for (let i = 0; i < current.length; i++) {
71
+ if (hasChanged(prev[i], current[i])) {
72
+ return true;
73
+ }
74
+ }
75
+ return false;
76
+ }
77
+ if (typeof prev === "object" && prev !== null) {
78
+ if (typeof current !== "object" || current === null) {
79
+ return true;
80
+ }
81
+ for (const key in current) {
82
+ if (hasChanged(prev[key], current[key])) {
83
+ return true;
84
+ }
85
+ }
86
+ for (const key in prev) {
87
+ if (hasChanged(prev[key], current[key])) {
88
+ return true;
89
+ }
90
+ }
91
+ return false;
92
+ }
93
+ return Object.is(prev, current) === false;
94
+ }
95
+
96
+ // lib/utils/deep-freeze.ts
97
+ function deepFreeze(obj) {
98
+ if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
99
+ if (Array.isArray(obj)) {
100
+ for (let i = 0, l = obj.length; i < l; i++) {
101
+ deepFreeze(obj[i]);
102
+ }
103
+ } else {
104
+ const props = Reflect.ownKeys(obj);
105
+ for (let i = 0, l = props.length; i < l; i++) {
106
+ deepFreeze(obj[props[i]]);
107
+ }
108
+ const proto = Object.getPrototypeOf(obj);
109
+ if (proto && proto !== Object.prototype) {
110
+ deepFreeze(proto);
111
+ }
112
+ }
113
+ Object.freeze(obj);
114
+ }
115
+ return obj;
116
+ }
117
+ function deepCloneUnfreeze(obj) {
118
+ if (typeof obj === "undefined" || obj === null || typeof obj !== "object") {
119
+ return obj;
120
+ }
121
+ if (obj.constructor && obj.constructor !== Object && obj.constructor !== Array) {
122
+ const clone2 = Reflect.construct(obj.constructor, []);
123
+ for (const key of Reflect.ownKeys(obj)) {
124
+ const value = obj[key];
125
+ clone2[key] = deepCloneUnfreeze(value);
126
+ }
127
+ return clone2;
128
+ }
129
+ if (Array.isArray(obj)) {
130
+ return obj.map((item) => deepCloneUnfreeze(item));
131
+ }
132
+ const clone = {};
133
+ for (const key of Reflect.ownKeys(obj)) {
134
+ const value = obj[key];
135
+ clone[key] = deepCloneUnfreeze(value);
136
+ }
137
+ return clone;
138
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../lib/utils/index.ts", "../../lib/utils/getter-setter.ts", "../../lib/utils/has-changed.ts", "../../lib/utils/deep-freeze.ts"],
4
+ "sourcesContent": ["export * from \"./getter-setter\";\nexport * from \"./has-changed\";\nexport * from \"./deep-freeze\";\n", "// Dot notation: get(obj, 'a.b.c' ) === obj.a.b.c\n// get(obj, 'a.0.c') === obj.a[0].c\nexport function get(obj: unknown, path: string, defaultValue?: unknown) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return defaultValue;\n }\n\n const result = path.split(\".\").reduce((acc: any, part) => acc && acc?.[part], obj);\n\n if (typeof result === \"undefined\") {\n return defaultValue || null;\n }\n\n return result;\n}\n\n// Dot notation: set(obj, 'a.b.c', value) === obj.a.b.c = value\n// set(obj, 'a.0.c', value) === obj.a[0].c = value\nexport function set(obj: any, path: string, value: any) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return;\n }\n\n const parts = path.split(\".\");\n const last = parts.pop();\n\n if (!last) {\n return;\n }\n\n let target = obj;\n for (const part of parts) {\n if (!target[part]) {\n target[part] = {};\n }\n target = target[part];\n }\n\n target[last] = value;\n}\n", "// Utility function to check if dependencies have changed recursively\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function hasChanged(prev: any, current: any) {\n if (Array.isArray(prev)) {\n if (Array.isArray(current) === false) {\n return true;\n }\n\n if (prev.length !== current.length) {\n return true;\n }\n\n for (let i = 0; i < current.length; i++) {\n if (hasChanged(prev[i], current[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n if (typeof prev === \"object\" && prev !== null) {\n if (typeof current !== \"object\" || current === null) {\n return true;\n }\n\n for (const key in current) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n for (const key in prev) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n return false;\n }\n\n return Object.is(prev, current) === false;\n}\n", "export function deepFreeze(obj: any): 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 // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype\n const proto = Object.getPrototypeOf(obj);\n if (proto && proto !== Object.prototype) {\n deepFreeze(proto);\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport function deepCloneUnfreeze<T>(obj: T): T {\n if (typeof obj === \"undefined\" || obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n // If the object is an instance of a class (not a plain object or array) we need to clone it\n // This could not work with classes that have required parameters in the constructor\n if (obj.constructor && obj.constructor !== Object && obj.constructor !== Array) {\n const clone = Reflect.construct(obj.constructor, []);\n\n for (const key of Reflect.ownKeys(obj)) {\n const value = (obj as Record<string | symbol, any>)[key];\n (clone as Record<string | symbol, any>)[key] = deepCloneUnfreeze(value);\n }\n\n return clone;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => deepCloneUnfreeze(item)) as unknown as T;\n }\n\n const clone = {} as T;\n for (const key of Reflect.ownKeys(obj)) {\n const value = (obj as Record<string | symbol, any>)[key];\n (clone as Record<string | symbol, any>)[key] = deepCloneUnfreeze(value);\n }\n\n return clone;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["clone"]
7
+ }
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,n={};((t,r)=>{for(var o in r)e(t,o,{get:r[o],enumerable:!0})})(n,{deepCloneUnfreeze:()=>y,deepFreeze:()=>l,get:()=>u,hasChanged:()=>s,set:()=>i});var f,c=(f=n,((n,f,c,u)=>{if(f&&"object"==typeof f||"function"==typeof f)for(let i of r(f))o.call(n,i)||i===c||e(n,i,{get:()=>f[i],enumerable:!(u=t(f,i))||u.enumerable});return n})(e({},"__esModule",{value:!0}),f));function u(e,t,r){if(!t||"string"!=typeof t||!e||"object"!=typeof e)return r;const o=t.split(".").reduce((e,t)=>e&&e?.[t],e);return void 0===o?r||null:o}function i(e,t,r){if(!t||"string"!=typeof t||!e||"object"!=typeof e)return;const o=t.split("."),n=o.pop();if(!n)return;let f=e;for(const e of o)f[e]||(f[e]={}),f=f[e];f[n]=r}function s(e,t){if(Array.isArray(e)){if(!1===Array.isArray(t))return!0;if(e.length!==t.length)return!0;for(let r=0;r<t.length;r++)if(s(e[r],t[r]))return!0;return!1}if("object"==typeof e&&null!==e){if("object"!=typeof t||null===t)return!0;for(const r in t)if(s(e[r],t[r]))return!0;for(const r in e)if(s(e[r],t[r]))return!0;return!1}return!1===Object.is(e,t)}function l(e){if("object"==typeof e&&null!==e&&!Object.isFrozen(e)){if(Array.isArray(e))for(let t=0,r=e.length;t<r;t++)l(e[t]);else{const t=Reflect.ownKeys(e);for(let r=0,o=t.length;r<o;r++)l(e[t[r]]);const r=Object.getPrototypeOf(e);r&&r!==Object.prototype&&l(r)}Object.freeze(e)}return e}function y(e){if(null==e||"object"!=typeof e)return e;if(e.constructor&&e.constructor!==Object&&e.constructor!==Array){const t=Reflect.construct(e.constructor,[]);for(const r of Reflect.ownKeys(e)){const o=e[r];t[r]=y(o)}return t}if(Array.isArray(e))return e.map(e=>y(e));const t={};for(const r of Reflect.ownKeys(e)){const o=e[r];t[r]=y(o)}return t}"undefined"!=typeof module?module.exports=c:self.ValyrianUtils=c})();//# sourceMappingURL=index.min.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1dGlsc19leHBvcnRzIiwiX19leHBvcnQiLCJkZWVwQ2xvbmVVbmZyZWV6ZSIsImRlZXBGcmVlemUiLCJnZXQiLCJoYXNDaGFuZ2VkIiwic2V0IiwiX19FWFBPUlRTX18iLCJvYmoiLCJwYXRoIiwiZGVmYXVsdFZhbHVlIiwicmVzdWx0Iiwic3BsaXQiLCJyZWR1Y2UiLCJhY2MiLCJwYXJ0IiwidmFsdWUiLCJwYXJ0cyIsImxhc3QiLCJwb3AiLCJ0YXJnZXQiLCJwcmV2IiwiY3VycmVudCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImkiLCJrZXkiLCJPYmplY3QiLCJpcyIsImlzRnJvemVuIiwibCIsInByb3BzIiwiUmVmbGVjdCIsIm93bktleXMiLCJwcm90byIsImdldFByb3RvdHlwZU9mIiwicHJvdG90eXBlIiwiZnJlZXplIiwiY29uc3RydWN0b3IiLCJjbG9uZSIsImNvbnN0cnVjdCIsIm1hcCIsIml0ZW0iXSwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvaW5kZXgudHMiLCIuLi8uLi9saWIvdXRpbHMvZ2V0dGVyLXNldHRlci50cyIsIi4uLy4uL2xpYi91dGlscy9oYXMtY2hhbmdlZC50cyIsIi4uLy4uL2xpYi91dGlscy9kZWVwLWZyZWV6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9nZXR0ZXItc2V0dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oYXMtY2hhbmdlZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVlcC1mcmVlemVcIjtcbiIsIi8vIERvdCBub3RhdGlvbjogZ2V0KG9iaiwgJ2EuYi5jJyApID09PSBvYmouYS5iLmNcbi8vIGdldChvYmosICdhLjAuYycpID09PSBvYmouYVswXS5jXG5leHBvcnQgZnVuY3Rpb24gZ2V0KG9iajogdW5rbm93biwgcGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiB1bmtub3duKSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gXCJzdHJpbmdcIiB8fCAhb2JqIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChhY2M6IGFueSwgcGFydCkgPT4gYWNjICYmIGFjYz8uW3BhcnRdLCBvYmopO1xuXG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gRG90IG5vdGF0aW9uOiBzZXQob2JqLCAnYS5iLmMnLCB2YWx1ZSkgPT09IG9iai5hLmIuYyA9IHZhbHVlXG4vLyBzZXQob2JqLCAnYS4wLmMnLCB2YWx1ZSkgPT09IG9iai5hWzBdLmMgPSB2YWx1ZVxuZXhwb3J0IGZ1bmN0aW9uIHNldChvYmo6IGFueSwgcGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gXCJzdHJpbmdcIiB8fCAhb2JqIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICBjb25zdCBsYXN0ID0gcGFydHMucG9wKCk7XG5cbiAgaWYgKCFsYXN0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHRhcmdldCA9IG9iajtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKCF0YXJnZXRbcGFydF0pIHtcbiAgICAgIHRhcmdldFtwYXJ0XSA9IHt9O1xuICAgIH1cbiAgICB0YXJnZXQgPSB0YXJnZXRbcGFydF07XG4gIH1cblxuICB0YXJnZXRbbGFzdF0gPSB2YWx1ZTtcbn1cbiIsIi8vIFV0aWxpdHkgZnVuY3Rpb24gdG8gY2hlY2sgaWYgZGVwZW5kZW5jaWVzIGhhdmUgY2hhbmdlZCByZWN1cnNpdmVseVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvY29nbml0aXZlLWNvbXBsZXhpdHlcbmV4cG9ydCBmdW5jdGlvbiBoYXNDaGFuZ2VkKHByZXY6IGFueSwgY3VycmVudDogYW55KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHByZXYpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudCkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJldi5sZW5ndGggIT09IGN1cnJlbnQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChoYXNDaGFuZ2VkKHByZXZbaV0sIGN1cnJlbnRbaV0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJldiA9PT0gXCJvYmplY3RcIiAmJiBwcmV2ICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBjdXJyZW50ICE9PSBcIm9iamVjdFwiIHx8IGN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIGN1cnJlbnQpIHtcbiAgICAgIGlmIChoYXNDaGFuZ2VkKHByZXZba2V5XSwgY3VycmVudFtrZXldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwcmV2KSB7XG4gICAgICBpZiAoaGFzQ2hhbmdlZChwcmV2W2tleV0sIGN1cnJlbnRba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5pcyhwcmV2LCBjdXJyZW50KSA9PT0gZmFsc2U7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gZGVlcEZyZWV6ZShvYmo6IGFueSk6IGFueSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIG9iaiAhPT0gbnVsbCAmJiAhT2JqZWN0LmlzRnJvemVuKG9iaikpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgZGVlcEZyZWV6ZShvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcm9wcyA9IFJlZmxlY3Qub3duS2V5cyhvYmopO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwcm9wcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgZGVlcEZyZWV6ZShvYmpbcHJvcHNbaV1dKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIChub3QgYSBwbGFpbiBvYmplY3Qgb3IgYXJyYXkpIHdlIG5lZWQgdG8gZnJlZXplIHRoZSBwcm90b3R5cGVcbiAgICAgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XG4gICAgICBpZiAocHJvdG8gJiYgcHJvdG8gIT09IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICAgICAgZGVlcEZyZWV6ZShwcm90byk7XG4gICAgICB9XG4gICAgfVxuICAgIE9iamVjdC5mcmVlemUob2JqKTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwQ2xvbmVVbmZyZWV6ZTxUPihvYmo6IFQpOiBUIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgfHwgb2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLy8gSWYgdGhlIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIChub3QgYSBwbGFpbiBvYmplY3Qgb3IgYXJyYXkpIHdlIG5lZWQgdG8gY2xvbmUgaXRcbiAgLy8gVGhpcyBjb3VsZCBub3Qgd29yayB3aXRoIGNsYXNzZXMgdGhhdCBoYXZlIHJlcXVpcmVkIHBhcmFtZXRlcnMgaW4gdGhlIGNvbnN0cnVjdG9yXG4gIGlmIChvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yICE9PSBPYmplY3QgJiYgb2JqLmNvbnN0cnVjdG9yICE9PSBBcnJheSkge1xuICAgIGNvbnN0IGNsb25lID0gUmVmbGVjdC5jb25zdHJ1Y3Qob2JqLmNvbnN0cnVjdG9yLCBbXSk7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXMob2JqKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSAob2JqIGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIGFueT4pW2tleV07XG4gICAgICAoY2xvbmUgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgYW55Pilba2V5XSA9IGRlZXBDbG9uZVVuZnJlZXplKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5tYXAoKGl0ZW0pID0+IGRlZXBDbG9uZVVuZnJlZXplKGl0ZW0pKSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cblxuICBjb25zdCBjbG9uZSA9IHt9IGFzIFQ7XG4gIGZvciAoY29uc3Qga2V5IG9mIFJlZmxlY3Qub3duS2V5cyhvYmopKSB7XG4gICAgY29uc3QgdmFsdWUgPSAob2JqIGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIGFueT4pW2tleV07XG4gICAgKGNsb25lIGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIGFueT4pW2tleV0gPSBkZWVwQ2xvbmVVbmZyZWV6ZSh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gY2xvbmU7XG59XG4iXSwibWFw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
@@ -0,0 +1,115 @@
1
+ // lib/utils/getter-setter.ts
2
+ function get(obj, path, defaultValue) {
3
+ if (!path || typeof path !== "string" || !obj || typeof obj !== "object") {
4
+ return defaultValue;
5
+ }
6
+ const result = path.split(".").reduce((acc, part) => acc && acc?.[part], obj);
7
+ if (typeof result === "undefined") {
8
+ return defaultValue || null;
9
+ }
10
+ return result;
11
+ }
12
+ function set(obj, path, value) {
13
+ if (!path || typeof path !== "string" || !obj || typeof obj !== "object") {
14
+ return;
15
+ }
16
+ const parts = path.split(".");
17
+ const last = parts.pop();
18
+ if (!last) {
19
+ return;
20
+ }
21
+ let target = obj;
22
+ for (const part of parts) {
23
+ if (!target[part]) {
24
+ target[part] = {};
25
+ }
26
+ target = target[part];
27
+ }
28
+ target[last] = value;
29
+ }
30
+
31
+ // lib/utils/has-changed.ts
32
+ function hasChanged(prev, current) {
33
+ if (Array.isArray(prev)) {
34
+ if (Array.isArray(current) === false) {
35
+ return true;
36
+ }
37
+ if (prev.length !== current.length) {
38
+ return true;
39
+ }
40
+ for (let i = 0; i < current.length; i++) {
41
+ if (hasChanged(prev[i], current[i])) {
42
+ return true;
43
+ }
44
+ }
45
+ return false;
46
+ }
47
+ if (typeof prev === "object" && prev !== null) {
48
+ if (typeof current !== "object" || current === null) {
49
+ return true;
50
+ }
51
+ for (const key in current) {
52
+ if (hasChanged(prev[key], current[key])) {
53
+ return true;
54
+ }
55
+ }
56
+ for (const key in prev) {
57
+ if (hasChanged(prev[key], current[key])) {
58
+ return true;
59
+ }
60
+ }
61
+ return false;
62
+ }
63
+ return Object.is(prev, current) === false;
64
+ }
65
+
66
+ // lib/utils/deep-freeze.ts
67
+ function deepFreeze(obj) {
68
+ if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
69
+ if (Array.isArray(obj)) {
70
+ for (let i = 0, l = obj.length; i < l; i++) {
71
+ deepFreeze(obj[i]);
72
+ }
73
+ } else {
74
+ const props = Reflect.ownKeys(obj);
75
+ for (let i = 0, l = props.length; i < l; i++) {
76
+ deepFreeze(obj[props[i]]);
77
+ }
78
+ const proto = Object.getPrototypeOf(obj);
79
+ if (proto && proto !== Object.prototype) {
80
+ deepFreeze(proto);
81
+ }
82
+ }
83
+ Object.freeze(obj);
84
+ }
85
+ return obj;
86
+ }
87
+ function deepCloneUnfreeze(obj) {
88
+ if (typeof obj === "undefined" || obj === null || typeof obj !== "object") {
89
+ return obj;
90
+ }
91
+ if (obj.constructor && obj.constructor !== Object && obj.constructor !== Array) {
92
+ const clone2 = Reflect.construct(obj.constructor, []);
93
+ for (const key of Reflect.ownKeys(obj)) {
94
+ const value = obj[key];
95
+ clone2[key] = deepCloneUnfreeze(value);
96
+ }
97
+ return clone2;
98
+ }
99
+ if (Array.isArray(obj)) {
100
+ return obj.map((item) => deepCloneUnfreeze(item));
101
+ }
102
+ const clone = {};
103
+ for (const key of Reflect.ownKeys(obj)) {
104
+ const value = obj[key];
105
+ clone[key] = deepCloneUnfreeze(value);
106
+ }
107
+ return clone;
108
+ }
109
+ export {
110
+ deepCloneUnfreeze,
111
+ deepFreeze,
112
+ get,
113
+ hasChanged,
114
+ set
115
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../lib/utils/getter-setter.ts", "../../lib/utils/has-changed.ts", "../../lib/utils/deep-freeze.ts"],
4
+ "sourcesContent": ["// Dot notation: get(obj, 'a.b.c' ) === obj.a.b.c\n// get(obj, 'a.0.c') === obj.a[0].c\nexport function get(obj: unknown, path: string, defaultValue?: unknown) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return defaultValue;\n }\n\n const result = path.split(\".\").reduce((acc: any, part) => acc && acc?.[part], obj);\n\n if (typeof result === \"undefined\") {\n return defaultValue || null;\n }\n\n return result;\n}\n\n// Dot notation: set(obj, 'a.b.c', value) === obj.a.b.c = value\n// set(obj, 'a.0.c', value) === obj.a[0].c = value\nexport function set(obj: any, path: string, value: any) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return;\n }\n\n const parts = path.split(\".\");\n const last = parts.pop();\n\n if (!last) {\n return;\n }\n\n let target = obj;\n for (const part of parts) {\n if (!target[part]) {\n target[part] = {};\n }\n target = target[part];\n }\n\n target[last] = value;\n}\n", "// Utility function to check if dependencies have changed recursively\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function hasChanged(prev: any, current: any) {\n if (Array.isArray(prev)) {\n if (Array.isArray(current) === false) {\n return true;\n }\n\n if (prev.length !== current.length) {\n return true;\n }\n\n for (let i = 0; i < current.length; i++) {\n if (hasChanged(prev[i], current[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n if (typeof prev === \"object\" && prev !== null) {\n if (typeof current !== \"object\" || current === null) {\n return true;\n }\n\n for (const key in current) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n for (const key in prev) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n return false;\n }\n\n return Object.is(prev, current) === false;\n}\n", "export function deepFreeze(obj: any): 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 // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype\n const proto = Object.getPrototypeOf(obj);\n if (proto && proto !== Object.prototype) {\n deepFreeze(proto);\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport function deepCloneUnfreeze<T>(obj: T): T {\n if (typeof obj === \"undefined\" || obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n // If the object is an instance of a class (not a plain object or array) we need to clone it\n // This could not work with classes that have required parameters in the constructor\n if (obj.constructor && obj.constructor !== Object && obj.constructor !== Array) {\n const clone = Reflect.construct(obj.constructor, []);\n\n for (const key of Reflect.ownKeys(obj)) {\n const value = (obj as Record<string | symbol, any>)[key];\n (clone as Record<string | symbol, any>)[key] = deepCloneUnfreeze(value);\n }\n\n return clone;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => deepCloneUnfreeze(item)) as unknown as T;\n }\n\n const clone = {} as T;\n for (const key of Reflect.ownKeys(obj)) {\n const value = (obj as Record<string | symbol, any>)[key];\n (clone as Record<string | symbol, any>)[key] = deepCloneUnfreeze(value);\n }\n\n return clone;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["clone"]
7
+ }