taon 21.0.53 → 21.0.54

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 (114) hide show
  1. package/bin/taon +5 -5
  2. package/bin/taon-debug +5 -5
  3. package/bin/taon-debug-brk +4 -4
  4. package/browser/package.json +1 -1
  5. package/browser-prod/package.json +1 -1
  6. package/lib/build-info._auto-generated_.d.ts +1 -1
  7. package/lib/build-info._auto-generated_.js +1 -1
  8. package/lib/package.json +1 -1
  9. package/lib/ui/index.js +2 -2
  10. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  11. package/lib-prod/base-classes/base-abstract-entity.js +17 -31
  12. package/lib-prod/base-classes/base-angular-service.js +83 -55
  13. package/lib-prod/base-classes/base-class.js +33 -35
  14. package/lib-prod/base-classes/base-context.js +17 -19
  15. package/lib-prod/base-classes/base-controller.js +146 -154
  16. package/lib-prod/base-classes/base-crud-controller.js +250 -221
  17. package/lib-prod/base-classes/base-custom-repository.js +7 -18
  18. package/lib-prod/base-classes/base-electron-service.js +49 -0
  19. package/lib-prod/base-classes/base-entity.js +20 -30
  20. package/lib-prod/base-classes/base-file-upload.middleware.js +72 -75
  21. package/lib-prod/base-classes/base-injector.js +176 -194
  22. package/lib-prod/base-classes/base-middleware.js +8 -5
  23. package/lib-prod/base-classes/base-migration.js +19 -22
  24. package/lib-prod/base-classes/base-provider.js +7 -5
  25. package/lib-prod/base-classes/base-repository.js +601 -573
  26. package/lib-prod/base-classes/base-subscriber-for-entity.js +143 -152
  27. package/lib-prod/base-classes/base.js +18 -0
  28. package/lib-prod/build-info._auto-generated_.js +26 -14
  29. package/lib-prod/config/controller-config.js +24 -24
  30. package/lib-prod/config/controller-options.js +2 -5
  31. package/lib-prod/config/method-config.js +6 -8
  32. package/lib-prod/config/param-config.js +2 -8
  33. package/lib-prod/constants.js +29 -25
  34. package/lib-prod/context-db-migrations.js +327 -324
  35. package/lib-prod/create-context.js +211 -146
  36. package/lib-prod/decorators/classes/controller-decorator.js +16 -20
  37. package/lib-prod/decorators/classes/entity-decorator.js +26 -47
  38. package/lib-prod/decorators/classes/middleware-decorator.js +14 -24
  39. package/lib-prod/decorators/classes/migration-decorator.js +13 -22
  40. package/lib-prod/decorators/classes/provider-decorator.js +13 -23
  41. package/lib-prod/decorators/classes/repository-decorator.js +13 -22
  42. package/lib-prod/decorators/classes/subscriber-decorator.js +13 -23
  43. package/lib-prod/decorators/decorator-abstract-opt.js +1 -4
  44. package/lib-prod/decorators/http/http-decorators.js +20 -5
  45. package/lib-prod/decorators/http/http-methods-decorators.js +91 -133
  46. package/lib-prod/decorators/http/http-params-decorators.js +36 -62
  47. package/lib-prod/dependency-injection/di-container.js +28 -29
  48. package/lib-prod/endpoint-context-storage.js +27 -32
  49. package/lib-prod/endpoint-context.js +2294 -1930
  50. package/lib-prod/entity-process.js +209 -198
  51. package/lib-prod/env/env.angular-node-app.js +66 -130
  52. package/lib-prod/env/env.docs-webapp.js +66 -130
  53. package/lib-prod/env/env.electron-app.js +66 -130
  54. package/lib-prod/env/env.mobile-app.js +66 -130
  55. package/lib-prod/env/env.npm-lib-and-cli-tool.js +66 -130
  56. package/lib-prod/env/env.vscode-plugin.js +66 -130
  57. package/lib-prod/env/index.js +6 -6
  58. package/lib-prod/express-types.js +1 -0
  59. package/lib-prod/formly/formly.models.js +1 -0
  60. package/lib-prod/formly/fromly.js +196 -175
  61. package/lib-prod/formly/type-from-entity.js +45 -52
  62. package/lib-prod/get-response-value.js +21 -18
  63. package/lib-prod/global-state/taon-global-state/index.js +6 -5
  64. package/lib-prod/global-state/taon-global-state/taon-global-state.abstract.context.js +18 -19
  65. package/lib-prod/global-state/taon-global-state/taon-global-state.constants.js +6 -9
  66. package/lib-prod/global-state/taon-global-state/taon-global-state.controller.js +40 -46
  67. package/lib-prod/global-state/taon-global-state/taon-global-state.entity.js +33 -46
  68. package/lib-prod/global-state/taon-global-state/taon-global-state.middleware.js +10 -20
  69. package/lib-prod/global-state/taon-global-state/taon-global-state.models.js +43 -33
  70. package/lib-prod/global-state/taon-global-state/taon-global-state.provider.js +10 -20
  71. package/lib-prod/global-state/taon-global-state/taon-global-state.repository.js +43 -44
  72. package/lib-prod/global-state/taon-global-state/taon-global-state.subscriber.js +20 -27
  73. package/lib-prod/global-state/taon-global-state/taon-global-state.utils.js +10 -10
  74. package/lib-prod/global-state/taon-transaction-registry/index.js +11 -10
  75. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.abstract.context.js +20 -21
  76. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.constants.js +4 -7
  77. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.controller.js +34 -39
  78. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.entity.js +34 -54
  79. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.middleware.js +10 -20
  80. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.models.js +7 -10
  81. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.provider.js +10 -20
  82. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.repository.js +29 -34
  83. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.subscriber.js +20 -27
  84. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.utils.js +4 -5
  85. package/lib-prod/helpers/class-helpers.js +210 -177
  86. package/lib-prod/helpers/clone-obj.js +16 -20
  87. package/lib-prod/helpers/taon-helpers.js +132 -114
  88. package/lib-prod/index._auto-generated_.js +5 -0
  89. package/lib-prod/index.js +248 -227
  90. package/lib-prod/inject.js +88 -33
  91. package/lib-prod/migrations/index.js +2 -1
  92. package/lib-prod/migrations/migrations_index._auto-generated_.js +3 -0
  93. package/lib-prod/models.js +72 -103
  94. package/lib-prod/orm/columns.js +58 -118
  95. package/lib-prod/orm/index.js +56 -1
  96. package/lib-prod/package.json +1 -1
  97. package/lib-prod/realtime/realtime-client.js +188 -186
  98. package/lib-prod/realtime/realtime-core.js +77 -78
  99. package/lib-prod/realtime/realtime-server.js +225 -240
  100. package/lib-prod/realtime/realtime-strategy/index.js +4 -4
  101. package/lib-prod/realtime/realtime-strategy/realtime-strategy-ipc.js +273 -219
  102. package/lib-prod/realtime/realtime-strategy/realtime-strategy-mock.js +267 -240
  103. package/lib-prod/realtime/realtime-strategy/realtime-strategy-socket-io.js +26 -20
  104. package/lib-prod/realtime/realtime-strategy/realtime-strategy.js +10 -13
  105. package/lib-prod/realtime/realtime-subs-manager.js +82 -90
  106. package/lib-prod/realtime/realtime.models.js +2 -0
  107. package/lib-prod/symbols.js +104 -105
  108. package/lib-prod/ui/index.js +1 -5
  109. package/lib-prod/ui/taon-admin-mode-configuration/index.js +1 -5
  110. package/lib-prod/validators.js +43 -37
  111. package/lib-prod.split-namespaces.json +31 -91
  112. package/package.json +1 -1
  113. package/websql/package.json +1 -1
  114. package/websql-prod/package.json +1 -1
@@ -1,162 +1,154 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __decorateClass = (decorators, target, key, kind) => {
4
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
- if (decorator = decorators[i])
7
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
- if (kind && result) __defProp(target, key, result);
9
- return result;
10
- };
11
- var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index);
12
- import * as FormData from "form-data";
13
- import {
14
- HttpResponseError
15
- } from "ng2-rest/lib-prod";
16
- import { crossPlatformPath, fse, path, CoreModels__NS__TaonHttpErrorCustomProp, UtilsTerminal__NS__waitMilliseconds } from "tnp-core/lib-prod";
17
- import { TaonController } from "../decorators/classes/controller-decorator";
18
- import { POST } from "../decorators/http/http-methods-decorators";
19
- import { Body, Query } from "../decorators/http/http-params-decorators";
20
- import { TaonBaseFileUploadMiddleware } from "./base-file-upload.middleware";
21
- import { TaonBaseInjector } from "./base-injector";
22
- let TaonBaseController = class extends TaonBaseInjector {
23
- /**
24
- * Hook that is called when taon app is inited
25
- * (all contexts are created and inited)
26
- */
27
- async afterAllCtxInited(options) {
28
- }
29
- uploadFormDataToServer(formData, queryParams) {
30
- return async (req, res) => {
31
- const files = req.files;
32
- if (!files) {
33
- throw "No file(s) received";
34
- }
35
- const responseArr = files.map((f) => {
36
- const savedAbs = crossPlatformPath(path.resolve(f.path));
37
- return {
38
- ok: true,
39
- originalName: f.originalname,
40
- savedAs: path.basename(savedAbs),
41
- // savedPath: void 0, // not needed
42
- size: f.size,
43
- mimetype: f.mimetype
1
+ import * as FormData from 'form-data'; // @backend
2
+ import { HttpResponseError, } from 'ng2-rest/lib-prod';
3
+ import { crossPlatformPath, fse, path, CoreModels__NS__TaonHttpErrorCustomProp, UtilsTerminal__NS__waitMilliseconds } from 'tnp-core/lib-prod';
4
+ import { TaonController } from '../decorators/classes/controller-decorator';
5
+ import { POST } from '../decorators/http/http-methods-decorators';
6
+ import { Body, Query } from '../decorators/http/http-params-decorators';
7
+ import { TaonBaseFileUploadMiddleware } from './base-file-upload.middleware';
8
+ import { TaonBaseInjector } from './base-injector';
9
+ let TaonBaseController = class TaonBaseController extends TaonBaseInjector {
10
+ /**
11
+ * Hook that is called when taon app is inited
12
+ * (all contexts are created and inited)
13
+ */
14
+ async afterAllCtxInited(options) { }
15
+ //#region upload form data to server
16
+ uploadFormDataToServer(formData, queryParams) {
17
+ //#region @backendFunc
18
+ return async (req, res) => {
19
+ const files = req.files;
20
+ if (!files) {
21
+ throw 'No file(s) received';
22
+ }
23
+ const responseArr = files.map(f => {
24
+ const savedAbs = crossPlatformPath(path.resolve(f.path));
25
+ // const savedRel = crossPlatformPath(
26
+ // path.relative(this.ctx.cwd, savedAbs),
27
+ // );
28
+ return {
29
+ ok: true,
30
+ originalName: f.originalname,
31
+ savedAs: path.basename(savedAbs),
32
+ // savedPath: void 0, // not needed
33
+ size: f.size,
34
+ mimetype: f.mimetype,
35
+ };
36
+ });
37
+ // console.log(responseArr);
38
+ for (const res of responseArr) {
39
+ await this.afterFileUploadAction(res, queryParams || {});
40
+ }
41
+ return responseArr;
44
42
  };
45
- });
46
- for (const res2 of responseArr) {
47
- await this.afterFileUploadAction(res2, queryParams || {});
48
- }
49
- return responseArr;
50
- };
51
- }
52
- //#endregion
53
- //#region after file upload hook
54
- /**
55
- * Hook after file is uploaded
56
- * through `uploadFormDataToServer` or `uploadLocalFileToServer`
57
- */
58
- afterFileUploadAction(file, queryParams) {
59
- }
60
- //#region upload local file to server
61
- async uploadLocalFileToServer(absFilePath, options, queryParams) {
62
- const stat = fse.statSync(absFilePath);
63
- const stream = fse.createReadStream(absFilePath);
64
- const form = new FormData();
65
- form.append("file", stream, {
66
- filename: path.basename(absFilePath),
67
- knownLength: stat.size
68
- });
69
- const data = await this.uploadFormDataToServer(form, queryParams).request(
70
- options || {}
71
- );
72
- return data.body.json;
73
- }
74
- //#endregion
75
- // async check() {
76
- // await this._waitForProperStatusChange({
77
- // request: () => this.uploadFormDataToServer(void 0, void 0).request(),
78
- // statusCheck: resp => resp.body.json[0].ok,
79
- // });
80
- // }
81
- /**
82
- * Easy way to wait for status change with http (1s default) pooling.
83
- *
84
- * example (in sub class):
85
- * ```ts
86
- async check() {
87
- await this.waitForProperStatusChange({
88
- request: () => this.uploadFormDataToServer(void 0, void 0).request(),
89
- statusCheck: resp => resp.body.json[0].ok,
90
- });
91
- }
92
- * ```
93
- */
94
- async _waitForProperStatusChange(options) {
95
- const poolingInterval = options.poolingInterval || 1e3;
96
- const taonRequest = options.request;
97
- let maxTries = options.maxTries || Number.POSITIVE_INFINITY;
98
- let i = 0;
99
- let httpErrorsCount = 0;
100
- while (true) {
101
- await UtilsTerminal__NS__waitMilliseconds(poolingInterval);
102
- try {
103
- const resp = await taonRequest({
104
- reqIndexNum: i,
105
- httpErrorsCount
43
+ //#endregion
44
+ }
45
+ //#endregion
46
+ //#region after file upload hook
47
+ /**
48
+ * Hook after file is uploaded
49
+ * through `uploadFormDataToServer` or `uploadLocalFileToServer`
50
+ */
51
+ afterFileUploadAction(file, queryParams) {
52
+ // empty
53
+ }
54
+ //#region upload local file to server
55
+ async uploadLocalFileToServer(absFilePath, options, queryParams) {
56
+ //#region @backendFunc
57
+ const stat = fse.statSync(absFilePath);
58
+ const stream = fse.createReadStream(absFilePath);
59
+ const form = new FormData();
60
+ form.append('file', stream, {
61
+ filename: path.basename(absFilePath),
62
+ knownLength: stat.size,
106
63
  });
107
- if (options.statusCheck && options.statusCheck(resp)) {
108
- return;
109
- }
110
- } catch (error) {
111
- httpErrorsCount++;
112
- if (options.loopRequestsOnBackendError) {
113
- const isProperTaonError = error instanceof HttpResponseError && error.body.json[CoreModels__NS__TaonHttpErrorCustomProp];
114
- const isHttpError = error instanceof HttpResponseError && !isProperTaonError;
115
- const isUnknownError = !(error instanceof HttpResponseError);
116
- const resBool = await options.loopRequestsOnBackendError({
117
- taonError: isProperTaonError ? error : void 0,
118
- unknownHttpError: isHttpError ? error : void 0,
119
- unknownError: isUnknownError ? error : void 0,
120
- reqIndexNum: i,
121
- httpErrorsCount
122
- });
123
- if (resBool) {
124
- i++;
125
- continue;
126
- } else {
127
- return;
64
+ const data = await this.uploadFormDataToServer(form, queryParams).request(options || {});
65
+ return data.body.json;
66
+ //#endregion
67
+ }
68
+ //#endregion
69
+ // async check() {
70
+ // await this._waitForProperStatusChange({
71
+ // request: () => this.uploadFormDataToServer(void 0, void 0).request(),
72
+ // statusCheck: resp => resp.body.json[0].ok,
73
+ // });
74
+ // }
75
+ /**
76
+ * Easy way to wait for status change with http (1s default) pooling.
77
+ *
78
+ * example (in sub class):
79
+ * ```ts
80
+ async check() {
81
+ await this.waitForProperStatusChange({
82
+ request: () => this.uploadFormDataToServer(void 0, void 0).request(),
83
+ statusCheck: resp => resp.body.json[0].ok,
84
+ });
128
85
  }
86
+ * ```
87
+ */
88
+ async _waitForProperStatusChange(options) {
89
+ const poolingInterval = options.poolingInterval || 1000;
90
+ const taonRequest = options.request;
91
+ let maxTries = options.maxTries || Number.POSITIVE_INFINITY;
92
+ let i = 0;
93
+ let httpErrorsCount = 0;
94
+ while (true) {
95
+ await UtilsTerminal__NS__waitMilliseconds(poolingInterval);
96
+ try {
97
+ const resp = await taonRequest({
98
+ reqIndexNum: i,
99
+ httpErrorsCount,
100
+ });
101
+ if (options.statusCheck && options.statusCheck(resp)) {
102
+ return;
103
+ }
104
+ }
105
+ catch (error) {
106
+ httpErrorsCount++;
107
+ if (options.loopRequestsOnBackendError) {
108
+ const isProperTaonError = error instanceof HttpResponseError &&
109
+ error.body.json[CoreModels__NS__TaonHttpErrorCustomProp];
110
+ const isHttpError = error instanceof HttpResponseError && !isProperTaonError;
111
+ const isUnknownError = !(error instanceof HttpResponseError);
112
+ const resBool = await options.loopRequestsOnBackendError({
113
+ taonError: isProperTaonError ? error : void 0,
114
+ unknownHttpError: isHttpError ? error : void 0,
115
+ unknownError: isUnknownError ? error : void 0,
116
+ reqIndexNum: i,
117
+ httpErrorsCount,
118
+ });
119
+ if (resBool) {
120
+ i++;
121
+ continue;
122
+ }
123
+ else {
124
+ return;
125
+ }
126
+ }
127
+ if (httpErrorsCount >
128
+ (options.allowedHttpErrors || Number.POSITIVE_INFINITY)) {
129
+ throw new Error(`Too many http errors (${httpErrorsCount}) for "${options.actionName}".`);
130
+ }
131
+ }
132
+ if (i++ > maxTries) {
133
+ throw new Error(`Timeout waiting for "${options.actionName}" to be finished. Waited for ${maxTries} seconds`);
134
+ }
129
135
  }
130
- if (httpErrorsCount > (options.allowedHttpErrors || Number.POSITIVE_INFINITY)) {
131
- throw new Error(
132
- `Too many http errors (${httpErrorsCount}) for "${options.actionName}".`
133
- );
134
- }
135
- }
136
- if (i++ > maxTries) {
137
- throw new Error(
138
- `Timeout waiting for "${options.actionName}" to be finished. Waited for ${maxTries} seconds`
139
- );
140
- }
141
136
  }
142
- }
143
137
  };
144
- __decorateClass([
145
- POST({
146
- overrideContentType: "multipart/form-data",
147
- middlewares: ({ parentMiddlewares }) => ({
148
- ...parentMiddlewares,
149
- TaonBaseFileUploadMiddleware
138
+ __decorate([
139
+ POST({
140
+ overrideContentType: 'multipart/form-data',
141
+ middlewares: ({ parentMiddlewares }) => ({
142
+ ...parentMiddlewares,
143
+ TaonBaseFileUploadMiddleware,
144
+ }),
145
+ }),
146
+ __param(0, Body()),
147
+ __param(1, Query())
148
+ ], TaonBaseController.prototype, "uploadFormDataToServer", null);
149
+ TaonBaseController = __decorate([
150
+ TaonController({
151
+ className: 'TaonBaseController',
150
152
  })
151
- }),
152
- __decorateParam(0, Body()),
153
- __decorateParam(1, Query())
154
- ], TaonBaseController.prototype, "uploadFormDataToServer", 1);
155
- TaonBaseController = __decorateClass([
156
- TaonController({
157
- className: "TaonBaseController"
158
- })
159
153
  ], TaonBaseController);
160
- export {
161
- TaonBaseController
162
- };
154
+ export { TaonBaseController };