@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
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class RemoteData {
4
- constructor(url, options = {}) {
5
- this._loaded = false;
6
- this._loading = false;
7
- this._data = null;
8
- this._error = null;
9
- this._promise = null;
10
- this._url = url;
11
- this._options = options;
12
- if (options.initialData !== undefined) {
13
- this._data = options.initialData;
14
- this._loaded = true;
15
- }
16
- }
17
- get url() {
18
- return this._url;
19
- }
20
- set url(value) {
21
- if (this._url !== value) {
22
- this._url = value;
23
- this._loaded = false;
24
- }
25
- }
26
- get loaded() {
27
- return this._loaded;
28
- }
29
- get loading() {
30
- return this._loading;
31
- }
32
- get error() {
33
- return this._error;
34
- }
35
- get succeeded() {
36
- return this._loaded && !this._error;
37
- }
38
- get data() {
39
- return this._data;
40
- }
41
- async getData() {
42
- if (!this._loaded) {
43
- await this.load();
44
- }
45
- return this._data;
46
- }
47
- async load() {
48
- if (this._loading && this._promise) {
49
- return this._promise;
50
- }
51
- this._promise = this._fetchWithRetries();
52
- return this._promise;
53
- }
54
- reset() {
55
- this._loaded = false;
56
- this._loading = false;
57
- this._data = null;
58
- this._error = null;
59
- this._promise = null;
60
- }
61
- async _fetchWithRetries() {
62
- const maxAttempts = (this._options.retries ?? 0) + 1;
63
- const retryDelay = this._options.retryDelay ?? 1000;
64
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
65
- try {
66
- return await this._doFetch();
67
- }
68
- catch (error) {
69
- if (attempt === maxAttempts)
70
- throw this._error;
71
- await new Promise((r) => setTimeout(r, retryDelay));
72
- }
73
- }
74
- return null;
75
- }
76
- async _doFetch() {
77
- try {
78
- this._error = null;
79
- this._loading = true;
80
- const fetchOptions = this._buildFetchOptions();
81
- const response = await fetch(this._url, fetchOptions);
82
- if (!response.ok) {
83
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
84
- }
85
- const raw = await response.json();
86
- this._data = this._options.transform
87
- ? this._options.transform(raw)
88
- : raw;
89
- this._loaded = true;
90
- return this._data;
91
- }
92
- catch (error) {
93
- this._error = error instanceof Error
94
- ? error
95
- : new Error(String(error));
96
- this._loaded = false;
97
- throw this._error;
98
- }
99
- finally {
100
- this._loading = false;
101
- this._promise = null;
102
- }
103
- }
104
- _buildFetchOptions() {
105
- const options = { ...this._options.fetchOptions };
106
- if (this._options.timeout && this._options.timeout > 0) {
107
- const controller = new AbortController();
108
- setTimeout(() => controller.abort(), this._options.timeout);
109
- options.signal = controller.signal;
110
- }
111
- return options;
112
- }
113
- }
114
- exports.default = RemoteData;
115
- //# sourceMappingURL=remote-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-data.js","sourceRoot":"","sources":["../../src/remote-data.ts"],"names":[],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- export default class RemoteData {
2
- constructor(url, options = {}) {
3
- this._loaded = false;
4
- this._loading = false;
5
- this._data = null;
6
- this._error = null;
7
- this._promise = null;
8
- this._url = url;
9
- this._options = options;
10
- if (options.initialData !== undefined) {
11
- this._data = options.initialData;
12
- this._loaded = true;
13
- }
14
- }
15
- get url() {
16
- return this._url;
17
- }
18
- set url(value) {
19
- if (this._url !== value) {
20
- this._url = value;
21
- this._loaded = false;
22
- }
23
- }
24
- get loaded() {
25
- return this._loaded;
26
- }
27
- get loading() {
28
- return this._loading;
29
- }
30
- get error() {
31
- return this._error;
32
- }
33
- get succeeded() {
34
- return this._loaded && !this._error;
35
- }
36
- get data() {
37
- return this._data;
38
- }
39
- async getData() {
40
- if (!this._loaded) {
41
- await this.load();
42
- }
43
- return this._data;
44
- }
45
- async load() {
46
- if (this._loading && this._promise) {
47
- return this._promise;
48
- }
49
- this._promise = this._fetchWithRetries();
50
- return this._promise;
51
- }
52
- reset() {
53
- this._loaded = false;
54
- this._loading = false;
55
- this._data = null;
56
- this._error = null;
57
- this._promise = null;
58
- }
59
- async _fetchWithRetries() {
60
- const maxAttempts = (this._options.retries ?? 0) + 1;
61
- const retryDelay = this._options.retryDelay ?? 1000;
62
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
63
- try {
64
- return await this._doFetch();
65
- }
66
- catch (error) {
67
- if (attempt === maxAttempts)
68
- throw this._error;
69
- await new Promise((r) => setTimeout(r, retryDelay));
70
- }
71
- }
72
- return null;
73
- }
74
- async _doFetch() {
75
- try {
76
- this._error = null;
77
- this._loading = true;
78
- const fetchOptions = this._buildFetchOptions();
79
- const response = await fetch(this._url, fetchOptions);
80
- if (!response.ok) {
81
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
82
- }
83
- const raw = await response.json();
84
- this._data = this._options.transform
85
- ? this._options.transform(raw)
86
- : raw;
87
- this._loaded = true;
88
- return this._data;
89
- }
90
- catch (error) {
91
- this._error = error instanceof Error
92
- ? error
93
- : new Error(String(error));
94
- this._loaded = false;
95
- throw this._error;
96
- }
97
- finally {
98
- this._loading = false;
99
- this._promise = null;
100
- }
101
- }
102
- _buildFetchOptions() {
103
- const options = { ...this._options.fetchOptions };
104
- if (this._options.timeout && this._options.timeout > 0) {
105
- const controller = new AbortController();
106
- setTimeout(() => controller.abort(), this._options.timeout);
107
- options.signal = controller.signal;
108
- }
109
- return options;
110
- }
111
- }
112
- //# sourceMappingURL=remote-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-data.js","sourceRoot":"","sources":["../../src/remote-data.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- export interface RemoteDataOptions<T = unknown> {
2
- fetchOptions?: RequestInit;
3
- transform?: (raw: unknown) => T;
4
- timeout?: number;
5
- retries?: number;
6
- retryDelay?: number;
7
- initialData?: T;
8
- }
9
- export default class RemoteData<T = unknown> {
10
- _loaded: boolean;
11
- _loading: boolean;
12
- _data: T | null;
13
- _url: string;
14
- _error: Error | null;
15
- _promise: Promise<T | null> | null;
16
- _options: RemoteDataOptions<T>;
17
- constructor(url: string, options?: RemoteDataOptions<T>);
18
- get url(): string;
19
- set url(value: string);
20
- get loaded(): boolean;
21
- get loading(): boolean;
22
- get error(): Error | null;
23
- get succeeded(): boolean;
24
- get data(): T | null;
25
- getData(): Promise<T | null>;
26
- load(): Promise<T | null>;
27
- reset(): void;
28
- _fetchWithRetries(): Promise<T | null>;
29
- _doFetch(): Promise<T | null>;
30
- _buildFetchOptions(): RequestInit;
31
- }
32
- //# sourceMappingURL=remote-data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-data.d.ts","sourceRoot":"","sources":["../../src/remote-data.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAE1C,YAAY,CAAC,EAAE,WAAW,CAAC;IAE3B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC;IAEhC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,CAAC,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,CAAC,GAAG,OAAO;IACvC,OAAO,EAAE,OAAO,CAAS;IACzB,QAAQ,EAAE,OAAO,CAAS;IAC1B,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC5B,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC1C,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAEnB,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAiB,CAAC,CAAC,CAAM;IAU3D,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAKpB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAExB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,CAEnB;IAEK,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAO5B,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAQ/B,KAAK,IAAI,IAAI;IAUP,iBAAiB,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBtC,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA+BnC,kBAAkB,IAAI,WAAW;CAWpC"}
@@ -1,112 +0,0 @@
1
- export default class RemoteData {
2
- constructor(url, options = {}) {
3
- this._loaded = false;
4
- this._loading = false;
5
- this._data = null;
6
- this._error = null;
7
- this._promise = null;
8
- this._url = url;
9
- this._options = options;
10
- if (options.initialData !== undefined) {
11
- this._data = options.initialData;
12
- this._loaded = true;
13
- }
14
- }
15
- get url() {
16
- return this._url;
17
- }
18
- set url(value) {
19
- if (this._url !== value) {
20
- this._url = value;
21
- this._loaded = false;
22
- }
23
- }
24
- get loaded() {
25
- return this._loaded;
26
- }
27
- get loading() {
28
- return this._loading;
29
- }
30
- get error() {
31
- return this._error;
32
- }
33
- get succeeded() {
34
- return this._loaded && !this._error;
35
- }
36
- get data() {
37
- return this._data;
38
- }
39
- async getData() {
40
- if (!this._loaded) {
41
- await this.load();
42
- }
43
- return this._data;
44
- }
45
- async load() {
46
- if (this._loading && this._promise) {
47
- return this._promise;
48
- }
49
- this._promise = this._fetchWithRetries();
50
- return this._promise;
51
- }
52
- reset() {
53
- this._loaded = false;
54
- this._loading = false;
55
- this._data = null;
56
- this._error = null;
57
- this._promise = null;
58
- }
59
- async _fetchWithRetries() {
60
- const maxAttempts = (this._options.retries ?? 0) + 1;
61
- const retryDelay = this._options.retryDelay ?? 1000;
62
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
63
- try {
64
- return await this._doFetch();
65
- }
66
- catch (error) {
67
- if (attempt === maxAttempts)
68
- throw this._error;
69
- await new Promise((r) => setTimeout(r, retryDelay));
70
- }
71
- }
72
- return null;
73
- }
74
- async _doFetch() {
75
- try {
76
- this._error = null;
77
- this._loading = true;
78
- const fetchOptions = this._buildFetchOptions();
79
- const response = await fetch(this._url, fetchOptions);
80
- if (!response.ok) {
81
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
82
- }
83
- const raw = await response.json();
84
- this._data = this._options.transform
85
- ? this._options.transform(raw)
86
- : raw;
87
- this._loaded = true;
88
- return this._data;
89
- }
90
- catch (error) {
91
- this._error = error instanceof Error
92
- ? error
93
- : new Error(String(error));
94
- this._loaded = false;
95
- throw this._error;
96
- }
97
- finally {
98
- this._loading = false;
99
- this._promise = null;
100
- }
101
- }
102
- _buildFetchOptions() {
103
- const options = { ...this._options.fetchOptions };
104
- if (this._options.timeout && this._options.timeout > 0) {
105
- const controller = new AbortController();
106
- setTimeout(() => controller.abort(), this._options.timeout);
107
- options.signal = controller.signal;
108
- }
109
- return options;
110
- }
111
- }
112
- //# sourceMappingURL=remote-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-data.js","sourceRoot":"","sources":["../../src/remote-data.ts"],"names":[],"mappings":"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"}
@@ -1,149 +0,0 @@
1
- export interface RemoteDataOptions<T = unknown> {
2
- /** Opciones nativas de fetch (headers, method, body, signal, etc.) */
3
- fetchOptions?: RequestInit;
4
- /** Función para transformar la respuesta antes de almacenarla */
5
- transform?: (raw: unknown) => T;
6
- /** Tiempo máximo de espera en ms */
7
- timeout?: number;
8
- /** Número de reintentos ante fallo (por defecto: 0) */
9
- retries?: number;
10
- /** Delay entre reintentos en ms (por defecto: 1000) */
11
- retryDelay?: number;
12
- /** Datos iniciales (evita el primer fetch si se proporcionan) */
13
- initialData?: T;
14
- }
15
-
16
- export default class RemoteData<T = unknown> {
17
- _loaded: boolean = false;
18
- _loading: boolean = false;
19
- _data: T | null = null;
20
- _url: string;
21
- _error: Error | null = null;
22
- _promise: Promise<T | null> | null = null;
23
- _options: RemoteDataOptions<T>;
24
-
25
- constructor(url: string, options: RemoteDataOptions<T> = {}) {
26
- this._url = url;
27
- this._options = options;
28
-
29
- if (options.initialData !== undefined) {
30
- this._data = options.initialData;
31
- this._loaded = true;
32
- }
33
- }
34
-
35
- get url(): string {
36
- return this._url;
37
- }
38
-
39
- set url(value: string) {
40
- if (this._url !== value) {
41
- this._url = value;
42
- this._loaded = false;
43
- }
44
- }
45
-
46
- get loaded(): boolean {
47
- return this._loaded;
48
- }
49
-
50
- get loading(): boolean {
51
- return this._loading;
52
- }
53
-
54
- get error(): Error | null {
55
- return this._error;
56
- }
57
-
58
- get succeeded(): boolean {
59
- return this._loaded && !this._error;
60
- }
61
-
62
- get data(): T | null {
63
- return this._data;
64
- }
65
-
66
- async getData(): Promise<T | null> {
67
- if (!this._loaded) {
68
- await this.load();
69
- }
70
- return this._data;
71
- }
72
-
73
- async load(): Promise<T | null> {
74
- if (this._loading && this._promise) {
75
- return this._promise;
76
- }
77
- this._promise = this._fetchWithRetries();
78
- return this._promise;
79
- }
80
-
81
- reset(): void {
82
- this._loaded = false;
83
- this._loading = false;
84
- this._data = null;
85
- this._error = null;
86
- this._promise = null;
87
- }
88
-
89
- // ── Internos ────────────────────────────────────────────────
90
-
91
- async _fetchWithRetries(): Promise<T | null> {
92
- const maxAttempts = (this._options.retries ?? 0) + 1;
93
- const retryDelay = this._options.retryDelay ?? 1000;
94
-
95
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
96
- try {
97
- return await this._doFetch();
98
- } catch (error) {
99
- if (attempt === maxAttempts) throw this._error;
100
- await new Promise((r) => setTimeout(r, retryDelay));
101
- }
102
- }
103
-
104
- return null; // unreachable, satisface al compilador
105
- }
106
-
107
- async _doFetch(): Promise<T | null> {
108
- try {
109
- this._error = null;
110
- this._loading = true;
111
-
112
- const fetchOptions = this._buildFetchOptions();
113
- const response = await fetch(this._url, fetchOptions);
114
-
115
- if (!response.ok) {
116
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
117
- }
118
-
119
- const raw = await response.json();
120
- this._data = this._options.transform
121
- ? this._options.transform(raw)
122
- : (raw as T);
123
- this._loaded = true;
124
-
125
- return this._data;
126
- } catch (error) {
127
- this._error = error instanceof Error
128
- ? error
129
- : new Error(String(error));
130
- this._loaded = false;
131
- throw this._error;
132
- } finally {
133
- this._loading = false;
134
- this._promise = null;
135
- }
136
- }
137
-
138
- _buildFetchOptions(): RequestInit {
139
- const options: RequestInit = {...this._options.fetchOptions};
140
-
141
- if (this._options.timeout && this._options.timeout > 0) {
142
- const controller = new AbortController();
143
- setTimeout(() => controller.abort(), this._options.timeout);
144
- options.signal = controller.signal;
145
- }
146
-
147
- return options;
148
- }
149
- }