taon 21.0.52 → 21.0.53

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 (215) 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/icon-menu-taon.svg +15 -15
  7. package/lib/build-info._auto-generated_.d.ts +1 -1
  8. package/lib/build-info._auto-generated_.js +1 -1
  9. package/lib/package.json +1 -1
  10. package/lib/ui/index.js +2 -2
  11. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  12. package/lib-prod/base-classes/base-abstract-entity.js +33 -0
  13. package/lib-prod/base-classes/base-angular-service.js +56 -0
  14. package/lib-prod/base-classes/base-class.js +37 -0
  15. package/lib-prod/base-classes/base-context.js +21 -0
  16. package/lib-prod/base-classes/base-controller.js +162 -0
  17. package/lib-prod/base-classes/base-crud-controller.js +235 -0
  18. package/lib-prod/base-classes/base-custom-repository.js +20 -0
  19. package/lib-prod/base-classes/base-electron-service.js +0 -0
  20. package/lib-prod/base-classes/base-entity.js +32 -0
  21. package/lib-prod/base-classes/base-file-upload.middleware.js +78 -0
  22. package/lib-prod/base-classes/base-injector.js +202 -0
  23. package/lib-prod/base-classes/base-middleware.js +6 -0
  24. package/lib-prod/base-classes/base-migration.js +23 -0
  25. package/lib-prod/base-classes/base-provider.js +6 -0
  26. package/lib-prod/base-classes/base-repository.js +589 -0
  27. package/lib-prod/base-classes/base-subscriber-for-entity.js +154 -0
  28. package/lib-prod/base-classes/base.js +0 -0
  29. package/lib-prod/build-info._auto-generated_.js +14 -0
  30. package/lib-prod/config/controller-config.js +28 -0
  31. package/lib-prod/config/controller-options.js +6 -0
  32. package/lib-prod/config/method-config.js +9 -0
  33. package/lib-prod/config/param-config.js +9 -0
  34. package/lib-prod/constants.js +29 -0
  35. package/lib-prod/context-db-migrations.js +339 -0
  36. package/lib-prod/create-context.js +152 -0
  37. package/lib-prod/decorators/classes/controller-decorator.js +21 -0
  38. package/lib-prod/decorators/classes/entity-decorator.js +49 -0
  39. package/lib-prod/decorators/classes/middleware-decorator.js +26 -0
  40. package/lib-prod/decorators/classes/migration-decorator.js +24 -0
  41. package/lib-prod/decorators/classes/provider-decorator.js +25 -0
  42. package/lib-prod/decorators/classes/repository-decorator.js +24 -0
  43. package/lib-prod/decorators/classes/subscriber-decorator.js +25 -0
  44. package/lib-prod/decorators/decorator-abstract-opt.js +5 -0
  45. package/lib-prod/decorators/http/http-decorators.js +5 -0
  46. package/lib-prod/decorators/http/http-methods-decorators.js +144 -0
  47. package/lib-prod/decorators/http/http-params-decorators.js +68 -0
  48. package/lib-prod/dependency-injection/di-container.js +31 -0
  49. package/lib-prod/endpoint-context-storage.js +36 -0
  50. package/lib-prod/endpoint-context.js +2033 -0
  51. package/lib-prod/entity-process.js +214 -0
  52. package/lib-prod/env/env.angular-node-app.js +130 -0
  53. package/lib-prod/env/env.docs-webapp.js +130 -0
  54. package/lib-prod/env/env.electron-app.js +130 -0
  55. package/lib-prod/env/env.mobile-app.js +130 -0
  56. package/lib-prod/env/env.npm-lib-and-cli-tool.js +130 -0
  57. package/lib-prod/env/env.vscode-plugin.js +130 -0
  58. package/lib-prod/env/index.js +6 -0
  59. package/lib-prod/express-types.js +0 -0
  60. package/lib-prod/formly/formly.models.js +0 -0
  61. package/lib-prod/formly/fromly.js +184 -0
  62. package/lib-prod/formly/type-from-entity.js +58 -0
  63. package/lib-prod/get-response-value.js +19 -0
  64. package/lib-prod/global-state/taon-global-state/index.js +5 -0
  65. package/lib-prod/global-state/taon-global-state/taon-global-state.abstract.context.js +20 -0
  66. package/lib-prod/global-state/taon-global-state/taon-global-state.constants.js +10 -0
  67. package/lib-prod/global-state/taon-global-state/taon-global-state.controller.js +48 -0
  68. package/lib-prod/global-state/taon-global-state/taon-global-state.entity.js +48 -0
  69. package/lib-prod/global-state/taon-global-state/taon-global-state.middleware.js +22 -0
  70. package/lib-prod/global-state/taon-global-state/taon-global-state.models.js +34 -0
  71. package/lib-prod/global-state/taon-global-state/taon-global-state.provider.js +22 -0
  72. package/lib-prod/global-state/taon-global-state/taon-global-state.repository.js +47 -0
  73. package/lib-prod/global-state/taon-global-state/taon-global-state.subscriber.js +29 -0
  74. package/lib-prod/global-state/taon-global-state/taon-global-state.utils.js +11 -0
  75. package/lib-prod/global-state/taon-transaction-registry/index.js +10 -0
  76. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.abstract.context.js +22 -0
  77. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.constants.js +8 -0
  78. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.controller.js +41 -0
  79. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.entity.js +56 -0
  80. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.middleware.js +22 -0
  81. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.models.js +10 -0
  82. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.provider.js +22 -0
  83. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.repository.js +36 -0
  84. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.subscriber.js +29 -0
  85. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.utils.js +6 -0
  86. package/lib-prod/helpers/class-helpers.js +195 -0
  87. package/lib-prod/helpers/clone-obj.js +21 -0
  88. package/lib-prod/helpers/taon-helpers.js +129 -0
  89. package/lib-prod/index._auto-generated_.js +0 -0
  90. package/lib-prod/index.js +231 -0
  91. package/lib-prod/inject.js +34 -0
  92. package/lib-prod/migrations/index.js +1 -0
  93. package/lib-prod/migrations/migrations_index._auto-generated_.js +0 -0
  94. package/lib-prod/models.js +109 -0
  95. package/lib-prod/orm/columns.js +124 -0
  96. package/lib-prod/orm/index.js +1 -0
  97. package/lib-prod/package.json +1 -1
  98. package/lib-prod/realtime/realtime-client.js +196 -0
  99. package/lib-prod/realtime/realtime-core.js +82 -0
  100. package/lib-prod/realtime/realtime-server.js +252 -0
  101. package/lib-prod/realtime/realtime-strategy/index.js +4 -0
  102. package/lib-prod/realtime/realtime-strategy/realtime-strategy-ipc.js +226 -0
  103. package/lib-prod/realtime/realtime-strategy/realtime-strategy-mock.js +262 -0
  104. package/lib-prod/realtime/realtime-strategy/realtime-strategy-socket-io.js +21 -0
  105. package/lib-prod/realtime/realtime-strategy/realtime-strategy.js +14 -0
  106. package/lib-prod/realtime/realtime-subs-manager.js +96 -0
  107. package/lib-prod/realtime/realtime.models.js +0 -0
  108. package/lib-prod/symbols.js +109 -0
  109. package/lib-prod/ui/index.js +5 -0
  110. package/lib-prod/ui/taon-admin-mode-configuration/index.js +5 -0
  111. package/lib-prod/validators.js +74 -0
  112. package/package.json +1 -1
  113. package/websql/package.json +1 -1
  114. package/websql-prod/package.json +1 -1
  115. package/lib-prod/base-classes/base-abstract-entity.ts +0 -34
  116. package/lib-prod/base-classes/base-angular-service.ts +0 -107
  117. package/lib-prod/base-classes/base-class.ts +0 -46
  118. package/lib-prod/base-classes/base-context.ts +0 -21
  119. package/lib-prod/base-classes/base-controller.ts +0 -240
  120. package/lib-prod/base-classes/base-crud-controller.ts +0 -298
  121. package/lib-prod/base-classes/base-custom-repository.ts +0 -10
  122. package/lib-prod/base-classes/base-electron-service.ts +0 -60
  123. package/lib-prod/base-classes/base-entity.ts +0 -28
  124. package/lib-prod/base-classes/base-file-upload.middleware.ts +0 -92
  125. package/lib-prod/base-classes/base-injector.ts +0 -278
  126. package/lib-prod/base-classes/base-middleware.ts +0 -71
  127. package/lib-prod/base-classes/base-migration.ts +0 -26
  128. package/lib-prod/base-classes/base-provider.ts +0 -8
  129. package/lib-prod/base-classes/base-repository.ts +0 -942
  130. package/lib-prod/base-classes/base-subscriber-for-entity.ts +0 -196
  131. package/lib-prod/base-classes/base.ts +0 -31
  132. package/lib-prod/build-info._auto-generated_.ts +0 -27
  133. package/lib-prod/config/controller-config.ts +0 -58
  134. package/lib-prod/config/controller-options.ts +0 -19
  135. package/lib-prod/config/method-config.ts +0 -55
  136. package/lib-prod/config/param-config.ts +0 -16
  137. package/lib-prod/constants.ts +0 -63
  138. package/lib-prod/context-db-migrations.ts +0 -488
  139. package/lib-prod/create-context.ts +0 -345
  140. package/lib-prod/decorators/classes/controller-decorator.ts +0 -25
  141. package/lib-prod/decorators/classes/entity-decorator.ts +0 -57
  142. package/lib-prod/decorators/classes/middleware-decorator.ts +0 -29
  143. package/lib-prod/decorators/classes/migration-decorator.ts +0 -27
  144. package/lib-prod/decorators/classes/provider-decorator.ts +0 -28
  145. package/lib-prod/decorators/classes/repository-decorator.ts +0 -26
  146. package/lib-prod/decorators/classes/subscriber-decorator.ts +0 -28
  147. package/lib-prod/decorators/decorator-abstract-opt.ts +0 -4
  148. package/lib-prod/decorators/http/http-decorators.ts +0 -26
  149. package/lib-prod/decorators/http/http-methods-decorators.ts +0 -275
  150. package/lib-prod/decorators/http/http-params-decorators.ts +0 -105
  151. package/lib-prod/dependency-injection/di-container.ts +0 -39
  152. package/lib-prod/endpoint-context-storage.ts +0 -47
  153. package/lib-prod/endpoint-context.ts +0 -3110
  154. package/lib-prod/entity-process.ts +0 -286
  155. package/lib-prod/env/env.angular-node-app.ts +0 -66
  156. package/lib-prod/env/env.docs-webapp.ts +0 -66
  157. package/lib-prod/env/env.electron-app.ts +0 -66
  158. package/lib-prod/env/env.mobile-app.ts +0 -66
  159. package/lib-prod/env/env.npm-lib-and-cli-tool.ts +0 -66
  160. package/lib-prod/env/env.vscode-plugin.ts +0 -66
  161. package/lib-prod/env/index.ts +0 -6
  162. package/lib-prod/express-types.ts +0 -4
  163. package/lib-prod/formly/formly.models.ts +0 -7
  164. package/lib-prod/formly/fromly.ts +0 -261
  165. package/lib-prod/formly/type-from-entity.ts +0 -80
  166. package/lib-prod/get-response-value.ts +0 -30
  167. package/lib-prod/global-state/taon-global-state/index.ts +0 -6
  168. package/lib-prod/global-state/taon-global-state/taon-global-state.abstract.context.ts +0 -21
  169. package/lib-prod/global-state/taon-global-state/taon-global-state.constants.ts +0 -9
  170. package/lib-prod/global-state/taon-global-state/taon-global-state.controller.ts +0 -44
  171. package/lib-prod/global-state/taon-global-state/taon-global-state.entity.ts +0 -40
  172. package/lib-prod/global-state/taon-global-state/taon-global-state.middleware.ts +0 -12
  173. package/lib-prod/global-state/taon-global-state/taon-global-state.models.ts +0 -48
  174. package/lib-prod/global-state/taon-global-state/taon-global-state.provider.ts +0 -16
  175. package/lib-prod/global-state/taon-global-state/taon-global-state.repository.ts +0 -47
  176. package/lib-prod/global-state/taon-global-state/taon-global-state.subscriber.ts +0 -18
  177. package/lib-prod/global-state/taon-global-state/taon-global-state.utils.ts +0 -21
  178. package/lib-prod/global-state/taon-transaction-registry/index.ts +0 -11
  179. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.abstract.context.ts +0 -23
  180. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.constants.ts +0 -7
  181. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.controller.ts +0 -38
  182. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.entity.ts +0 -54
  183. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.middleware.ts +0 -12
  184. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.models.ts +0 -6
  185. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.provider.ts +0 -16
  186. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.repository.ts +0 -29
  187. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.subscriber.ts +0 -20
  188. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.utils.ts +0 -9
  189. package/lib-prod/helpers/class-helpers.ts +0 -315
  190. package/lib-prod/helpers/clone-obj.ts +0 -24
  191. package/lib-prod/helpers/taon-helpers.ts +0 -181
  192. package/lib-prod/index._auto-generated_.ts +0 -5
  193. package/lib-prod/index.ts +0 -323
  194. package/lib-prod/inject.ts +0 -111
  195. package/lib-prod/lib-info.md +0 -8
  196. package/lib-prod/migrations/index.ts +0 -2
  197. package/lib-prod/migrations/migrations-info.md +0 -6
  198. package/lib-prod/migrations/migrations_index._auto-generated_.ts +0 -5
  199. package/lib-prod/models.ts +0 -427
  200. package/lib-prod/orm/columns.ts +0 -121
  201. package/lib-prod/orm/index.ts +0 -62
  202. package/lib-prod/realtime/realtime-client.ts +0 -288
  203. package/lib-prod/realtime/realtime-core.ts +0 -134
  204. package/lib-prod/realtime/realtime-server.ts +0 -398
  205. package/lib-prod/realtime/realtime-strategy/index.ts +0 -4
  206. package/lib-prod/realtime/realtime-strategy/realtime-strategy-ipc.ts +0 -344
  207. package/lib-prod/realtime/realtime-strategy/realtime-strategy-mock.ts +0 -349
  208. package/lib-prod/realtime/realtime-strategy/realtime-strategy-socket-io.ts +0 -30
  209. package/lib-prod/realtime/realtime-strategy/realtime-strategy.ts +0 -21
  210. package/lib-prod/realtime/realtime-subs-manager.ts +0 -127
  211. package/lib-prod/realtime/realtime.models.ts +0 -33
  212. package/lib-prod/symbols.ts +0 -136
  213. package/lib-prod/ui/index.ts +0 -1
  214. package/lib-prod/ui/taon-admin-mode-configuration/index.ts +0 -1
  215. package/lib-prod/validators.ts +0 -103
@@ -0,0 +1,20 @@
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
+ import { TaonRepository } from "../decorators/classes/repository-decorator";
12
+ import { TaonBaseInjector } from "./base-injector";
13
+ let TaonBaseCustomRepository = class extends TaonBaseInjector {
14
+ };
15
+ TaonBaseCustomRepository = __decorateClass([
16
+ TaonRepository({ className: "TaonBaseCustomRepository" })
17
+ ], TaonBaseCustomRepository);
18
+ export {
19
+ TaonBaseCustomRepository
20
+ };
File without changes
@@ -0,0 +1,32 @@
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
+ import { Entity } from "taon-typeorm/lib-prod";
12
+ import { TaonBaseClass } from "./base-class";
13
+ let TaonBaseEntity = class extends TaonBaseClass {
14
+ /**
15
+ * simple check if relation is ok
16
+ */
17
+ relation(relationName) {
18
+ return relationName;
19
+ }
20
+ /**
21
+ * simple check if relation is ok
22
+ */
23
+ relations(relationNames) {
24
+ return relationNames;
25
+ }
26
+ };
27
+ TaonBaseEntity = __decorateClass([
28
+ Entity()
29
+ ], TaonBaseEntity);
30
+ export {
31
+ TaonBaseEntity
32
+ };
@@ -0,0 +1,78 @@
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
+ import * as crypto from "crypto";
12
+ import * as multer from "multer";
13
+ import { crossPlatformPath, fse, path } from "tnp-core/lib-prod";
14
+ import { TaonMiddleware } from "../decorators/classes/middleware-decorator";
15
+ import {
16
+ TaonBaseMiddleware
17
+ } from "./base-middleware";
18
+ let TaonBaseFileUploadMiddleware = class extends TaonBaseMiddleware {
19
+ async interceptServerMethod({ req, res, next }, { methodName, expressPath }) {
20
+ return this.middleware()(req, res, next);
21
+ }
22
+ //#region upload Dir
23
+ uploadDir() {
24
+ return crossPlatformPath([this.ctx.cwd, "uploaded-files"]);
25
+ }
26
+ //#endregion
27
+ //#region storage
28
+ storage() {
29
+ const uploadDir = this.uploadDir();
30
+ if (!fse.existsSync(uploadDir)) {
31
+ try {
32
+ fse.mkdirSync(uploadDir, { recursive: true });
33
+ } catch (error) {
34
+ }
35
+ }
36
+ return multer.diskStorage({
37
+ destination: (_req, _file, cb) => cb(null, uploadDir),
38
+ filename: (_req, file, cb) => {
39
+ const ext = path.extname(file.originalname).toLowerCase();
40
+ const base = path.basename(file.originalname, ext).replace(/[^\w.-]/g, "_");
41
+ const uniq = `${Date.now()}-${crypto.randomBytes(6).toString("hex")}`;
42
+ const filenameToProcess = `${base}-${uniq}${ext}`;
43
+ cb(null, filenameToProcess);
44
+ }
45
+ });
46
+ }
47
+ //#endregion
48
+ //#region upload
49
+ upload() {
50
+ return multer({
51
+ storage: this.storage(),
52
+ limits: { fileSize: 1024 * 1024 * 1024 }
53
+ // 1 GiB cap; tweak as needed
54
+ // TODO implement file filter if needed
55
+ // fileFilter: (_req, file, cb) => {
56
+ // // accept only .zip by filename extension
57
+ // if (path.extname(file.originalname).toLowerCase() !== '.zip') {
58
+ // return cb(new Error('Only .zip files are allowed'));
59
+ // }
60
+ // cb(null, true);
61
+ // },
62
+ });
63
+ }
64
+ //#endregion
65
+ //#region middleware
66
+ middleware() {
67
+ return this.upload().any();
68
+ }
69
+ //#endregion
70
+ };
71
+ TaonBaseFileUploadMiddleware = __decorateClass([
72
+ TaonMiddleware({
73
+ className: "TaonBaseFileUploadMiddleware"
74
+ })
75
+ ], TaonBaseFileUploadMiddleware);
76
+ export {
77
+ TaonBaseFileUploadMiddleware
78
+ };
@@ -0,0 +1,202 @@
1
+ import { ClassHelpers__NS__getName } from "../helpers/class-helpers";
2
+ import { Symbols__NS__ctxInClassOrClassObj } from "../symbols";
3
+ class TaonBaseInjector {
4
+ //#region proxy dummy function
5
+ /**
6
+ * for proxy purposes
7
+ */
8
+ getOriginalPrototype;
9
+ /**
10
+ * for proxy purposes
11
+ */
12
+ getOriginalConstructor;
13
+ //#endregion
14
+ //#region class initialization hook
15
+ /**
16
+ * class initialization hook
17
+ * taon after class instace creation
18
+ */
19
+ async _() {
20
+ }
21
+ //#endregion
22
+ //#region context
23
+ /**
24
+ * @deprecated use ctx instead
25
+ * Current endpoint context
26
+ */
27
+ get __endpoint_context__() {
28
+ return this[Symbols__NS__ctxInClassOrClassObj];
29
+ }
30
+ /**
31
+ * get current endpoint context
32
+ */
33
+ get ctx() {
34
+ return this.__endpoint_context__;
35
+ }
36
+ //#endregion
37
+ //#region inject
38
+ //#region inject / repo for entity
39
+ /**
40
+ * inject crud repo for entity
41
+ */
42
+ injectRepo(entityForCrud) {
43
+ const repoProxy = this.__inject(void 0, {
44
+ localInstance: true,
45
+ resolveClassFromContext: "TaonBaseRepository",
46
+ locaInstanceConstructorArgs: [() => entityForCrud]
47
+ });
48
+ return repoProxy;
49
+ }
50
+ //#endregion
51
+ //#region inject / custom repository
52
+ injectCustomRepository(cutomRepositoryClass) {
53
+ const repoProxy = this.__inject(cutomRepositoryClass, {
54
+ localInstance: true,
55
+ locaInstanceConstructorArgs: [
56
+ () => {
57
+ const classToProcess = this.ctx.allClassesInstances[ClassHelpers__NS__getName(cutomRepositoryClass)];
58
+ return classToProcess.entityClassResolveFn();
59
+ }
60
+ ]
61
+ });
62
+ return repoProxy;
63
+ }
64
+ //#endregion
65
+ //#region inject / custom repo
66
+ /**
67
+ * aliast to this.injectRepository()
68
+ */
69
+ injectCustomRepo(cutomRepositoryClass) {
70
+ const repoProxy = this.injectCustomRepository(cutomRepositoryClass);
71
+ return repoProxy;
72
+ }
73
+ //#endregion
74
+ //#region inject / controller
75
+ /**
76
+ * example usage:
77
+ * ...
78
+ * exampleController = this.injectController(ExampleController);
79
+ * ...
80
+ */
81
+ injectController(ctor) {
82
+ return this.__inject(ctor, { localInstance: false });
83
+ }
84
+ //#endregion
85
+ //#region inject / ctrl
86
+ /**
87
+ * example usage:
88
+ * ...
89
+ * exampleSubscriber = this.injectSubscriber(ExampleSubscriber)
90
+ * ...
91
+ */
92
+ injectSubscriber(ctor) {
93
+ return this.__inject(ctor, { localInstance: false });
94
+ }
95
+ //#endregion
96
+ //#region inject / ctrl
97
+ /**
98
+ * aliast to .injectController()
99
+ */
100
+ injectCtrl(ctor) {
101
+ return this.injectController(ctor);
102
+ }
103
+ //#endregion
104
+ //#region inject / global provider
105
+ /**
106
+ * inject middleware for context
107
+ */
108
+ injectMiddleware(ctor) {
109
+ return this.__inject(ctor, { localInstance: false });
110
+ }
111
+ //#endregion
112
+ //#region inject / context provider
113
+ /**
114
+ * inject provider for context
115
+ */
116
+ injectProvider(ctor) {
117
+ return this.__inject(ctor, { localInstance: false });
118
+ }
119
+ //#endregion
120
+ //#region inject / __ inject
121
+ /**
122
+ * Inject: Controllers, Providers, Repositories, Services, etc.
123
+ * TODO addd nest js injecting
124
+ */
125
+ __inject(ctor, options) {
126
+ if (!options) {
127
+ options = {};
128
+ }
129
+ const contextClassInstance = this;
130
+ return new Proxy(
131
+ {},
132
+ {
133
+ get: (__, propName) => {
134
+ const contextFromClass = ctor && ctor[Symbols__NS__ctxInClassOrClassObj];
135
+ const resultContext = contextFromClass ? contextFromClass : this.__endpoint_context__;
136
+ if (options.resolveClassFromContext) {
137
+ const resolvedClass = resultContext.getClassFunByClassName(
138
+ options.resolveClassFromContext
139
+ );
140
+ ctor = resolvedClass;
141
+ }
142
+ if (resultContext) {
143
+ var instance = resultContext.inject(ctor, {
144
+ ...options,
145
+ contextClassInstance,
146
+ parentInstanceThatWillGetInjectedStuff: this
147
+ });
148
+ if (!instance) {
149
+ throw new Error(
150
+ `Not able to inject "${ClassHelpers__NS__getName(ctor) || ctor.name}" inside property "${propName?.toString()}" on class "${ClassHelpers__NS__getName(
151
+ this
152
+ )}".
153
+
154
+ Please add "${ClassHelpers__NS__getName(ctor) || ctor.name}" to (entites or contorllers or providers or repositories or middlewares)
155
+
156
+ `
157
+ );
158
+ }
159
+ const result = typeof instance[propName] === "function" ? instance[propName].bind(instance) : instance[propName];
160
+ return result;
161
+ }
162
+ },
163
+ set: (__, propName, value) => {
164
+ const contextFromClass = ctor && ctor[Symbols__NS__ctxInClassOrClassObj];
165
+ const resultContext = contextFromClass ? contextFromClass : this.__endpoint_context__;
166
+ if (options.resolveClassFromContext) {
167
+ const resolvedClass = resultContext.getClassFunByClassName(
168
+ options.resolveClassFromContext
169
+ );
170
+ ctor = resolvedClass;
171
+ }
172
+ if (resultContext) {
173
+ var instance = resultContext.inject(ctor, {
174
+ ...options,
175
+ contextClassInstance,
176
+ parentInstanceThatWillGetInjectedStuff: this
177
+ });
178
+ if (!instance) {
179
+ const classNameNotResolved = ClassHelpers__NS__getName(ctor) || ctor.name;
180
+ throw new Error(
181
+ `Not able to inject "${classNameNotResolved}" inside property "${propName?.toString()}" on class "${ClassHelpers__NS__getName(
182
+ this
183
+ )}".
184
+
185
+ Please add "${ClassHelpers__NS__getName(ctor) || ctor.name}" to (entites or contorllers or providers or repositories or middlewares)
186
+
187
+ `
188
+ );
189
+ }
190
+ instance[propName] = value;
191
+ }
192
+ return true;
193
+ }
194
+ }
195
+ );
196
+ }
197
+ //#endregion
198
+ //#endregion
199
+ }
200
+ export {
201
+ TaonBaseInjector
202
+ };
@@ -0,0 +1,6 @@
1
+ import { TaonBaseInjector } from "./base-injector";
2
+ class TaonBaseMiddleware extends TaonBaseInjector {
3
+ }
4
+ export {
5
+ TaonBaseMiddleware
6
+ };
@@ -0,0 +1,23 @@
1
+ import { ___NS__startCase } from "tnp-core/lib-prod";
2
+ import { ClassHelpers__NS__getName } from "../helpers/class-helpers";
3
+ import { TaonBaseInjector } from "./base-injector";
4
+ class TaonBaseMigration extends TaonBaseInjector {
5
+ /**
6
+ * by default is READY to run
7
+ */
8
+ isReadyToRun() {
9
+ return true;
10
+ }
11
+ getDescription() {
12
+ return ___NS__startCase(ClassHelpers__NS__getName(this));
13
+ }
14
+ async up(queryRunner) {
15
+ console.log(`[TaonBaseMigration] Running migration UP "${ClassHelpers__NS__getName(this)}"`);
16
+ }
17
+ async down(queryRunner) {
18
+ console.log(`[TaonBaseMigration] Running migration DOWN "${ClassHelpers__NS__getName(this)}"`);
19
+ }
20
+ }
21
+ export {
22
+ TaonBaseMigration
23
+ };
@@ -0,0 +1,6 @@
1
+ import { TaonBaseInjector } from "./base-injector";
2
+ class TaonBaseProvider extends TaonBaseInjector {
3
+ }
4
+ export {
5
+ TaonBaseProvider
6
+ };