@develia/commons 0.4.2 → 0.4.3

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 (61) hide show
  1. package/dist/cjs/browser/index.js +129 -0
  2. package/dist/cjs/browser/index.js.map +1 -0
  3. package/dist/cjs/index.js +4 -3
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/type-code.js +18 -0
  6. package/dist/cjs/type-code.js.map +1 -0
  7. package/dist/cjs/type.js +212 -12
  8. package/dist/cjs/type.js.map +1 -1
  9. package/dist/cjs/utilities.js +1 -127
  10. package/dist/cjs/utilities.js.map +1 -1
  11. package/dist/esm/browser/index.js +122 -0
  12. package/dist/esm/browser/index.js.map +1 -0
  13. package/dist/esm/index.js +2 -1
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/type-code.js +16 -0
  16. package/dist/esm/type-code.js.map +1 -0
  17. package/dist/esm/type.js +209 -12
  18. package/dist/esm/type.js.map +1 -1
  19. package/dist/esm/utilities.js +1 -122
  20. package/dist/esm/utilities.js.map +1 -1
  21. package/dist/types/browser/index.d.ts +7 -0
  22. package/dist/types/browser/index.d.ts.map +1 -0
  23. package/dist/types/index.d.ts +2 -1
  24. package/dist/types/index.d.ts.map +1 -1
  25. package/dist/types/patch.d.ts +3 -3
  26. package/dist/types/patch.d.ts.map +1 -1
  27. package/dist/types/type-code.d.ts +15 -0
  28. package/dist/types/type-code.d.ts.map +1 -0
  29. package/dist/types/type.d.ts +45 -11
  30. package/dist/types/type.d.ts.map +1 -1
  31. package/dist/types/types.d.ts +1 -2
  32. package/dist/types/types.d.ts.map +1 -1
  33. package/dist/types/utilities.d.ts +1 -6
  34. package/dist/types/utilities.d.ts.map +1 -1
  35. package/dist/web/browser/index.js +123 -0
  36. package/dist/web/browser/index.js.map +1 -0
  37. package/dist/web/index.js +2 -1
  38. package/dist/web/index.js.map +1 -1
  39. package/dist/web/type-code.js +16 -0
  40. package/dist/web/type-code.js.map +1 -0
  41. package/dist/web/type.js +210 -12
  42. package/dist/web/type.js.map +1 -1
  43. package/dist/web/utilities.js +1 -122
  44. package/dist/web/utilities.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/browser/index.ts +172 -0
  47. package/src/index.ts +15 -13
  48. package/src/patch.ts +3 -3
  49. package/src/type-code.ts +16 -0
  50. package/src/type.ts +370 -17
  51. package/src/types.ts +1 -5
  52. package/src/utilities.ts +2 -165
  53. package/dist/cjs/remote-data.js +0 -115
  54. package/dist/cjs/remote-data.js.map +0 -1
  55. package/dist/esm/remote-data.js +0 -112
  56. package/dist/esm/remote-data.js.map +0 -1
  57. package/dist/types/remote-data.d.ts +0 -32
  58. package/dist/types/remote-data.d.ts.map +0 -1
  59. package/dist/web/remote-data.js +0 -112
  60. package/dist/web/remote-data.js.map +0 -1
  61. package/src/remote-data.ts +0 -149
@@ -54,43 +54,6 @@ export function deepEqual(a, b) {
54
54
  }
55
55
  return false;
56
56
  }
57
- export function submitForm(url, data, method = 'POST', target) {
58
- const form = document.createElement('form');
59
- form.method = method.toUpperCase();
60
- form.action = url;
61
- form.style.display = 'none';
62
- if (target) {
63
- form.target = target;
64
- }
65
- const appendInputs = (keyPrefix, value) => {
66
- if (Array.isArray(value)) {
67
- value.forEach(val => {
68
- appendInputs(`${keyPrefix}[]`, val);
69
- });
70
- }
71
- else if (typeof value === 'object' && value !== null) {
72
- for (const subKey in value) {
73
- if (value.hasOwnProperty(subKey)) {
74
- appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
75
- }
76
- }
77
- }
78
- else {
79
- const input = document.createElement('input');
80
- input.type = 'hidden';
81
- input.name = keyPrefix;
82
- input.value = String(value);
83
- form.appendChild(input);
84
- }
85
- };
86
- for (const key in data) {
87
- if (data.hasOwnProperty(key)) {
88
- appendInputs(key, data[key]);
89
- }
90
- }
91
- document.body.appendChild(form);
92
- form.submit();
93
- }
94
57
  export function shallowEqual(a, b) {
95
58
  if (a === b) {
96
59
  return true;
@@ -145,18 +108,6 @@ export function isEmptyOrWhitespace(value) {
145
108
  (typeof value === 'string' && value.trim() === '') ||
146
109
  value === null || typeof value === 'undefined';
147
110
  }
148
- export async function ajaxSubmit(selectorOrElement) {
149
- const form = typeof selectorOrElement === 'string'
150
- ? document.querySelector(selectorOrElement)
151
- : selectorOrElement;
152
- if (!(form instanceof HTMLFormElement)) {
153
- throw new Error("Invalid element.");
154
- }
155
- return await fetch(form.action, {
156
- method: form.method,
157
- body: new FormData(form),
158
- });
159
- }
160
111
  export function toPairs(obj) {
161
112
  let output = [];
162
113
  for (const key in obj) {
@@ -180,24 +131,6 @@ export function promisify(thing) {
180
131
  }
181
132
  return Promise.resolve(thing);
182
133
  }
183
- export function ajaxSubmission(selectorOrElement, onSuccess = undefined, onFailure = undefined) {
184
- const form = typeof selectorOrElement === 'string'
185
- ? document.querySelector(selectorOrElement)
186
- : selectorOrElement;
187
- if (!(form instanceof HTMLFormElement)) {
188
- return;
189
- }
190
- form.addEventListener('submit', async (event) => {
191
- event.preventDefault();
192
- let promise = ajaxSubmit(form);
193
- if (promise) {
194
- if (onSuccess)
195
- promise = promise.then(onSuccess);
196
- if (onFailure)
197
- promise.catch(onFailure);
198
- }
199
- });
200
- }
201
134
  export function deepClone(obj) {
202
135
  if (obj === null || typeof obj !== 'object') {
203
136
  return obj;
@@ -218,60 +151,6 @@ export function deepClone(obj) {
218
151
  return copy;
219
152
  }
220
153
  export function getType(value) {
221
- return value === null ? Type.Null : Type[typeof value];
222
- }
223
- export function formToObject(form) {
224
- const fd = new FormData(form);
225
- const out = {};
226
- for (const [key, value] of fd.entries()) {
227
- if (key in out) {
228
- const current = out[key];
229
- if (Array.isArray(current)) {
230
- current.push(value);
231
- }
232
- else {
233
- out[key] = [current, value];
234
- }
235
- }
236
- else {
237
- out[key] = value;
238
- }
239
- }
240
- return out;
241
- }
242
- function _objectToFormData(data, formData, parentKey = '') {
243
- for (const key in data) {
244
- if (data.hasOwnProperty(key)) {
245
- const value = data[key];
246
- if (value instanceof Date) {
247
- formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());
248
- }
249
- else if (value instanceof File) {
250
- formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
251
- }
252
- else if (typeof value === 'object' && !Array.isArray(value)) {
253
- _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
254
- }
255
- else if (Array.isArray(value)) {
256
- value.forEach((item, index) => {
257
- const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
258
- if (typeof item === 'object' && !Array.isArray(item)) {
259
- _objectToFormData(item, formData, arrayKey);
260
- }
261
- else {
262
- formData.append(arrayKey, item);
263
- }
264
- });
265
- }
266
- else {
267
- formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
268
- }
269
- }
270
- }
271
- return formData;
272
- }
273
- export function objectToFormData(data) {
274
- let formData = new FormData();
275
- return _objectToFormData(data, formData);
154
+ return Type.of(value);
276
155
  }
277
156
  //# sourceMappingURL=utilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@develia/commons",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "author": {
5
5
  "name": "Antonio Gil Espinosa",
6
6
  "email": "antonio.gil.espinosa@gmail.com",
@@ -0,0 +1,172 @@
1
+ import {type Optional, type Supplier} from "../types.js";
2
+
3
+ export function submitForm(
4
+ url: string,
5
+ data: Record<string, any>,
6
+ method: 'POST' | 'GET' = 'POST',
7
+ target?: '_blank' | '_self' | '_parent' | '_top'
8
+ ): void {
9
+
10
+ const form = document.createElement('form');
11
+ form.method = method.toUpperCase();
12
+ form.action = url;
13
+ form.style.display = 'none';
14
+
15
+ if (target) {
16
+ form.target = target;
17
+ }
18
+
19
+ /**
20
+ * Recursively appends inputs to the form, supporting nested keys and arrays.
21
+ * @param keyPrefix - Key path, e.g., 'user[name]' or 'tags[]'
22
+ * @param value - The value to append (can be nested)
23
+ */
24
+ const appendInputs = (keyPrefix: string, value: any) => {
25
+ if (Array.isArray(value)) {
26
+ value.forEach(val => {
27
+ appendInputs(`${keyPrefix}[]`, val);
28
+ });
29
+ } else if (typeof value === 'object' && value !== null) {
30
+ for (const subKey in value) {
31
+ if (value.hasOwnProperty(subKey)) {
32
+ appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
33
+ }
34
+ }
35
+ } else {
36
+ const input = document.createElement('input');
37
+ input.type = 'hidden';
38
+ input.name = keyPrefix;
39
+ input.value = String(value);
40
+ form.appendChild(input);
41
+ }
42
+ };
43
+
44
+ for (const key in data) {
45
+ if (data.hasOwnProperty(key)) {
46
+ appendInputs(key, data[key]);
47
+ }
48
+ }
49
+
50
+ document.body.appendChild(form);
51
+ form.submit();
52
+ }
53
+
54
+ export function formToObject(form: HTMLFormElement): Record<string, FormDataEntryValue | FormDataEntryValue[]> {
55
+ const fd = new FormData(form);
56
+ const out: Record<string, FormDataEntryValue | FormDataEntryValue[]> = {};
57
+
58
+ for (const [key, value] of fd.entries()) {
59
+ if (key in out) {
60
+ const current = out[key];
61
+ if (Array.isArray(current)) {
62
+ current.push(value);
63
+ } else {
64
+ out[key] = [current, value];
65
+ }
66
+ } else {
67
+ out[key] = value;
68
+ }
69
+ }
70
+
71
+ return out;
72
+ }
73
+
74
+ /**
75
+ * Converts an object to `FormData` format recursively.
76
+ *
77
+ * @param {Record<string, any>} data - The object data to convert.
78
+ * @param {FormData} formData - The `FormData` instance to append data to.
79
+ * @param {string} parentKey - The parent key to append to child keys in the `FormData`.
80
+ * @returns {FormData} - The `FormData` instance with the converted data.
81
+ */
82
+ function _objectToFormData(data: Record<string, any>, formData: FormData, parentKey: string = ''): FormData {
83
+
84
+ for (const key in data) {
85
+ if (data.hasOwnProperty(key)) {
86
+ const value = data[key];
87
+
88
+ if (value instanceof Date) {
89
+ formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());
90
+ } else if (value instanceof File) {
91
+ formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
92
+ } else if (typeof value === 'object' && !Array.isArray(value)) {
93
+ _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
94
+ } else if (Array.isArray(value)) {
95
+ value.forEach((item, index) => {
96
+ const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
97
+ if (typeof item === 'object' && !Array.isArray(item)) {
98
+ _objectToFormData(item, formData, arrayKey);
99
+ } else {
100
+ formData.append(arrayKey, item);
101
+ }
102
+ });
103
+ } else {
104
+ formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
105
+ }
106
+ }
107
+ }
108
+
109
+ return formData;
110
+ }
111
+
112
+ /**
113
+ * Converts an object into FormData.
114
+ *
115
+ * @param {Record<string, any>} data - The object to be converted into FormData.
116
+ * @return {FormData} - The FormData object representing the converted data.
117
+ */
118
+ export function objectToFormData(data: Record<string, any>): FormData {
119
+ let formData = new FormData();
120
+ return _objectToFormData(data, formData);
121
+ }
122
+
123
+ export function ajaxSubmission(selectorOrElement: HTMLFormElement | string,
124
+ onSuccess: Optional<Supplier<any>> = undefined,
125
+ onFailure: Optional<Supplier<any>> = undefined): void {
126
+
127
+ const form = typeof selectorOrElement === 'string'
128
+ ? document.querySelector(selectorOrElement)
129
+ : selectorOrElement;
130
+
131
+ if (!(form instanceof HTMLFormElement)) {
132
+ return;
133
+ }
134
+
135
+ form.addEventListener('submit', async (event) => {
136
+ event.preventDefault();
137
+ let promise = ajaxSubmit(form);
138
+ if (promise) {
139
+ if (onSuccess)
140
+ promise = promise.then(onSuccess);
141
+ if (onFailure)
142
+ promise.catch(onFailure);
143
+ }
144
+
145
+ });
146
+
147
+
148
+ }
149
+
150
+ /**
151
+ * Submits a form via AJAX and returns a Promise that resolves to the Response object.
152
+ *
153
+ * @param {HTMLFormElement | string} selectorOrElement - The form element or selector.
154
+ * @return {Promise<Response>} A Promise that resolves to the Response object.
155
+ * @throws {Error} If the element is invalid.
156
+ */
157
+ export async function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response> {
158
+
159
+ const form = typeof selectorOrElement === 'string'
160
+ ? document.querySelector(selectorOrElement)
161
+ : selectorOrElement;
162
+
163
+ if (!(form instanceof HTMLFormElement)) {
164
+ throw new Error("Invalid element.");
165
+ }
166
+
167
+ // Crear un objeto FormData a partir del formulario
168
+ return await fetch(form.action, {
169
+ method: form.method,
170
+ body: new FormData(form),
171
+ });
172
+ }
package/src/index.ts CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  // ─── Types ───────────────────────────────────────────
4
4
  export * from './types.js';
5
- export { default as Type } from './type.js';
5
+ export {default as Type} from './type.js';
6
+ export {default as TypeCode} from './type-code.js';
6
7
 
7
8
  // ─── Utilities ───────────────────────────────────────
8
9
  export * from './utilities.js';
@@ -10,25 +11,26 @@ export * from './string.js';
10
11
  export * from './math.js';
11
12
 
12
13
  // ─── Data Structures ────────────────────────────────
13
- export { default as KeyValuePair } from './key-value-pair.js';
14
- export { default as Order } from './order.js';
14
+ export {default as KeyValuePair} from './key-value-pair.js';
15
+ export {default as Order} from './order.js';
15
16
 
16
17
  // ─── Async & Timing ─────────────────────────────────
17
- export { default as Timer } from './timer.js';
18
- export { default as TimeSpan } from './timespan.js';
19
- export { default as Stopwatch } from './stopwatch.js';
20
- export { default as AsyncPoolExecutor } from './async-pool-executor.js';
18
+ export {default as Timer} from './timer.js';
19
+ export {default as TimeSpan} from './timespan.js';
20
+ export {default as Stopwatch} from './stopwatch.js';
21
+ export {default as AsyncPoolExecutor} from './async-pool-executor.js';
21
22
 
22
23
  // ─── Patterns ────────────────────────────────────────
23
- export { default as Lazy } from './lazy.js';
24
- export { default as RemoteData } from './remote-data.js';
25
- export { default as from, From } from './from.js';
24
+ export {default as Lazy} from './lazy.js';
25
+ export {default as from, From} from './from.js';
26
26
 
27
27
  // ─── Web ─────────────────────────────────────────────
28
- export { default as CleanURLSearchParams } from './clean-url-search-params.js';
28
+ export {default as CleanURLSearchParams} from './clean-url-search-params.js';
29
+ /** @deprecated */
30
+ export * from './browser/index.js';
29
31
 
30
32
  // ─── Deprecated ──────────────────────────────────────
31
- /** @deprecated Use "mi-paquete/array" instead */
33
+ /** @deprecated */
32
34
  export * from './array.js';
33
- /** @deprecated Use "mi-paquete/collections" instead */
35
+ /** @deprecated */
34
36
  export * from './collections/index.js';
package/src/patch.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type {AbstractConstructor} from "./types.js";
1
+ import type {Constructor} from "./types.js";
2
2
 
3
3
  export type PureMethod<T extends object, A extends any[] = any[], R = any> =
4
4
  (obj: T, ...args: A) => R;
@@ -8,7 +8,7 @@ export type PatchSpec<T extends object> =
8
8
  | Map<PropertyKey, PureMethod<T, any[], any>>;
9
9
 
10
10
 
11
- export function patch<C extends AbstractConstructor<any>>(
11
+ export function patch<C extends Constructor<any>>(
12
12
  targetOrCtor: C,
13
13
  fns: PatchSpec<InstanceType<C>>
14
14
  ): Map<PropertyKey, PropertyDescriptor | null>;
@@ -53,7 +53,7 @@ export function patch(
53
53
  }
54
54
 
55
55
  // Overloads unpatch
56
- export function unpatch<C extends AbstractConstructor<any>>(
56
+ export function unpatch<C extends Constructor<any>>(
57
57
  targetOrCtor: C,
58
58
  changes: Map<PropertyKey, PropertyDescriptor | null>
59
59
  ): void;
@@ -0,0 +1,16 @@
1
+ enum TypeCode {
2
+ String = 'string',
3
+ Number = 'number',
4
+ Boolean = 'boolean',
5
+ Symbol = 'symbol',
6
+ BigInt = 'bigint',
7
+ Null = 'null',
8
+ Undefined = 'undefined',
9
+ Object = 'object',
10
+ Function = 'function',
11
+ Array = 'array',
12
+ Unknown = 'unknown',
13
+ }
14
+
15
+
16
+ export default TypeCode;