@leyyo/common 1.3.3 → 1.3.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 (71) hide show
  1. package/README.md +57 -391
  2. package/dist/class/logger.instance.js +7 -8
  3. package/dist/class/logger.instance.js.map +1 -1
  4. package/dist/common/array.fn.js +20 -12
  5. package/dist/common/array.fn.js.map +1 -1
  6. package/dist/common/deploy.fn.js +6 -5
  7. package/dist/common/deploy.fn.js.map +1 -1
  8. package/dist/common/enum.fn.d.ts +12 -19
  9. package/dist/common/enum.fn.js +45 -104
  10. package/dist/common/enum.fn.js.map +1 -1
  11. package/dist/common/error.fn.d.ts +25 -9
  12. package/dist/common/error.fn.js +93 -82
  13. package/dist/common/error.fn.js.map +1 -1
  14. package/dist/common/event.fn.js +7 -6
  15. package/dist/common/event.fn.js.map +1 -1
  16. package/dist/common/fqn.fn.d.ts +5 -1
  17. package/dist/common/fqn.fn.js +104 -11
  18. package/dist/common/fqn.fn.js.map +1 -1
  19. package/dist/common/index.d.ts +2 -0
  20. package/dist/common/index.js +2 -0
  21. package/dist/common/index.js.map +1 -1
  22. package/dist/common/inert.fn.d.ts +69 -0
  23. package/dist/common/inert.fn.js +352 -0
  24. package/dist/common/inert.fn.js.map +1 -0
  25. package/dist/common/lifecycle.fn.d.ts +2 -2
  26. package/dist/common/lifecycle.fn.js +24 -23
  27. package/dist/common/lifecycle.fn.js.map +1 -1
  28. package/dist/common/list.fn.js +22 -12
  29. package/dist/common/list.fn.js.map +1 -1
  30. package/dist/common/loader.fn.js.map +1 -1
  31. package/dist/common/log.fn.d.ts +2 -2
  32. package/dist/common/log.fn.js +9 -9
  33. package/dist/common/log.fn.js.map +1 -1
  34. package/dist/common/map.fn.js +20 -12
  35. package/dist/common/map.fn.js.map +1 -1
  36. package/dist/common/name.fn.d.ts +5 -0
  37. package/dist/common/name.fn.js +69 -0
  38. package/dist/common/name.fn.js.map +1 -0
  39. package/dist/common/opt.fn.js +1 -1
  40. package/dist/common/opt.fn.js.map +1 -1
  41. package/dist/common/set.fn.js +20 -12
  42. package/dist/common/set.fn.js.map +1 -1
  43. package/dist/common/test.fn.js.map +1 -1
  44. package/dist/const/index.d.ts +4 -0
  45. package/dist/const/index.js +13 -9
  46. package/dist/const/index.js.map +1 -1
  47. package/dist/enum/log-level.js +1 -1
  48. package/dist/enum/log-level.js.map +1 -1
  49. package/dist/error/developer.error.js.map +1 -1
  50. package/dist/error/http.error.js.map +1 -1
  51. package/dist/error/leyyo.error.d.ts +5 -27
  52. package/dist/error/leyyo.error.js +11 -76
  53. package/dist/error/leyyo.error.js.map +1 -1
  54. package/dist/error/multiple.error.js.map +1 -1
  55. package/dist/function/delay.js.map +1 -1
  56. package/dist/function/empty.fn.js +2 -1
  57. package/dist/function/empty.fn.js.map +1 -1
  58. package/dist/function/error-text.d.ts +4 -1
  59. package/dist/function/error-text.js +28 -3
  60. package/dist/function/error-text.js.map +1 -1
  61. package/dist/function/extended-type.js +1 -1
  62. package/dist/function/extended-type.js.map +1 -1
  63. package/dist/function/is.d.ts +2 -1
  64. package/dist/function/is.js +7 -3
  65. package/dist/function/is.js.map +1 -1
  66. package/dist/function/secure-json.js.map +1 -1
  67. package/dist/index.types.d.ts +111 -22
  68. package/dist/index.types.js.map +1 -1
  69. package/dist/loader.js +7 -7
  70. package/dist/loader.js.map +1 -1
  71. package/package.json +1 -1
@@ -0,0 +1,69 @@
1
+ import { InertBuildOpt, InertEagerOpt, InertItem, InertLazyOpt } from "../index.types";
2
+ export declare function buildInert<L extends InertItem<T>, T>(options: InertBuildOpt<L, T>): void;
3
+ /**
4
+ * Define an inert as eager
5
+ *
6
+ * @param {string} cluster - cluster name
7
+ * @param {any} target - target of cluster
8
+ * @param {InertEagerOpt} options - options
9
+ * */
10
+ export declare function defineInertEager<L extends InertItem<T>, T>(cluster: string, target: T, options: InertEagerOpt): void;
11
+ /**
12
+ * Define an inert as lazy (with path)
13
+ *
14
+ * @param {string} cluster - cluster name
15
+ * @param {InertLazyOpt} opt - inert lazy options
16
+ * */
17
+ export declare function defineInertLazy<L extends InertItem<T>, T = unknown>(cluster: string, opt: InertLazyOpt<T>): void;
18
+ /**
19
+ * Check inert defined as lazy, by name
20
+ * Note:
21
+ * - Inert's mode will be shifted lazy to eager after loaded
22
+ *
23
+ * @param {string} cluster - cluster name
24
+ * @param {string} name - target name
25
+ * @return {boolean}
26
+ * */
27
+ export declare function isInertLazy(cluster: string, name: string): boolean;
28
+ /**
29
+ * Check inert failed or conflicted, by name
30
+ *
31
+ * @param {string} cluster - cluster name
32
+ * @param {string} name - target name
33
+ * @return {boolean}
34
+ * */
35
+ export declare function isInertInvalid(cluster: string, name: string): boolean;
36
+ /**
37
+ * Check inert defined as eager, by name
38
+ *
39
+ * @param {string} cluster - cluster name
40
+ * @param {string} name - target name
41
+ * @return {boolean}
42
+ * */
43
+ export declare function isInertEager(cluster: string, name: string): boolean;
44
+ /**
45
+ * Check inert defined or not, by name
46
+ *
47
+ * @param {string} cluster - cluster name
48
+ * @param {string} name - target name
49
+ * @return {boolean}
50
+ * */
51
+ export declare function isInertDefined(cluster: string, name: string): boolean;
52
+ /**
53
+ * Get inert by name
54
+ *
55
+ * @param {string} cluster - cluster name
56
+ * @param {string} name - target name
57
+ * @return {InertItem}
58
+ * */
59
+ export declare function getInert<L extends InertItem<T>, T>(cluster: string, name: string): L;
60
+ /**
61
+ * Load lazy inert by name
62
+ * Note:
63
+ * - Target must be exported as `foretell`
64
+ *
65
+ * @param {string} cluster - cluster name
66
+ * @param {string} name - target name
67
+ * @return {Promise<EnumItem>}
68
+ * */
69
+ export declare function loadInertLazy<L extends InertItem<T>, T>(cluster: string, name: string): Promise<L>;
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+ // noinspection JSUnusedGlobalSymbols
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.buildInert = buildInert;
14
+ exports.defineInertEager = defineInertEager;
15
+ exports.defineInertLazy = defineInertLazy;
16
+ exports.isInertLazy = isInertLazy;
17
+ exports.isInertInvalid = isInertInvalid;
18
+ exports.isInertEager = isInertEager;
19
+ exports.isInertDefined = isInertDefined;
20
+ exports.getInert = getInert;
21
+ exports.loadInertLazy = loadInertLazy;
22
+ const function_1 = require("../function");
23
+ const internal_1 = require("../internal");
24
+ const error_1 = require("../error");
25
+ const set_fn_1 = require("./set.fn");
26
+ const map_fn_1 = require("./map.fn");
27
+ const test_fn_1 = require("./test.fn");
28
+ const fqn_fn_1 = require("./fqn.fn");
29
+ const name_fn_1 = require("./name.fn");
30
+ // region properties
31
+ const where = `${internal_1.FQN}.LazyFn`;
32
+ const _repo = (0, map_fn_1.newRepoMap)(`${where}.repo`);
33
+ // endregion properties
34
+ // noinspection JSUnusedGlobalSymbols
35
+ function buildInert(options) {
36
+ if (!(0, function_1.isObj)(options)) {
37
+ throw new error_1.DeveloperError('Invalid build options', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
38
+ }
39
+ if (!(0, function_1.isText)(options.cluster)) {
40
+ throw new error_1.DeveloperError('Invalid cluster name', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
41
+ }
42
+ if (typeof options.validateLambda !== 'function') {
43
+ throw new error_1.DeveloperError('Invalid validate lambda', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
44
+ }
45
+ if (typeof options.getNameLambda !== 'function') {
46
+ throw new error_1.DeveloperError('Invalid get name lambda', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
47
+ }
48
+ if (options.setNameLambda && typeof options.setNameLambda !== 'function') {
49
+ throw new error_1.DeveloperError('Invalid set name lambda', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
50
+ }
51
+ if (options.stampLambda && typeof options.stampLambda !== 'function') {
52
+ throw new error_1.DeveloperError('Invalid stamp lambda', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
53
+ }
54
+ if (options.nextLoadLambda && typeof options.nextLoadLambda !== 'function') {
55
+ throw new error_1.DeveloperError('Invalid next load lambda', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
56
+ }
57
+ if (options.anonymousName && !(0, function_1.isText)(options.anonymousName)) {
58
+ throw new error_1.DeveloperError('Invalid anonymous name', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
59
+ }
60
+ if (_repo.has(options.cluster)) {
61
+ throw new error_1.DeveloperError(`Duplicated cluster [${options.cluster}]`, (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
62
+ }
63
+ const repoItem = Object.assign(Object.assign({}, options), { uniqueLoaded: (0, set_fn_1.newRepoSet)(`${where}.${options.cluster}.uniqueLoaded`), fullNames: (0, map_fn_1.newRepoMap)(`${where}.${options.cluster}.fullNames`), basicNames: (0, map_fn_1.newRepoMap)(`${where}.${options.cluster}.basicNames`), aliases: (0, map_fn_1.newRepoMap)(`${where}.${options.cluster}.aliases`), pendingFqn: (0, map_fn_1.newRepoMap)(`${where}.${options.cluster}.pendingFqn`), pendingLazy: (0, map_fn_1.newRepoMap)(`${where}.${options.cluster}.pendingLazy`) });
64
+ _repo.set(options.cluster, repoItem);
65
+ }
66
+ function _getRepo(cluster) {
67
+ return _repo.get(cluster);
68
+ }
69
+ /**
70
+ * Define an inert as eager
71
+ *
72
+ * @param {string} cluster - cluster name
73
+ * @param {any} target - target of cluster
74
+ * @param {InertEagerOpt} options - options
75
+ * */
76
+ function defineInertEager(cluster, target, options) {
77
+ const { uniqueLoaded, validateLambda, getNameLambda, anonymousName, stampLambda } = _getRepo(cluster);
78
+ if (!validateLambda(target)) {
79
+ throw new error_1.DeveloperError('Invalid target', (0, test_fn_1.testCase)(internal_1.FQN, 220), where);
80
+ }
81
+ // already defined
82
+ if (uniqueLoaded.has(target)) {
83
+ return;
84
+ }
85
+ let basicName = getNameLambda(target);
86
+ if (!basicName && anonymousName) {
87
+ basicName = (0, name_fn_1.setAnonymousName)(target, anonymousName);
88
+ }
89
+ if (!basicName) {
90
+ throw new error_1.DeveloperError('Empty name', (0, test_fn_1.testCase)(internal_1.FQN, 220), where);
91
+ }
92
+ const item = Object.assign(Object.assign({}, options), { target, name: basicName, stage: undefined, mode: 'eager' });
93
+ if (_inFqnStage(cluster, item)) {
94
+ return;
95
+ }
96
+ item.stage = 'persistent';
97
+ _relateIt(cluster, item);
98
+ if (stampLambda) {
99
+ stampLambda(item);
100
+ }
101
+ }
102
+ /**
103
+ * Define an inert as lazy (with path)
104
+ *
105
+ * @param {string} cluster - cluster name
106
+ * @param {InertLazyOpt} opt - inert lazy options
107
+ * */
108
+ function defineInertLazy(cluster, opt) {
109
+ if (!(0, function_1.isText)(opt.name)) {
110
+ throw new error_1.DeveloperError('Invalid inert name', (0, test_fn_1.testCase)(internal_1.FQN, 'XXX'), where);
111
+ }
112
+ // it's already pending to be loaded
113
+ const { pendingLazy } = _getRepo(cluster);
114
+ if (pendingLazy.has(opt.name)) {
115
+ return;
116
+ }
117
+ if (!(0, function_1.isFilledObj)(opt)) {
118
+ throw new error_1.DeveloperError('Invalid inert options', (0, test_fn_1.testCase)(internal_1.FQN, 222), where);
119
+ }
120
+ if (!(opt.lazyTarget instanceof Promise)) {
121
+ throw new error_1.DeveloperError(`Invalid inert path [${opt.name}]`, (0, test_fn_1.testCase)(internal_1.FQN, 224), where);
122
+ }
123
+ const item = Object.assign(Object.assign({}, opt), { stage: 'loading-waiting', mode: 'lazy' });
124
+ pendingLazy.set(opt.name, item);
125
+ }
126
+ function _inFqnStage(cluster, item) {
127
+ item.full = (0, fqn_fn_1.getFqn)(item.target);
128
+ if (!item.full.includes('.')) {
129
+ if ((0, function_1.isText)(item.fqn)) {
130
+ item.full = (0, fqn_fn_1.setFqn)(item.target, item.fqn);
131
+ }
132
+ else {
133
+ const { pendingFqn } = _getRepo(cluster);
134
+ pendingFqn.set(item.name, item);
135
+ item.stage = 'fqn-waiting';
136
+ (0, fqn_fn_1.onFqnSet)(item.target, f => _afterFqnSet(cluster, f));
137
+ return true;
138
+ }
139
+ }
140
+ return false;
141
+ }
142
+ function _afterFqnSet(cluster, full) {
143
+ if (!(0, function_1.isText)(full)) {
144
+ return;
145
+ }
146
+ const { pendingFqn, stampLambda } = _getRepo(cluster);
147
+ const item = pendingFqn.get(full.split('.').pop());
148
+ if (item) {
149
+ pendingFqn.delete(item.name);
150
+ item.full = full;
151
+ item.stage = 'persistent';
152
+ _relateIt(cluster, item);
153
+ if (stampLambda) {
154
+ stampLambda(item);
155
+ }
156
+ }
157
+ else {
158
+ new error_1.DeveloperError(`Inert could not be found after come back, [${full}]`, (0, test_fn_1.testCase)(internal_1.FQN, 'ZZZ'), where).log();
159
+ }
160
+ }
161
+ function _relateIt(cluster, item) {
162
+ let ignore;
163
+ const { fullNames, basicNames, aliases } = _getRepo(cluster);
164
+ if (item.full) {
165
+ ignore = false;
166
+ if (fullNames.has(item.full)) {
167
+ const anotherItem = fullNames.get(item.full);
168
+ if (anotherItem.target !== item.target) {
169
+ ignore = true;
170
+ new error_1.DeveloperError(`Duplicated full name [${item.full}]`, (0, test_fn_1.testCase)(internal_1.FQN, 'ZZZ'), where).log();
171
+ }
172
+ }
173
+ if (!ignore) {
174
+ fullNames.set(item.full, item);
175
+ }
176
+ }
177
+ ignore = false;
178
+ if (basicNames.has(item.name)) {
179
+ const anotherItem = basicNames.get(item.name);
180
+ if (anotherItem.target !== item.target) {
181
+ ignore = true;
182
+ new error_1.DeveloperError(`Duplicated basic name [${item.name}]`, (0, test_fn_1.testCase)(internal_1.FQN, 'ZZZ'), where).log();
183
+ }
184
+ }
185
+ if (!ignore) {
186
+ basicNames.set(item.name, item);
187
+ }
188
+ if ((0, function_1.isFilledArr)(item.aliases)) {
189
+ item.aliases.forEach(alias => {
190
+ var _a;
191
+ ignore = false;
192
+ if (aliases.has(alias)) {
193
+ const anotherName = aliases.get(alias);
194
+ if (![item.name, item.full].includes(anotherName)) {
195
+ ignore = true;
196
+ new error_1.DeveloperError(`Duplicated alias [${item.name}]`, (0, test_fn_1.testCase)(internal_1.FQN, 'ZZZ'), where).log();
197
+ }
198
+ }
199
+ if (!ignore) {
200
+ aliases.set(alias, (_a = item.full) !== null && _a !== void 0 ? _a : item.name);
201
+ }
202
+ });
203
+ }
204
+ }
205
+ /**
206
+ * Check inert defined as lazy, by name
207
+ * Note:
208
+ * - Inert's mode will be shifted lazy to eager after loaded
209
+ *
210
+ * @param {string} cluster - cluster name
211
+ * @param {string} name - target name
212
+ * @return {boolean}
213
+ * */
214
+ function isInertLazy(cluster, name) {
215
+ var _a;
216
+ return ((_a = getInert(cluster, name)) === null || _a === void 0 ? void 0 : _a.mode) === 'lazy';
217
+ }
218
+ /**
219
+ * Check inert failed or conflicted, by name
220
+ *
221
+ * @param {string} cluster - cluster name
222
+ * @param {string} name - target name
223
+ * @return {boolean}
224
+ * */
225
+ function isInertInvalid(cluster, name) {
226
+ var _a;
227
+ return ['failed', 'conflicted'].includes((_a = getInert(cluster, name)) === null || _a === void 0 ? void 0 : _a.mode);
228
+ }
229
+ /**
230
+ * Check inert defined as eager, by name
231
+ *
232
+ * @param {string} cluster - cluster name
233
+ * @param {string} name - target name
234
+ * @return {boolean}
235
+ * */
236
+ function isInertEager(cluster, name) {
237
+ var _a;
238
+ return ((_a = getInert(cluster, name)) === null || _a === void 0 ? void 0 : _a.mode) === 'eager';
239
+ }
240
+ /**
241
+ * Check inert defined or not, by name
242
+ *
243
+ * @param {string} cluster - cluster name
244
+ * @param {string} name - target name
245
+ * @return {boolean}
246
+ * */
247
+ function isInertDefined(cluster, name) {
248
+ return !!getInert(cluster, name);
249
+ }
250
+ /**
251
+ * Get inert by name
252
+ *
253
+ * @param {string} cluster - cluster name
254
+ * @param {string} name - target name
255
+ * @return {InertItem}
256
+ * */
257
+ function getInert(cluster, name) {
258
+ if (!(0, function_1.isText)(name)) {
259
+ return undefined;
260
+ }
261
+ const { fullNames, basicNames, pendingFqn, pendingLazy, aliases } = _getRepo(cluster);
262
+ if (name.includes('.')) {
263
+ if (fullNames.has(name)) {
264
+ return fullNames.get(name);
265
+ }
266
+ return getInert(cluster, name.split('.').pop());
267
+ }
268
+ // no dot
269
+ if (pendingFqn.has(name)) {
270
+ return pendingFqn.get(name);
271
+ }
272
+ if (pendingLazy.has(name)) {
273
+ return pendingLazy.get(name);
274
+ }
275
+ if (aliases.has(name)) {
276
+ return getInert(cluster, aliases.get(name));
277
+ }
278
+ return basicNames.get(name);
279
+ }
280
+ /**
281
+ * Load lazy inert by name
282
+ * Note:
283
+ * - Target must be exported as `foretell`
284
+ *
285
+ * @param {string} cluster - cluster name
286
+ * @param {string} name - target name
287
+ * @return {Promise<EnumItem>}
288
+ * */
289
+ function loadInertLazy(cluster, name) {
290
+ return __awaiter(this, void 0, void 0, function* () {
291
+ if (!(0, function_1.isText)(name)) {
292
+ throw new error_1.DeveloperError(`Invalid lazy name`, (0, test_fn_1.testCase)(internal_1.FQN, 'ZZZ'), where);
293
+ }
294
+ const { validateLambda, pendingLazy, stampLambda, uniqueLoaded, getNameLambda, setNameLambda, nextLoadLambda } = _getRepo(cluster);
295
+ const item = getInert(cluster, name);
296
+ if (!item) {
297
+ throw new error_1.DeveloperError(`Lazy was not defined [${name}]`, (0, test_fn_1.testCase)(internal_1.FQN, 'ZZZ'), where);
298
+ }
299
+ // It was already loaded
300
+ if (item.mode === 'eager') {
301
+ return item;
302
+ }
303
+ try {
304
+ item.target = yield item.lazyTarget;
305
+ if (validateLambda(item.target)) {
306
+ item.mode = 'eager';
307
+ delete item.lazyTarget;
308
+ // remove from pending
309
+ if (pendingLazy.has(name)) {
310
+ pendingLazy.delete(name);
311
+ }
312
+ if (nextLoadLambda) {
313
+ yield nextLoadLambda(item);
314
+ }
315
+ // already loaded
316
+ if (uniqueLoaded.has(item.target)) {
317
+ return item;
318
+ }
319
+ }
320
+ else {
321
+ item.mode = 'conflicted';
322
+ }
323
+ }
324
+ catch (e) {
325
+ item.mode = 'failed';
326
+ new error_1.DeveloperError(`Callback inert during loading lazy class [${name}]`, (0, test_fn_1.testCase)(internal_1.FQN, 227), where).log(e);
327
+ }
328
+ // file could not be loaded
329
+ if (!item.target) {
330
+ return undefined;
331
+ }
332
+ const realName = getNameLambda(item.target);
333
+ if (item.name !== realName) {
334
+ if (!realName && setNameLambda) {
335
+ setNameLambda(item.target, item.name);
336
+ }
337
+ else {
338
+ new error_1.DeveloperError(`Conflict in names [${item.name} vs ${realName}]`, (0, test_fn_1.testCase)(internal_1.FQN, 'ZZZ'), where).log();
339
+ }
340
+ }
341
+ if (_inFqnStage(cluster, item)) {
342
+ return;
343
+ }
344
+ item.stage = 'persistent';
345
+ _relateIt(cluster, item);
346
+ if (stampLambda) {
347
+ stampLambda(item);
348
+ }
349
+ return item;
350
+ });
351
+ }
352
+ //# sourceMappingURL=inert.fn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inert.fn.js","sourceRoot":"","sources":["../../src/common/inert.fn.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { Fnc, LifecycleSortLambda, LifecycleStage } from "../index.types";
6
6
  * @param {string} name - your callback name
7
7
  * @param {function} callback - it will be called on {@link runLifecycleStage}
8
8
  * */
9
- export declare function addLifecycle(stage: LifecycleStage, name: string, callback: Fnc): void;
9
+ export declare function addLifecycleStage(stage: LifecycleStage, name: string, callback: Fnc): void;
10
10
  /**
11
11
  * Run lifecycle by stage
12
12
  *
@@ -21,4 +21,4 @@ export declare function runLifecycleStage(stage: LifecycleStage, ...params: Arra
21
21
  * @param {LifecycleStage} stage
22
22
  * @param {LifecycleSortLambda} lambda - function that sorts map items
23
23
  * */
24
- export declare function setLifecycleSort(stage: LifecycleStage, lambda: LifecycleSortLambda): void;
24
+ export declare function setLifecycleOrderLambda(stage: LifecycleStage, lambda: LifecycleSortLambda): void;
@@ -10,16 +10,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  });
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.addLifecycle = addLifecycle;
13
+ exports.addLifecycleStage = addLifecycleStage;
14
14
  exports.runLifecycleStage = runLifecycleStage;
15
- exports.setLifecycleSort = setLifecycleSort;
15
+ exports.setLifecycleOrderLambda = setLifecycleOrderLambda;
16
16
  const internal_1 = require("../internal");
17
17
  const function_1 = require("../function");
18
18
  const error_1 = require("../error");
19
19
  const map_fn_1 = require("./map.fn");
20
+ const test_fn_1 = require("./test.fn");
20
21
  // region properties
21
22
  const where = `${internal_1.FQN}.LifecycleFn`;
22
- const stages = (0, map_fn_1.newRepoMap)(`${where}.stages`);
23
+ const _stages = (0, map_fn_1.newRepoMap)(`${where}.stages`);
23
24
  let lifecycleSortLambda;
24
25
  // endregion properties
25
26
  /**
@@ -28,7 +29,7 @@ let lifecycleSortLambda;
28
29
  * @param {LifecycleStage} stage - stage
29
30
  * */
30
31
  const init = (stage) => {
31
- stages.set(stage, new Map());
32
+ _stages.set(stage, new Map());
32
33
  };
33
34
  /**
34
35
  * Add lifecycle by stage
@@ -37,20 +38,20 @@ const init = (stage) => {
37
38
  * @param {string} name - your callback name
38
39
  * @param {function} callback - it will be called on {@link runLifecycleStage}
39
40
  * */
40
- function addLifecycle(stage, name, callback) {
41
+ function addLifecycleStage(stage, name, callback) {
41
42
  if (!(0, function_1.isText)(stage)) {
42
- throw new error_1.DeveloperError('Invalid lifecycle stage', 'addLifecycle#01', where);
43
+ throw new error_1.DeveloperError('Invalid lifecycle stage', (0, test_fn_1.testCase)(internal_1.FQN, 100), where);
43
44
  }
44
- if (!stages.has(stage)) {
45
- throw new error_1.DeveloperError('Absent lifecycle stage', 'addLifecycle#02', where);
45
+ if (!_stages.has(stage)) {
46
+ throw new error_1.DeveloperError(`Lifecycle stage could not be found [${stage}]`, (0, test_fn_1.testCase)(internal_1.FQN, 101), where);
46
47
  }
47
48
  if (!(0, function_1.isText)(name)) {
48
- throw new error_1.DeveloperError('Invalid lifecycle name', 'addLifecycle#03', where);
49
+ throw new error_1.DeveloperError(`Invalid lifecycle name [${stage}]`, (0, test_fn_1.testCase)(internal_1.FQN, 102), where);
49
50
  }
50
51
  if (typeof callback !== 'function') {
51
- throw new error_1.DeveloperError('Invalid lifecycle callback', 'addLifecycle#04', where);
52
+ throw new error_1.DeveloperError(`Invalid lifecycle callback [${stage}/${name}]`, (0, test_fn_1.testCase)(internal_1.FQN, 103), where);
52
53
  }
53
- const item = stages.get(stage);
54
+ const item = _stages.get(stage);
54
55
  if (!item.has(name)) {
55
56
  item.set(name, []);
56
57
  }
@@ -66,23 +67,23 @@ function addLifecycle(stage, name, callback) {
66
67
  function runLifecycleStage(stage, ...params) {
67
68
  return __awaiter(this, void 0, void 0, function* () {
68
69
  if (!(0, function_1.isText)(stage)) {
69
- throw new error_1.DeveloperError('Invalid lifecycle stage', 'runLifecycleStage#01', where);
70
+ throw new error_1.DeveloperError('Invalid lifecycle stage', (0, test_fn_1.testCase)(internal_1.FQN, 104), where);
70
71
  }
71
- if (!stages.has(stage)) {
72
- throw new error_1.DeveloperError('Absent lifecycle stage', 'runLifecycleStage#02', where);
72
+ if (!_stages.has(stage)) {
73
+ throw new error_1.DeveloperError(`Lifecycle stage could not be found [${stage}]`, (0, test_fn_1.testCase)(internal_1.FQN, 105), where);
73
74
  }
74
75
  let count = 0;
75
- const item = stages.get(stage);
76
+ const item = _stages.get(stage);
76
77
  if (item.size < 1) {
77
78
  return count;
78
79
  }
79
80
  let sorted;
80
81
  if (lifecycleSortLambda) {
81
82
  try {
82
- sorted = lifecycleSortLambda(stages.get(stage));
83
+ sorted = lifecycleSortLambda(_stages.get(stage));
83
84
  }
84
85
  catch (e) {
85
- new error_1.DeveloperError(`Raised sort-lambda run [${stage}]`, 'runLifecycleStage#03', where).log(e);
86
+ new error_1.DeveloperError(`Callback error during lifecycle order lambda [${stage}]`, (0, test_fn_1.testCase)(internal_1.FQN, 106), where).log(e);
86
87
  }
87
88
  }
88
89
  if (!sorted) {
@@ -98,7 +99,7 @@ function runLifecycleStage(stage, ...params) {
98
99
  count++;
99
100
  }
100
101
  catch (e) {
101
- new error_1.DeveloperError(`Raised callback run [${stage}/${name}]`, 'runLifecycleStage#04', where).log(e);
102
+ new error_1.DeveloperError(`Callback error during lifecycle callback [${stage}/${name}]`, (0, test_fn_1.testCase)(internal_1.FQN, 107), where).log(e);
102
103
  }
103
104
  }
104
105
  }
@@ -111,15 +112,15 @@ function runLifecycleStage(stage, ...params) {
111
112
  * @param {LifecycleStage} stage
112
113
  * @param {LifecycleSortLambda} lambda - function that sorts map items
113
114
  * */
114
- function setLifecycleSort(stage, lambda) {
115
+ function setLifecycleOrderLambda(stage, lambda) {
115
116
  if (!(0, function_1.isText)(stage)) {
116
- throw new error_1.DeveloperError('Invalid lifecycle stage', 'setLifecycleSort#01', where);
117
+ throw new error_1.DeveloperError('Invalid lifecycle stage', (0, test_fn_1.testCase)(internal_1.FQN, 108), where);
117
118
  }
118
- if (!stages.has(stage)) {
119
- throw new error_1.DeveloperError('Absent lifecycle stage', 'setLifecycleSort#02', where);
119
+ if (!_stages.has(stage)) {
120
+ throw new error_1.DeveloperError(`Lifecycle stage could not be found [${stage}]`, (0, test_fn_1.testCase)(internal_1.FQN, 109), where);
120
121
  }
121
122
  if (typeof lambda !== 'function') {
122
- throw new error_1.DeveloperError('Invalid lifecycle callback', 'setLifecycleSort#03', where);
123
+ throw new error_1.DeveloperError(`Invalid lifecycle callback [${stage}]`, (0, test_fn_1.testCase)(internal_1.FQN, 110), where);
123
124
  }
124
125
  lifecycleSortLambda = lambda;
125
126
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.fn.js","sourceRoot":"","sources":["../../src/common/lifecycle.fn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.fn.js","sourceRoot":"","sources":["../../src/common/lifecycle.fn.ts"],"names":[],"mappings":"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"}