@develia/commons 0.4.2 → 0.4.4

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 +34 -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 +33 -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 +2 -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 +33 -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 +38 -169
  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
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.submitForm = submitForm;
4
+ exports.formToObject = formToObject;
5
+ exports.objectToFormData = objectToFormData;
6
+ exports.ajaxSubmission = ajaxSubmission;
7
+ exports.ajaxSubmit = ajaxSubmit;
8
+ function submitForm(url, data, method = 'POST', target) {
9
+ const form = document.createElement('form');
10
+ form.method = method.toUpperCase();
11
+ form.action = url;
12
+ form.style.display = 'none';
13
+ if (target) {
14
+ form.target = target;
15
+ }
16
+ const appendInputs = (keyPrefix, value) => {
17
+ if (Array.isArray(value)) {
18
+ value.forEach(val => {
19
+ appendInputs(`${keyPrefix}[]`, val);
20
+ });
21
+ }
22
+ else if (typeof value === 'object' && value !== null) {
23
+ for (const subKey in value) {
24
+ if (value.hasOwnProperty(subKey)) {
25
+ appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
26
+ }
27
+ }
28
+ }
29
+ else {
30
+ const input = document.createElement('input');
31
+ input.type = 'hidden';
32
+ input.name = keyPrefix;
33
+ input.value = String(value);
34
+ form.appendChild(input);
35
+ }
36
+ };
37
+ for (const key in data) {
38
+ if (data.hasOwnProperty(key)) {
39
+ appendInputs(key, data[key]);
40
+ }
41
+ }
42
+ document.body.appendChild(form);
43
+ form.submit();
44
+ }
45
+ function formToObject(form) {
46
+ const fd = new FormData(form);
47
+ const out = {};
48
+ for (const [key, value] of fd.entries()) {
49
+ if (key in out) {
50
+ const current = out[key];
51
+ if (Array.isArray(current)) {
52
+ current.push(value);
53
+ }
54
+ else {
55
+ out[key] = [current, value];
56
+ }
57
+ }
58
+ else {
59
+ out[key] = value;
60
+ }
61
+ }
62
+ return out;
63
+ }
64
+ function _objectToFormData(data, formData, parentKey = '') {
65
+ for (const key in data) {
66
+ if (data.hasOwnProperty(key)) {
67
+ const value = data[key];
68
+ if (value instanceof Date) {
69
+ formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());
70
+ }
71
+ else if (value instanceof File) {
72
+ formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
73
+ }
74
+ else if (typeof value === 'object' && !Array.isArray(value)) {
75
+ _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
76
+ }
77
+ else if (Array.isArray(value)) {
78
+ value.forEach((item, index) => {
79
+ const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
80
+ if (typeof item === 'object' && !Array.isArray(item)) {
81
+ _objectToFormData(item, formData, arrayKey);
82
+ }
83
+ else {
84
+ formData.append(arrayKey, item);
85
+ }
86
+ });
87
+ }
88
+ else {
89
+ formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
90
+ }
91
+ }
92
+ }
93
+ return formData;
94
+ }
95
+ function objectToFormData(data) {
96
+ let formData = new FormData();
97
+ return _objectToFormData(data, formData);
98
+ }
99
+ function ajaxSubmission(selectorOrElement, onSuccess = undefined, onFailure = undefined) {
100
+ const form = typeof selectorOrElement === 'string'
101
+ ? document.querySelector(selectorOrElement)
102
+ : selectorOrElement;
103
+ if (!(form instanceof HTMLFormElement)) {
104
+ return;
105
+ }
106
+ form.addEventListener('submit', async (event) => {
107
+ event.preventDefault();
108
+ let promise = ajaxSubmit(form);
109
+ if (promise) {
110
+ if (onSuccess)
111
+ promise = promise.then(onSuccess);
112
+ if (onFailure)
113
+ promise.catch(onFailure);
114
+ }
115
+ });
116
+ }
117
+ async function ajaxSubmit(selectorOrElement) {
118
+ const form = typeof selectorOrElement === 'string'
119
+ ? document.querySelector(selectorOrElement)
120
+ : selectorOrElement;
121
+ if (!(form instanceof HTMLFormElement)) {
122
+ throw new Error("Invalid element.");
123
+ }
124
+ return await fetch(form.action, {
125
+ method: form.method,
126
+ body: new FormData(form),
127
+ });
128
+ }
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -17,10 +17,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.CleanURLSearchParams = exports.From = exports.from = exports.RemoteData = exports.Lazy = exports.AsyncPoolExecutor = exports.Stopwatch = exports.TimeSpan = exports.Timer = exports.Order = exports.KeyValuePair = exports.Type = void 0;
20
+ exports.CleanURLSearchParams = exports.From = exports.from = exports.Lazy = exports.AsyncPoolExecutor = exports.Stopwatch = exports.TimeSpan = exports.Timer = exports.Order = exports.KeyValuePair = exports.TypeCode = exports.Type = void 0;
21
21
  __exportStar(require("./types.js"), exports);
22
22
  var type_js_1 = require("./type.js");
23
23
  Object.defineProperty(exports, "Type", { enumerable: true, get: function () { return __importDefault(type_js_1).default; } });
24
+ var type_code_js_1 = require("./type-code.js");
25
+ Object.defineProperty(exports, "TypeCode", { enumerable: true, get: function () { return __importDefault(type_code_js_1).default; } });
24
26
  __exportStar(require("./utilities.js"), exports);
25
27
  __exportStar(require("./string.js"), exports);
26
28
  __exportStar(require("./math.js"), exports);
@@ -38,13 +40,12 @@ var async_pool_executor_js_1 = require("./async-pool-executor.js");
38
40
  Object.defineProperty(exports, "AsyncPoolExecutor", { enumerable: true, get: function () { return __importDefault(async_pool_executor_js_1).default; } });
39
41
  var lazy_js_1 = require("./lazy.js");
40
42
  Object.defineProperty(exports, "Lazy", { enumerable: true, get: function () { return __importDefault(lazy_js_1).default; } });
41
- var remote_data_js_1 = require("./remote-data.js");
42
- Object.defineProperty(exports, "RemoteData", { enumerable: true, get: function () { return __importDefault(remote_data_js_1).default; } });
43
43
  var from_js_1 = require("./from.js");
44
44
  Object.defineProperty(exports, "from", { enumerable: true, get: function () { return __importDefault(from_js_1).default; } });
45
45
  Object.defineProperty(exports, "From", { enumerable: true, get: function () { return from_js_1.From; } });
46
46
  var clean_url_search_params_js_1 = require("./clean-url-search-params.js");
47
47
  Object.defineProperty(exports, "CleanURLSearchParams", { enumerable: true, get: function () { return __importDefault(clean_url_search_params_js_1).default; } });
48
+ __exportStar(require("./browser/index.js"), exports);
48
49
  __exportStar(require("./array.js"), exports);
49
50
  __exportStar(require("./collections/index.js"), exports);
50
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,6CAA2B;AAC3B,qCAA4C;AAAnC,gHAAA,OAAO,OAAQ;AAGxB,iDAA+B;AAC/B,8CAA4B;AAC5B,4CAA0B;AAG1B,yDAA8D;AAArD,kIAAA,OAAO,OAAgB;AAChC,uCAA8C;AAArC,kHAAA,OAAO,OAAS;AAGzB,uCAA8C;AAArC,kHAAA,OAAO,OAAS;AACzB,6CAAoD;AAA3C,wHAAA,OAAO,OAAY;AAC5B,+CAAsD;AAA7C,0HAAA,OAAO,OAAa;AAC7B,mEAAwE;AAA/D,4IAAA,OAAO,OAAqB;AAGrC,qCAA4C;AAAnC,gHAAA,OAAO,OAAQ;AACxB,mDAAyD;AAAhD,6HAAA,OAAO,OAAc;AAC9B,qCAAkD;AAAzC,gHAAA,OAAO,OAAQ;AAAE,+FAAA,IAAI,OAAA;AAG9B,2EAA+E;AAAtE,mJAAA,OAAO,OAAwB;AAIxC,6CAA2B;AAE3B,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,6CAA2B;AAC3B,qCAA0C;AAAlC,gHAAA,OAAO,OAAQ;AACvB,+CAAmD;AAA3C,yHAAA,OAAO,OAAY;AAG3B,iDAA+B;AAC/B,8CAA4B;AAC5B,4CAA0B;AAG1B,yDAA4D;AAApD,kIAAA,OAAO,OAAgB;AAC/B,uCAA4C;AAApC,kHAAA,OAAO,OAAS;AAGxB,uCAA4C;AAApC,kHAAA,OAAO,OAAS;AACxB,6CAAkD;AAA1C,wHAAA,OAAO,OAAY;AAC3B,+CAAoD;AAA5C,0HAAA,OAAO,OAAa;AAC5B,mEAAsE;AAA9D,4IAAA,OAAO,OAAqB;AAGpC,qCAA0C;AAAlC,gHAAA,OAAO,OAAQ;AACvB,qCAAgD;AAAxC,gHAAA,OAAO,OAAQ;AAAE,+FAAA,IAAI,OAAA;AAG7B,2EAA6E;AAArE,mJAAA,OAAO,OAAwB;AAEvC,qDAAmC;AAInC,6CAA2B;AAE3B,yDAAuC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var TypeCode;
4
+ (function (TypeCode) {
5
+ TypeCode["String"] = "string";
6
+ TypeCode["Number"] = "number";
7
+ TypeCode["Boolean"] = "boolean";
8
+ TypeCode["Symbol"] = "symbol";
9
+ TypeCode["BigInt"] = "bigint";
10
+ TypeCode["Null"] = "null";
11
+ TypeCode["Undefined"] = "undefined";
12
+ TypeCode["Object"] = "object";
13
+ TypeCode["Function"] = "function";
14
+ TypeCode["Array"] = "array";
15
+ TypeCode["Unknown"] = "unknown";
16
+ })(TypeCode || (TypeCode = {}));
17
+ exports.default = TypeCode;
18
+ //# sourceMappingURL=type-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-code.js","sourceRoot":"","sources":["../../src/type-code.ts"],"names":[],"mappings":";;AAAA,IAAK,QAYJ;AAZD,WAAK,QAAQ;IACT,6BAAoB,CAAA;IACpB,6BAAoB,CAAA;IACpB,+BAAqB,CAAA;IACrB,6BAAoB,CAAA;IACpB,6BAAoB,CAAA;IACpB,yBAAkB,CAAA;IAClB,mCAAuB,CAAA;IACvB,6BAAoB,CAAA;IACpB,iCAAsB,CAAA;IACtB,2BAAmB,CAAA;IACnB,+BAAqB,CAAA;AACzB,CAAC,EAZI,QAAQ,KAAR,QAAQ,QAYZ;AAGD,kBAAe,QAAQ,CAAC"}
package/dist/cjs/type.js CHANGED
@@ -1,16 +1,216 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var Type;
4
- (function (Type) {
5
- Type["Undefined"] = "undefined";
6
- Type["Number"] = "number";
7
- Type["String"] = "string";
8
- Type["Boolean"] = "boolean";
9
- Type["Object"] = "object";
10
- Type["Function"] = "function";
11
- Type["Symbol"] = "symbol";
12
- Type["BigInt"] = "bigint";
13
- Type["Null"] = "null";
14
- })(Type || (Type = {}));
6
+ const type_code_js_1 = __importDefault(require("./type-code.js"));
7
+ class Type {
8
+ constructor(name, constructorRef, typeCode) {
9
+ this.name = name;
10
+ this.constructorRef = constructorRef;
11
+ this.typeCode = typeCode;
12
+ }
13
+ static of(target) {
14
+ if (target === null)
15
+ return Type.Null;
16
+ if (target === undefined)
17
+ return Type.Undefined;
18
+ const jsType = typeof target;
19
+ if (jsType !== 'object' && jsType !== 'function') {
20
+ return this._getOrCreate(jsType, undefined, jsType);
21
+ }
22
+ if (jsType === 'function') {
23
+ return this._resolveFunction(target);
24
+ }
25
+ if (Array.isArray(target)) {
26
+ return Type.Array;
27
+ }
28
+ return this._resolveObject(target);
29
+ }
30
+ static _resolveFunction(fn) {
31
+ const isConstructor = this._isConstructorLike(fn);
32
+ if (isConstructor) {
33
+ return this._getOrCreate(fn, fn, type_code_js_1.default.Object, fn.name || 'AnonymousClass');
34
+ }
35
+ return Type.Function;
36
+ }
37
+ static _resolveObject(obj) {
38
+ const proto = Object.getPrototypeOf(obj);
39
+ const ctor = proto?.constructor;
40
+ const name = ctor?.name || 'Object';
41
+ if (!ctor || ctor === Object) {
42
+ return Type.Object;
43
+ }
44
+ return this._getOrCreate(ctor, ctor, type_code_js_1.default.Object, name);
45
+ }
46
+ static _isConstructorLike(fn) {
47
+ try {
48
+ if (fn.toString().startsWith('class '))
49
+ return true;
50
+ }
51
+ catch {
52
+ }
53
+ if (fn === Object || fn === Function || fn === Array)
54
+ return true;
55
+ const proto = fn.prototype;
56
+ if (!proto || typeof proto !== 'object')
57
+ return false;
58
+ const ownKeys = Object.getOwnPropertyNames(proto);
59
+ return ownKeys.length > 1 || (ownKeys.length === 1 && ownKeys[0] !== 'constructor');
60
+ }
61
+ get isPrimitive() {
62
+ return (this.typeCode === type_code_js_1.default.String ||
63
+ this.typeCode === type_code_js_1.default.Number ||
64
+ this.typeCode === type_code_js_1.default.Boolean ||
65
+ this.typeCode === type_code_js_1.default.Symbol ||
66
+ this.typeCode === type_code_js_1.default.BigInt);
67
+ }
68
+ get isNullish() {
69
+ return this.typeCode === type_code_js_1.default.Null || this.typeCode === type_code_js_1.default.Undefined;
70
+ }
71
+ get isReferenceType() {
72
+ return !this.isPrimitive && !this.isNullish;
73
+ }
74
+ get isArray() {
75
+ return this.typeCode === type_code_js_1.default.Array ||
76
+ this.constructorRef === Array;
77
+ }
78
+ get isFunction() {
79
+ return this.typeCode === type_code_js_1.default.Function;
80
+ }
81
+ get isValueType() {
82
+ return this.isPrimitive;
83
+ }
84
+ get isClass() {
85
+ if (!this.constructorRef)
86
+ return false;
87
+ try {
88
+ return this.constructorRef.toString().startsWith('class ');
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ }
94
+ get fullName() {
95
+ if (this.isPrimitive || this.isNullish) {
96
+ return `System.${this.name.charAt(0).toUpperCase()}${this.name.slice(1)}`;
97
+ }
98
+ return this.name;
99
+ }
100
+ get baseType() {
101
+ if (!this.constructorRef)
102
+ return undefined;
103
+ const parentProto = Object.getPrototypeOf(this.constructorRef.prototype);
104
+ if (!parentProto || parentProto === Object.prototype) {
105
+ return this === Type.Object ? undefined : Type.Object;
106
+ }
107
+ const parentCtor = parentProto.constructor;
108
+ return Type.of(parentCtor);
109
+ }
110
+ getInheritanceChain() {
111
+ const chain = [this];
112
+ let current = this.baseType;
113
+ while (current && !chain.includes(current)) {
114
+ chain.push(current);
115
+ current = current.baseType;
116
+ }
117
+ return Object.freeze(chain);
118
+ }
119
+ isAssignableTo(target) {
120
+ if (this === target)
121
+ return true;
122
+ if (!this.constructorRef || !target.constructorRef)
123
+ return false;
124
+ let proto = this.constructorRef.prototype;
125
+ while (proto) {
126
+ if (proto.constructor === target.constructorRef)
127
+ return true;
128
+ proto = Object.getPrototypeOf(proto);
129
+ }
130
+ return false;
131
+ }
132
+ isAssignableFrom(source) {
133
+ return source.isAssignableTo(this);
134
+ }
135
+ isSubclassOf(parent) {
136
+ if (this === parent)
137
+ return false;
138
+ return this.isAssignableTo(parent);
139
+ }
140
+ getMethodNames() {
141
+ if (!this.constructorRef?.prototype)
142
+ return Object.freeze([]);
143
+ return Object.freeze(Object.getOwnPropertyNames(this.constructorRef.prototype)
144
+ .filter(n => n !== 'constructor' &&
145
+ typeof Object.getOwnPropertyDescriptor(this.constructorRef.prototype, n)?.value === 'function'));
146
+ }
147
+ getPropertyNames() {
148
+ if (!this.constructorRef?.prototype)
149
+ return Object.freeze([]);
150
+ return Object.freeze(Object.getOwnPropertyNames(this.constructorRef.prototype)
151
+ .filter(n => n !== 'constructor' &&
152
+ typeof Object.getOwnPropertyDescriptor(this.constructorRef.prototype, n)?.value !== 'function'));
153
+ }
154
+ getMemberNames() {
155
+ if (!this.constructorRef?.prototype)
156
+ return Object.freeze([]);
157
+ return Object.freeze(Object.getOwnPropertyNames(this.constructorRef.prototype)
158
+ .filter(n => n !== 'constructor'));
159
+ }
160
+ hasMethod(name) {
161
+ if (!this.constructorRef?.prototype)
162
+ return false;
163
+ return typeof this.constructorRef.prototype[name] === 'function';
164
+ }
165
+ hasProperty(name) {
166
+ if (!this.constructorRef?.prototype)
167
+ return false;
168
+ return name in this.constructorRef.prototype && !this.hasMethod(name);
169
+ }
170
+ getStaticMemberNames() {
171
+ if (!this.constructorRef)
172
+ return Object.freeze([]);
173
+ const skip = new Set(['prototype', 'length', 'name', 'caller', 'arguments']);
174
+ return Object.freeze(Object.getOwnPropertyNames(this.constructorRef)
175
+ .filter(n => !skip.has(n)));
176
+ }
177
+ toString() {
178
+ return `Type [${this.name}]`;
179
+ }
180
+ [Symbol.toPrimitive](hint) {
181
+ let hash = 0;
182
+ for (let i = 0; i < this.name.length; i++) {
183
+ hash = ((hash << 5) - hash + this.name.charCodeAt(i)) | 0;
184
+ }
185
+ return hint === 'number' ? hash : this.toString();
186
+ }
187
+ get [Symbol.toStringTag]() {
188
+ return `Type<${this.name}>`;
189
+ }
190
+ static _getOrCreate(key, constructorRef, typeCode, customName) {
191
+ const cached = this._cache.get(key);
192
+ if (cached)
193
+ return cached;
194
+ const name = customName
195
+ ?? (typeof key === 'string' ? key : 'unknown');
196
+ const ref = typeof constructorRef === 'function'
197
+ ? constructorRef
198
+ : undefined;
199
+ const instance = new Type(name, ref, typeCode);
200
+ this._cache.set(key, instance);
201
+ return instance;
202
+ }
203
+ }
204
+ Type._cache = new Map();
205
+ Type.String = Type._getOrCreate('string', undefined, type_code_js_1.default.String, 'string');
206
+ Type.Number = Type._getOrCreate('number', undefined, type_code_js_1.default.Number, 'number');
207
+ Type.Boolean = Type._getOrCreate('boolean', undefined, type_code_js_1.default.Boolean, 'boolean');
208
+ Type.Symbol = Type._getOrCreate('symbol', undefined, type_code_js_1.default.Symbol, 'symbol');
209
+ Type.BigInt = Type._getOrCreate('bigint', undefined, type_code_js_1.default.BigInt, 'bigint');
210
+ Type.Null = Type._getOrCreate('null', undefined, type_code_js_1.default.Null, 'null');
211
+ Type.Undefined = Type._getOrCreate('undefined', undefined, type_code_js_1.default.Undefined, 'undefined');
212
+ Type.Object = Type._getOrCreate(Object, Object, type_code_js_1.default.Object, 'Object');
213
+ Type.Function = Type._getOrCreate(Function, Function, type_code_js_1.default.Function, 'Function');
214
+ Type.Array = Type._getOrCreate(Array, Array, type_code_js_1.default.Array, 'Array');
15
215
  exports.default = Type;
16
216
  //# sourceMappingURL=type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/type.ts"],"names":[],"mappings":";;AAKA,IAAK,IAUJ;AAVD,WAAK,IAAI;IACL,+BAAuB,CAAA;IACvB,yBAAiB,CAAA;IACjB,yBAAiB,CAAA;IACjB,2BAAmB,CAAA;IACnB,yBAAiB,CAAA;IACjB,6BAAqB,CAAA;IACrB,yBAAiB,CAAA;IACjB,yBAAiB,CAAA;IACjB,qBAAa,CAAA;AACjB,CAAC,EAVI,IAAI,KAAJ,IAAI,QAUR;AAED,kBAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/type.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.lazy = lazy;
6
7
  exports.isIterable = isIterable;
7
8
  exports.isString = isString;
8
9
  exports.isNumber = isNumber;
@@ -11,7 +12,6 @@ exports.isObject = isObject;
11
12
  exports.isArray = isArray;
12
13
  exports.isFunction = isFunction;
13
14
  exports.deepEqual = deepEqual;
14
- exports.submitForm = submitForm;
15
15
  exports.shallowEqual = shallowEqual;
16
16
  exports.delay = delay;
17
17
  exports.isUndefined = isUndefined;
@@ -22,16 +22,44 @@ exports.isSymbol = isSymbol;
22
22
  exports.isNullOrUndefined = isNullOrUndefined;
23
23
  exports.isEmpty = isEmpty;
24
24
  exports.isEmptyOrWhitespace = isEmptyOrWhitespace;
25
- exports.ajaxSubmit = ajaxSubmit;
26
25
  exports.toPairs = toPairs;
27
26
  exports.promisify = promisify;
28
- exports.ajaxSubmission = ajaxSubmission;
29
27
  exports.deepClone = deepClone;
30
28
  exports.getType = getType;
31
- exports.formToObject = formToObject;
32
- exports.objectToFormData = objectToFormData;
33
29
  const key_value_pair_js_1 = __importDefault(require("./key-value-pair.js"));
34
30
  const type_js_1 = __importDefault(require("./type.js"));
31
+ function lazy(factory) {
32
+ let instance = null;
33
+ const getInstance = () => {
34
+ if (!instance) {
35
+ instance = factory();
36
+ }
37
+ return instance;
38
+ };
39
+ return new Proxy({}, {
40
+ get(_, prop, receiver) {
41
+ return Reflect.get(getInstance(), prop, receiver);
42
+ },
43
+ set(_, prop, value, receiver) {
44
+ return Reflect.set(getInstance(), prop, value, receiver);
45
+ },
46
+ has(_, prop) {
47
+ return Reflect.has(getInstance(), prop);
48
+ },
49
+ deleteProperty(_, prop) {
50
+ return Reflect.deleteProperty(getInstance(), prop);
51
+ },
52
+ ownKeys() {
53
+ return Reflect.ownKeys(getInstance());
54
+ },
55
+ getOwnPropertyDescriptor(_, prop) {
56
+ return Reflect.getOwnPropertyDescriptor(getInstance(), prop);
57
+ },
58
+ getPrototypeOf() {
59
+ return Reflect.getPrototypeOf(getInstance());
60
+ },
61
+ });
62
+ }
35
63
  function isIterable(obj) {
36
64
  return obj[Symbol.iterator] === 'function';
37
65
  }
@@ -86,43 +114,6 @@ function deepEqual(a, b) {
86
114
  }
87
115
  return false;
88
116
  }
89
- function submitForm(url, data, method = 'POST', target) {
90
- const form = document.createElement('form');
91
- form.method = method.toUpperCase();
92
- form.action = url;
93
- form.style.display = 'none';
94
- if (target) {
95
- form.target = target;
96
- }
97
- const appendInputs = (keyPrefix, value) => {
98
- if (Array.isArray(value)) {
99
- value.forEach(val => {
100
- appendInputs(`${keyPrefix}[]`, val);
101
- });
102
- }
103
- else if (typeof value === 'object' && value !== null) {
104
- for (const subKey in value) {
105
- if (value.hasOwnProperty(subKey)) {
106
- appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
107
- }
108
- }
109
- }
110
- else {
111
- const input = document.createElement('input');
112
- input.type = 'hidden';
113
- input.name = keyPrefix;
114
- input.value = String(value);
115
- form.appendChild(input);
116
- }
117
- };
118
- for (const key in data) {
119
- if (data.hasOwnProperty(key)) {
120
- appendInputs(key, data[key]);
121
- }
122
- }
123
- document.body.appendChild(form);
124
- form.submit();
125
- }
126
117
  function shallowEqual(a, b) {
127
118
  if (a === b) {
128
119
  return true;
@@ -177,18 +168,6 @@ function isEmptyOrWhitespace(value) {
177
168
  (typeof value === 'string' && value.trim() === '') ||
178
169
  value === null || typeof value === 'undefined';
179
170
  }
180
- async function ajaxSubmit(selectorOrElement) {
181
- const form = typeof selectorOrElement === 'string'
182
- ? document.querySelector(selectorOrElement)
183
- : selectorOrElement;
184
- if (!(form instanceof HTMLFormElement)) {
185
- throw new Error("Invalid element.");
186
- }
187
- return await fetch(form.action, {
188
- method: form.method,
189
- body: new FormData(form),
190
- });
191
- }
192
171
  function toPairs(obj) {
193
172
  let output = [];
194
173
  for (const key in obj) {
@@ -212,24 +191,6 @@ function promisify(thing) {
212
191
  }
213
192
  return Promise.resolve(thing);
214
193
  }
215
- function ajaxSubmission(selectorOrElement, onSuccess = undefined, onFailure = undefined) {
216
- const form = typeof selectorOrElement === 'string'
217
- ? document.querySelector(selectorOrElement)
218
- : selectorOrElement;
219
- if (!(form instanceof HTMLFormElement)) {
220
- return;
221
- }
222
- form.addEventListener('submit', async (event) => {
223
- event.preventDefault();
224
- let promise = ajaxSubmit(form);
225
- if (promise) {
226
- if (onSuccess)
227
- promise = promise.then(onSuccess);
228
- if (onFailure)
229
- promise.catch(onFailure);
230
- }
231
- });
232
- }
233
194
  function deepClone(obj) {
234
195
  if (obj === null || typeof obj !== 'object') {
235
196
  return obj;
@@ -250,60 +211,6 @@ function deepClone(obj) {
250
211
  return copy;
251
212
  }
252
213
  function getType(value) {
253
- return value === null ? type_js_1.default.Null : type_js_1.default[typeof value];
254
- }
255
- function formToObject(form) {
256
- const fd = new FormData(form);
257
- const out = {};
258
- for (const [key, value] of fd.entries()) {
259
- if (key in out) {
260
- const current = out[key];
261
- if (Array.isArray(current)) {
262
- current.push(value);
263
- }
264
- else {
265
- out[key] = [current, value];
266
- }
267
- }
268
- else {
269
- out[key] = value;
270
- }
271
- }
272
- return out;
273
- }
274
- function _objectToFormData(data, formData, parentKey = '') {
275
- for (const key in data) {
276
- if (data.hasOwnProperty(key)) {
277
- const value = data[key];
278
- if (value instanceof Date) {
279
- formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());
280
- }
281
- else if (value instanceof File) {
282
- formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
283
- }
284
- else if (typeof value === 'object' && !Array.isArray(value)) {
285
- _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
286
- }
287
- else if (Array.isArray(value)) {
288
- value.forEach((item, index) => {
289
- const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
290
- if (typeof item === 'object' && !Array.isArray(item)) {
291
- _objectToFormData(item, formData, arrayKey);
292
- }
293
- else {
294
- formData.append(arrayKey, item);
295
- }
296
- });
297
- }
298
- else {
299
- formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
300
- }
301
- }
302
- }
303
- return formData;
304
- }
305
- function objectToFormData(data) {
306
- let formData = new FormData();
307
- return _objectToFormData(data, formData);
214
+ return type_js_1.default.of(value);
308
215
  }
309
216
  //# sourceMappingURL=utilities.js.map