@ktjs/shared 0.23.4 → 0.23.6

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/dist/index.d.ts CHANGED
@@ -114,12 +114,12 @@ declare const originAppend: (...nodes: (Node | string)[]) => void;
114
114
  declare const $append: typeof originAppend;
115
115
  declare const $buttonDisabledGetter: () => any;
116
116
  declare const $buttonDisabledSetter: (v: any) => void;
117
- declare const parseStyle: (style: unknown) => string;
117
+ declare const $parseStyle: (style: unknown) => string;
118
118
  type ChangeHandler<T = string> = (value: T, ...args: any[]) => void;
119
119
  /**
120
120
  * Used for `k-model`
121
121
  */
122
- declare const applyModel: (element: HTMLElementTagNameMap[InputElementTag], valueRef: {
122
+ declare const $applyModel: (element: HTMLElementTagNameMap[InputElementTag], valueRef: {
123
123
  value: unknown;
124
124
  addOnChange: (fn: (newValue: unknown) => void) => void;
125
125
  }, propName: "value" | "checked", eventName: "change" | "input") => void;
@@ -129,6 +129,14 @@ declare const applyModel: (element: HTMLElementTagNameMap[InputElementTag], valu
129
129
  */
130
130
  declare const $emptyFn: (...args: any[]) => any;
131
131
  declare const $isSame: (a: unknown, b: unknown) => boolean;
132
+ /**
133
+ * Safe and quick forEach implementation that works with array-like objects and handles sparse arrays.
134
+ */
135
+ declare const $forEach: (array: unknown[], callback: (item: unknown, index: number, array: unknown[]) => void) => void;
136
+ /**
137
+ * Async version of $forEach that allows for asynchronous callbacks. It processes items sequentially, awaiting each callback before moving to the next.
138
+ */
139
+ declare const $forEachAsync: (array: unknown[], callback: (item: unknown, index: number, array: unknown[]) => void) => Promise<void>;
132
140
 
133
141
  /**
134
142
  * Normalize path by joining parts and ensuring leading slash
@@ -165,5 +173,5 @@ declare global {
165
173
  const $debug: typeof console.debug;
166
174
  }
167
175
 
168
- export { $ArrayFrom, $append, $appendChild, $assign, $buttonDisabledGetter, $buttonDisabledSetter, $define, $defines, $emptyFn, $entries, $hasOwn, $is, $isArray, $isNode, $isSame, $isThenable, $keys, $random, $replaceNode, $toString, DIRV_TYPE, MATHML_ATTR_FLAG, SVG_ATTR_FLAG, applyModel, buildQuery, emplaceParams, extractParams, normalizePath, parseQuery, parseStyle };
176
+ export { $ArrayFrom, $append, $appendChild, $applyModel, $assign, $buttonDisabledGetter, $buttonDisabledSetter, $define, $defines, $emptyFn, $entries, $forEach, $forEachAsync, $hasOwn, $is, $isArray, $isNode, $isSame, $isThenable, $keys, $parseStyle, $random, $replaceNode, $toString, DIRV_TYPE, MATHML_ATTR_FLAG, SVG_ATTR_FLAG, buildQuery, emplaceParams, extractParams, normalizePath, parseQuery };
169
177
  export type { ChangeHandler, ChangeTriggerField, HTMLTag, InputElementTag, MathMLTag, NoTextNodeTag, NonSpecialTags, SVGTag, otherstring };
@@ -80,7 +80,7 @@ var __ktjs_shared__ = (function (exports) {
80
80
  }
81
81
  };
82
82
  const { get: $buttonDisabledGetter, set: $buttonDisabledSetter } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
83
- const parseStyle = (style) => {
83
+ const $parseStyle = (style) => {
84
84
  if (!style) {
85
85
  return '';
86
86
  }
@@ -89,7 +89,7 @@ var __ktjs_shared__ = (function (exports) {
89
89
  }
90
90
  if (style && typeof style === 'object') {
91
91
  if (style.isKT) {
92
- return parseStyle(style.value);
92
+ return $parseStyle(style.value);
93
93
  }
94
94
  return $entries(style)
95
95
  .map((entry) => {
@@ -103,7 +103,7 @@ var __ktjs_shared__ = (function (exports) {
103
103
  /**
104
104
  * Used for `k-model`
105
105
  */
106
- const applyModel = (element, valueRef, propName, eventName) => {
106
+ const $applyModel = (element, valueRef, propName, eventName) => {
107
107
  element[propName] = valueRef.value; // initialize
108
108
  valueRef.addOnChange((newValue) => (element[propName] = newValue));
109
109
  element.addEventListener(eventName, () => (valueRef.value = element[propName]));
@@ -120,6 +120,24 @@ var __ktjs_shared__ = (function (exports) {
120
120
  }
121
121
  return $is(a, b);
122
122
  };
123
+ /**
124
+ * Safe and quick forEach implementation that works with array-like objects and handles sparse arrays.
125
+ */
126
+ const $forEach = (array, callback) => {
127
+ const len = array.length;
128
+ for (let i = 0; i < len; i++) {
129
+ callback(array[i], i, array);
130
+ }
131
+ };
132
+ /**
133
+ * Async version of $forEach that allows for asynchronous callbacks. It processes items sequentially, awaiting each callback before moving to the next.
134
+ */
135
+ const $forEachAsync = async (array, callback) => {
136
+ const len = array.length;
137
+ for (let i = 0; i < len; i++) {
138
+ await callback(array[i], i, array);
139
+ }
140
+ };
123
141
 
124
142
  /**
125
143
  * Normalize path by joining parts and ensuring leading slash
@@ -201,11 +219,12 @@ var __ktjs_shared__ = (function (exports) {
201
219
  }
202
220
 
203
221
  // Shared utilities and cached native methods for kt.js framework
204
- Object.defineProperty(window, '__ktjs__', { value: '0.23.4' });
222
+ Object.defineProperty(window, '__ktjs__', { value: '0.23.6' });
205
223
 
206
224
  exports.$ArrayFrom = $ArrayFrom;
207
225
  exports.$append = $append;
208
226
  exports.$appendChild = $appendChild;
227
+ exports.$applyModel = $applyModel;
209
228
  exports.$assign = $assign;
210
229
  exports.$buttonDisabledGetter = $buttonDisabledGetter;
211
230
  exports.$buttonDisabledSetter = $buttonDisabledSetter;
@@ -213,6 +232,8 @@ var __ktjs_shared__ = (function (exports) {
213
232
  exports.$defines = $defines;
214
233
  exports.$emptyFn = $emptyFn;
215
234
  exports.$entries = $entries;
235
+ exports.$forEach = $forEach;
236
+ exports.$forEachAsync = $forEachAsync;
216
237
  exports.$hasOwn = $hasOwn;
217
238
  exports.$is = $is;
218
239
  exports.$isArray = $isArray;
@@ -220,19 +241,18 @@ var __ktjs_shared__ = (function (exports) {
220
241
  exports.$isSame = $isSame;
221
242
  exports.$isThenable = $isThenable;
222
243
  exports.$keys = $keys;
244
+ exports.$parseStyle = $parseStyle;
223
245
  exports.$random = $random;
224
246
  exports.$replaceNode = $replaceNode;
225
247
  exports.$toString = $toString;
226
248
  exports.DIRV_TYPE = DIRV_TYPE;
227
249
  exports.MATHML_ATTR_FLAG = MATHML_ATTR_FLAG;
228
250
  exports.SVG_ATTR_FLAG = SVG_ATTR_FLAG;
229
- exports.applyModel = applyModel;
230
251
  exports.buildQuery = buildQuery;
231
252
  exports.emplaceParams = emplaceParams;
232
253
  exports.extractParams = extractParams;
233
254
  exports.normalizePath = normalizePath;
234
255
  exports.parseQuery = parseQuery;
235
- exports.parseStyle = parseStyle;
236
256
 
237
257
  return exports;
238
258
 
@@ -85,7 +85,7 @@ var __ktjs_shared__ = (function (exports) {
85
85
  }
86
86
  };
87
87
  var $buttonDisabledGetter = (_a = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled'), _a.get), $buttonDisabledSetter = _a.set;
88
- var parseStyle = function (style) {
88
+ var $parseStyle = function (style) {
89
89
  if (!style) {
90
90
  return '';
91
91
  }
@@ -94,7 +94,7 @@ var __ktjs_shared__ = (function (exports) {
94
94
  }
95
95
  if (style && typeof style === 'object') {
96
96
  if (style.isKT) {
97
- return parseStyle(style.value);
97
+ return $parseStyle(style.value);
98
98
  }
99
99
  return $entries(style)
100
100
  .map(function (entry) {
@@ -108,12 +108,72 @@ var __ktjs_shared__ = (function (exports) {
108
108
  /**
109
109
  * Used for `k-model`
110
110
  */
111
- var applyModel = function (element, valueRef, propName, eventName) {
111
+ var $applyModel = function (element, valueRef, propName, eventName) {
112
112
  element[propName] = valueRef.value; // initialize
113
113
  valueRef.addOnChange(function (newValue) { return (element[propName] = newValue); });
114
114
  element.addEventListener(eventName, function () { return (valueRef.value = element[propName]); });
115
115
  };
116
116
 
117
+ /******************************************************************************
118
+ Copyright (c) Microsoft Corporation.
119
+
120
+ Permission to use, copy, modify, and/or distribute this software for any
121
+ purpose with or without fee is hereby granted.
122
+
123
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
124
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
125
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
126
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
127
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
128
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
129
+ PERFORMANCE OF THIS SOFTWARE.
130
+ ***************************************************************************** */
131
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
132
+
133
+
134
+ function __awaiter(thisArg, _arguments, P, generator) {
135
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
136
+ return new (P || (P = Promise))(function (resolve, reject) {
137
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
138
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
139
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
140
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
141
+ });
142
+ }
143
+
144
+ function __generator(thisArg, body) {
145
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
146
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
147
+ function verb(n) { return function (v) { return step([n, v]); }; }
148
+ function step(op) {
149
+ if (f) throw new TypeError("Generator is already executing.");
150
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
151
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
152
+ if (y = 0, t) op = [op[0] & 2, t.value];
153
+ switch (op[0]) {
154
+ case 0: case 1: t = op; break;
155
+ case 4: _.label++; return { value: op[1], done: false };
156
+ case 5: _.label++; y = op[1]; op = [0]; continue;
157
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
158
+ default:
159
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
160
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
161
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
162
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
163
+ if (t[2]) _.ops.pop();
164
+ _.trys.pop(); continue;
165
+ }
166
+ op = body.call(thisArg, _);
167
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
168
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
169
+ }
170
+ }
171
+
172
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
173
+ var e = new Error(message);
174
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
175
+ };
176
+
117
177
  // String manipulation utilities
118
178
  /**
119
179
  * Default empty function
@@ -125,6 +185,39 @@ var __ktjs_shared__ = (function (exports) {
125
185
  }
126
186
  return $is(a, b);
127
187
  };
188
+ /**
189
+ * Safe and quick forEach implementation that works with array-like objects and handles sparse arrays.
190
+ */
191
+ var $forEach = function (array, callback) {
192
+ var len = array.length;
193
+ for (var i = 0; i < len; i++) {
194
+ callback(array[i], i, array);
195
+ }
196
+ };
197
+ /**
198
+ * Async version of $forEach that allows for asynchronous callbacks. It processes items sequentially, awaiting each callback before moving to the next.
199
+ */
200
+ var $forEachAsync = function (array, callback) { return __awaiter(void 0, void 0, void 0, function () {
201
+ var len, i;
202
+ return __generator(this, function (_a) {
203
+ switch (_a.label) {
204
+ case 0:
205
+ len = array.length;
206
+ i = 0;
207
+ _a.label = 1;
208
+ case 1:
209
+ if (!(i < len)) return [3 /*break*/, 4];
210
+ return [4 /*yield*/, callback(array[i], i, array)];
211
+ case 2:
212
+ _a.sent();
213
+ _a.label = 3;
214
+ case 3:
215
+ i++;
216
+ return [3 /*break*/, 1];
217
+ case 4: return [2 /*return*/];
218
+ }
219
+ });
220
+ }); };
128
221
 
129
222
  /**
130
223
  * Normalize path by joining parts and ensuring leading slash
@@ -211,11 +304,12 @@ var __ktjs_shared__ = (function (exports) {
211
304
  }
212
305
 
213
306
  // Shared utilities and cached native methods for kt.js framework
214
- Object.defineProperty(window, '__ktjs__', { value: '0.23.4' });
307
+ Object.defineProperty(window, '__ktjs__', { value: '0.23.6' });
215
308
 
216
309
  exports.$ArrayFrom = $ArrayFrom;
217
310
  exports.$append = $append;
218
311
  exports.$appendChild = $appendChild;
312
+ exports.$applyModel = $applyModel;
219
313
  exports.$assign = $assign;
220
314
  exports.$buttonDisabledGetter = $buttonDisabledGetter;
221
315
  exports.$buttonDisabledSetter = $buttonDisabledSetter;
@@ -223,6 +317,8 @@ var __ktjs_shared__ = (function (exports) {
223
317
  exports.$defines = $defines;
224
318
  exports.$emptyFn = $emptyFn;
225
319
  exports.$entries = $entries;
320
+ exports.$forEach = $forEach;
321
+ exports.$forEachAsync = $forEachAsync;
226
322
  exports.$hasOwn = $hasOwn;
227
323
  exports.$is = $is;
228
324
  exports.$isArray = $isArray;
@@ -230,19 +326,18 @@ var __ktjs_shared__ = (function (exports) {
230
326
  exports.$isSame = $isSame;
231
327
  exports.$isThenable = $isThenable;
232
328
  exports.$keys = $keys;
329
+ exports.$parseStyle = $parseStyle;
233
330
  exports.$random = $random;
234
331
  exports.$replaceNode = $replaceNode;
235
332
  exports.$toString = $toString;
236
333
  exports.DIRV_TYPE = DIRV_TYPE;
237
334
  exports.MATHML_ATTR_FLAG = MATHML_ATTR_FLAG;
238
335
  exports.SVG_ATTR_FLAG = SVG_ATTR_FLAG;
239
- exports.applyModel = applyModel;
240
336
  exports.buildQuery = buildQuery;
241
337
  exports.emplaceParams = emplaceParams;
242
338
  exports.extractParams = extractParams;
243
339
  exports.normalizePath = normalizePath;
244
340
  exports.parseQuery = parseQuery;
245
- exports.parseStyle = parseStyle;
246
341
 
247
342
  return exports;
248
343
 
package/dist/index.mjs CHANGED
@@ -77,7 +77,7 @@ const $append = // for ie 9/10/11
77
77
  }
78
78
  };
79
79
  const { get: $buttonDisabledGetter, set: $buttonDisabledSetter } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
80
- const parseStyle = (style) => {
80
+ const $parseStyle = (style) => {
81
81
  if (!style) {
82
82
  return '';
83
83
  }
@@ -86,7 +86,7 @@ const parseStyle = (style) => {
86
86
  }
87
87
  if (style && typeof style === 'object') {
88
88
  if (style.isKT) {
89
- return parseStyle(style.value);
89
+ return $parseStyle(style.value);
90
90
  }
91
91
  return $entries(style)
92
92
  .map((entry) => {
@@ -100,7 +100,7 @@ const parseStyle = (style) => {
100
100
  /**
101
101
  * Used for `k-model`
102
102
  */
103
- const applyModel = (element, valueRef, propName, eventName) => {
103
+ const $applyModel = (element, valueRef, propName, eventName) => {
104
104
  element[propName] = valueRef.value; // initialize
105
105
  valueRef.addOnChange((newValue) => (element[propName] = newValue));
106
106
  element.addEventListener(eventName, () => (valueRef.value = element[propName]));
@@ -117,6 +117,24 @@ const $isSame = (a, b) => {
117
117
  }
118
118
  return $is(a, b);
119
119
  };
120
+ /**
121
+ * Safe and quick forEach implementation that works with array-like objects and handles sparse arrays.
122
+ */
123
+ const $forEach = (array, callback) => {
124
+ const len = array.length;
125
+ for (let i = 0; i < len; i++) {
126
+ callback(array[i], i, array);
127
+ }
128
+ };
129
+ /**
130
+ * Async version of $forEach that allows for asynchronous callbacks. It processes items sequentially, awaiting each callback before moving to the next.
131
+ */
132
+ const $forEachAsync = async (array, callback) => {
133
+ const len = array.length;
134
+ for (let i = 0; i < len; i++) {
135
+ await callback(array[i], i, array);
136
+ }
137
+ };
120
138
 
121
139
  /**
122
140
  * Normalize path by joining parts and ensuring leading slash
@@ -198,6 +216,6 @@ if (typeof Symbol === 'undefined') {
198
216
  }
199
217
 
200
218
  // Shared utilities and cached native methods for kt.js framework
201
- Object.defineProperty(window, '__ktjs__', { value: '0.23.4' });
219
+ Object.defineProperty(window, '__ktjs__', { value: '0.23.6' });
202
220
 
203
- export { $ArrayFrom, $append, $appendChild, $assign, $buttonDisabledGetter, $buttonDisabledSetter, $define, $defines, $emptyFn, $entries, $hasOwn, $is, $isArray, $isNode, $isSame, $isThenable, $keys, $random, $replaceNode, $toString, DIRV_TYPE, MATHML_ATTR_FLAG, SVG_ATTR_FLAG, applyModel, buildQuery, emplaceParams, extractParams, normalizePath, parseQuery, parseStyle };
221
+ export { $ArrayFrom, $append, $appendChild, $applyModel, $assign, $buttonDisabledGetter, $buttonDisabledSetter, $define, $defines, $emptyFn, $entries, $forEach, $forEachAsync, $hasOwn, $is, $isArray, $isNode, $isSame, $isThenable, $keys, $parseStyle, $random, $replaceNode, $toString, DIRV_TYPE, MATHML_ATTR_FLAG, SVG_ATTR_FLAG, buildQuery, emplaceParams, extractParams, normalizePath, parseQuery };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ktjs/shared",
3
- "version": "0.23.4",
3
+ "version": "0.23.6",
4
4
  "description": "Shared utilities and cached native methods for kt.js framework",
5
5
  "type": "module",
6
6
  "module": "./dist/index.mjs",
@@ -34,6 +34,7 @@
34
34
  },
35
35
  "scripts": {
36
36
  "build": "rollup -c rollup.config.mjs",
37
- "dev": "rollup -c rollup.config.mjs -w"
37
+ "dev": "rollup -c rollup.config.mjs -w",
38
+ "test": "vitest run"
38
39
  }
39
40
  }