taon 21.0.51 → 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 (226) 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/fesm2022/taon-browser.mjs +11 -1
  5. package/browser/fesm2022/taon-browser.mjs.map +1 -1
  6. package/browser/package.json +1 -1
  7. package/browser-prod/fesm2022/taon-browser.mjs +11 -1
  8. package/browser-prod/fesm2022/taon-browser.mjs.map +1 -1
  9. package/browser-prod/package.json +1 -1
  10. package/icon-menu-taon.svg +15 -15
  11. package/lib/build-info._auto-generated_.d.ts +1 -1
  12. package/lib/build-info._auto-generated_.js +1 -1
  13. package/lib/endpoint-context.d.ts +1 -1
  14. package/lib/endpoint-context.js +11 -6
  15. package/lib/endpoint-context.js.map +1 -1
  16. package/lib/package.json +1 -1
  17. package/lib/ui/index.js +2 -2
  18. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  19. package/lib-prod/base-classes/base-abstract-entity.js +33 -0
  20. package/lib-prod/base-classes/base-angular-service.js +56 -0
  21. package/lib-prod/base-classes/base-class.js +37 -0
  22. package/lib-prod/base-classes/base-context.js +21 -0
  23. package/lib-prod/base-classes/base-controller.js +162 -0
  24. package/lib-prod/base-classes/base-crud-controller.js +235 -0
  25. package/lib-prod/base-classes/base-custom-repository.js +20 -0
  26. package/lib-prod/base-classes/base-electron-service.js +0 -0
  27. package/lib-prod/base-classes/base-entity.js +32 -0
  28. package/lib-prod/base-classes/base-file-upload.middleware.js +78 -0
  29. package/lib-prod/base-classes/base-injector.js +202 -0
  30. package/lib-prod/base-classes/base-middleware.js +6 -0
  31. package/lib-prod/base-classes/base-migration.js +23 -0
  32. package/lib-prod/base-classes/base-provider.js +6 -0
  33. package/lib-prod/base-classes/base-repository.js +589 -0
  34. package/lib-prod/base-classes/base-subscriber-for-entity.js +154 -0
  35. package/lib-prod/base-classes/base.js +0 -0
  36. package/lib-prod/build-info._auto-generated_.js +14 -0
  37. package/lib-prod/config/controller-config.js +28 -0
  38. package/lib-prod/config/controller-options.js +6 -0
  39. package/lib-prod/config/method-config.js +9 -0
  40. package/lib-prod/config/param-config.js +9 -0
  41. package/lib-prod/constants.js +29 -0
  42. package/lib-prod/context-db-migrations.js +339 -0
  43. package/lib-prod/create-context.js +152 -0
  44. package/lib-prod/decorators/classes/controller-decorator.js +21 -0
  45. package/lib-prod/decorators/classes/entity-decorator.js +49 -0
  46. package/lib-prod/decorators/classes/middleware-decorator.js +26 -0
  47. package/lib-prod/decorators/classes/migration-decorator.js +24 -0
  48. package/lib-prod/decorators/classes/provider-decorator.js +25 -0
  49. package/lib-prod/decorators/classes/repository-decorator.js +24 -0
  50. package/lib-prod/decorators/classes/subscriber-decorator.js +25 -0
  51. package/lib-prod/decorators/decorator-abstract-opt.js +5 -0
  52. package/lib-prod/decorators/http/http-decorators.js +5 -0
  53. package/lib-prod/decorators/http/http-methods-decorators.js +144 -0
  54. package/lib-prod/decorators/http/http-params-decorators.js +68 -0
  55. package/lib-prod/dependency-injection/di-container.js +31 -0
  56. package/lib-prod/endpoint-context-storage.js +36 -0
  57. package/lib-prod/endpoint-context.js +2033 -0
  58. package/lib-prod/entity-process.js +214 -0
  59. package/lib-prod/env/env.angular-node-app.js +130 -0
  60. package/lib-prod/env/env.docs-webapp.js +130 -0
  61. package/lib-prod/env/env.electron-app.js +130 -0
  62. package/lib-prod/env/env.mobile-app.js +130 -0
  63. package/lib-prod/env/env.npm-lib-and-cli-tool.js +130 -0
  64. package/lib-prod/env/env.vscode-plugin.js +130 -0
  65. package/lib-prod/env/index.js +6 -0
  66. package/lib-prod/express-types.js +0 -0
  67. package/lib-prod/formly/formly.models.js +0 -0
  68. package/lib-prod/formly/fromly.js +184 -0
  69. package/lib-prod/formly/type-from-entity.js +58 -0
  70. package/lib-prod/get-response-value.js +19 -0
  71. package/lib-prod/global-state/taon-global-state/index.js +5 -0
  72. package/lib-prod/global-state/taon-global-state/taon-global-state.abstract.context.js +20 -0
  73. package/lib-prod/global-state/taon-global-state/taon-global-state.constants.js +10 -0
  74. package/lib-prod/global-state/taon-global-state/taon-global-state.controller.js +48 -0
  75. package/lib-prod/global-state/taon-global-state/taon-global-state.entity.js +48 -0
  76. package/lib-prod/global-state/taon-global-state/taon-global-state.middleware.js +22 -0
  77. package/lib-prod/global-state/taon-global-state/taon-global-state.models.js +34 -0
  78. package/lib-prod/global-state/taon-global-state/taon-global-state.provider.js +22 -0
  79. package/lib-prod/global-state/taon-global-state/taon-global-state.repository.js +47 -0
  80. package/lib-prod/global-state/taon-global-state/taon-global-state.subscriber.js +29 -0
  81. package/lib-prod/global-state/taon-global-state/taon-global-state.utils.js +11 -0
  82. package/lib-prod/global-state/taon-transaction-registry/index.js +10 -0
  83. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.abstract.context.js +22 -0
  84. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.constants.js +8 -0
  85. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.controller.js +41 -0
  86. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.entity.js +56 -0
  87. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.middleware.js +22 -0
  88. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.models.js +10 -0
  89. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.provider.js +22 -0
  90. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.repository.js +36 -0
  91. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.subscriber.js +29 -0
  92. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.utils.js +6 -0
  93. package/lib-prod/helpers/class-helpers.js +195 -0
  94. package/lib-prod/helpers/clone-obj.js +21 -0
  95. package/lib-prod/helpers/taon-helpers.js +129 -0
  96. package/lib-prod/index._auto-generated_.js +0 -0
  97. package/lib-prod/index.js +231 -0
  98. package/lib-prod/inject.js +34 -0
  99. package/lib-prod/migrations/index.js +1 -0
  100. package/lib-prod/migrations/migrations_index._auto-generated_.js +0 -0
  101. package/lib-prod/models.js +109 -0
  102. package/lib-prod/orm/columns.js +124 -0
  103. package/lib-prod/orm/index.js +1 -0
  104. package/lib-prod/package.json +1 -1
  105. package/lib-prod/realtime/realtime-client.js +196 -0
  106. package/lib-prod/realtime/realtime-core.js +82 -0
  107. package/lib-prod/realtime/realtime-server.js +252 -0
  108. package/lib-prod/realtime/realtime-strategy/index.js +4 -0
  109. package/lib-prod/realtime/realtime-strategy/realtime-strategy-ipc.js +226 -0
  110. package/lib-prod/realtime/realtime-strategy/realtime-strategy-mock.js +262 -0
  111. package/lib-prod/realtime/realtime-strategy/realtime-strategy-socket-io.js +21 -0
  112. package/lib-prod/realtime/realtime-strategy/realtime-strategy.js +14 -0
  113. package/lib-prod/realtime/realtime-subs-manager.js +96 -0
  114. package/lib-prod/realtime/realtime.models.js +0 -0
  115. package/lib-prod/symbols.js +109 -0
  116. package/lib-prod/ui/index.js +5 -0
  117. package/lib-prod/ui/taon-admin-mode-configuration/index.js +5 -0
  118. package/lib-prod/validators.js +74 -0
  119. package/package.json +1 -1
  120. package/websql/fesm2022/taon-websql.mjs +11 -1
  121. package/websql/fesm2022/taon-websql.mjs.map +1 -1
  122. package/websql/package.json +1 -1
  123. package/websql-prod/fesm2022/taon-websql.mjs +11 -1
  124. package/websql-prod/fesm2022/taon-websql.mjs.map +1 -1
  125. package/websql-prod/package.json +1 -1
  126. package/lib-prod/base-classes/base-abstract-entity.ts +0 -34
  127. package/lib-prod/base-classes/base-angular-service.ts +0 -107
  128. package/lib-prod/base-classes/base-class.ts +0 -46
  129. package/lib-prod/base-classes/base-context.ts +0 -21
  130. package/lib-prod/base-classes/base-controller.ts +0 -240
  131. package/lib-prod/base-classes/base-crud-controller.ts +0 -298
  132. package/lib-prod/base-classes/base-custom-repository.ts +0 -10
  133. package/lib-prod/base-classes/base-electron-service.ts +0 -60
  134. package/lib-prod/base-classes/base-entity.ts +0 -28
  135. package/lib-prod/base-classes/base-file-upload.middleware.ts +0 -92
  136. package/lib-prod/base-classes/base-injector.ts +0 -278
  137. package/lib-prod/base-classes/base-middleware.ts +0 -71
  138. package/lib-prod/base-classes/base-migration.ts +0 -26
  139. package/lib-prod/base-classes/base-provider.ts +0 -8
  140. package/lib-prod/base-classes/base-repository.ts +0 -942
  141. package/lib-prod/base-classes/base-subscriber-for-entity.ts +0 -196
  142. package/lib-prod/base-classes/base.ts +0 -31
  143. package/lib-prod/build-info._auto-generated_.ts +0 -27
  144. package/lib-prod/config/controller-config.ts +0 -58
  145. package/lib-prod/config/controller-options.ts +0 -19
  146. package/lib-prod/config/method-config.ts +0 -55
  147. package/lib-prod/config/param-config.ts +0 -16
  148. package/lib-prod/constants.ts +0 -63
  149. package/lib-prod/context-db-migrations.ts +0 -488
  150. package/lib-prod/create-context.ts +0 -345
  151. package/lib-prod/decorators/classes/controller-decorator.ts +0 -25
  152. package/lib-prod/decorators/classes/entity-decorator.ts +0 -57
  153. package/lib-prod/decorators/classes/middleware-decorator.ts +0 -29
  154. package/lib-prod/decorators/classes/migration-decorator.ts +0 -27
  155. package/lib-prod/decorators/classes/provider-decorator.ts +0 -28
  156. package/lib-prod/decorators/classes/repository-decorator.ts +0 -26
  157. package/lib-prod/decorators/classes/subscriber-decorator.ts +0 -28
  158. package/lib-prod/decorators/decorator-abstract-opt.ts +0 -4
  159. package/lib-prod/decorators/http/http-decorators.ts +0 -26
  160. package/lib-prod/decorators/http/http-methods-decorators.ts +0 -275
  161. package/lib-prod/decorators/http/http-params-decorators.ts +0 -105
  162. package/lib-prod/dependency-injection/di-container.ts +0 -39
  163. package/lib-prod/endpoint-context-storage.ts +0 -47
  164. package/lib-prod/endpoint-context.ts +0 -3105
  165. package/lib-prod/entity-process.ts +0 -286
  166. package/lib-prod/env/env.angular-node-app.ts +0 -66
  167. package/lib-prod/env/env.docs-webapp.ts +0 -66
  168. package/lib-prod/env/env.electron-app.ts +0 -66
  169. package/lib-prod/env/env.mobile-app.ts +0 -66
  170. package/lib-prod/env/env.npm-lib-and-cli-tool.ts +0 -66
  171. package/lib-prod/env/env.vscode-plugin.ts +0 -66
  172. package/lib-prod/env/index.ts +0 -6
  173. package/lib-prod/express-types.ts +0 -4
  174. package/lib-prod/formly/formly.models.ts +0 -7
  175. package/lib-prod/formly/fromly.ts +0 -261
  176. package/lib-prod/formly/type-from-entity.ts +0 -80
  177. package/lib-prod/get-response-value.ts +0 -30
  178. package/lib-prod/global-state/taon-global-state/index.ts +0 -6
  179. package/lib-prod/global-state/taon-global-state/taon-global-state.abstract.context.ts +0 -21
  180. package/lib-prod/global-state/taon-global-state/taon-global-state.constants.ts +0 -9
  181. package/lib-prod/global-state/taon-global-state/taon-global-state.controller.ts +0 -44
  182. package/lib-prod/global-state/taon-global-state/taon-global-state.entity.ts +0 -40
  183. package/lib-prod/global-state/taon-global-state/taon-global-state.middleware.ts +0 -12
  184. package/lib-prod/global-state/taon-global-state/taon-global-state.models.ts +0 -48
  185. package/lib-prod/global-state/taon-global-state/taon-global-state.provider.ts +0 -16
  186. package/lib-prod/global-state/taon-global-state/taon-global-state.repository.ts +0 -47
  187. package/lib-prod/global-state/taon-global-state/taon-global-state.subscriber.ts +0 -18
  188. package/lib-prod/global-state/taon-global-state/taon-global-state.utils.ts +0 -21
  189. package/lib-prod/global-state/taon-transaction-registry/index.ts +0 -11
  190. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.abstract.context.ts +0 -23
  191. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.constants.ts +0 -7
  192. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.controller.ts +0 -38
  193. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.entity.ts +0 -54
  194. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.middleware.ts +0 -12
  195. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.models.ts +0 -6
  196. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.provider.ts +0 -16
  197. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.repository.ts +0 -29
  198. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.subscriber.ts +0 -20
  199. package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.utils.ts +0 -9
  200. package/lib-prod/helpers/class-helpers.ts +0 -315
  201. package/lib-prod/helpers/clone-obj.ts +0 -24
  202. package/lib-prod/helpers/taon-helpers.ts +0 -181
  203. package/lib-prod/index._auto-generated_.ts +0 -5
  204. package/lib-prod/index.ts +0 -323
  205. package/lib-prod/inject.ts +0 -111
  206. package/lib-prod/lib-info.md +0 -8
  207. package/lib-prod/migrations/index.ts +0 -2
  208. package/lib-prod/migrations/migrations-info.md +0 -6
  209. package/lib-prod/migrations/migrations_index._auto-generated_.ts +0 -5
  210. package/lib-prod/models.ts +0 -427
  211. package/lib-prod/orm/columns.ts +0 -121
  212. package/lib-prod/orm/index.ts +0 -62
  213. package/lib-prod/realtime/realtime-client.ts +0 -288
  214. package/lib-prod/realtime/realtime-core.ts +0 -134
  215. package/lib-prod/realtime/realtime-server.ts +0 -398
  216. package/lib-prod/realtime/realtime-strategy/index.ts +0 -4
  217. package/lib-prod/realtime/realtime-strategy/realtime-strategy-ipc.ts +0 -344
  218. package/lib-prod/realtime/realtime-strategy/realtime-strategy-mock.ts +0 -349
  219. package/lib-prod/realtime/realtime-strategy/realtime-strategy-socket-io.ts +0 -30
  220. package/lib-prod/realtime/realtime-strategy/realtime-strategy.ts +0 -21
  221. package/lib-prod/realtime/realtime-subs-manager.ts +0 -127
  222. package/lib-prod/realtime/realtime.models.ts +0 -33
  223. package/lib-prod/symbols.ts +0 -136
  224. package/lib-prod/ui/index.ts +0 -1
  225. package/lib-prod/ui/taon-admin-mode-configuration/index.ts +0 -1
  226. package/lib-prod/validators.ts +0 -103
@@ -1,488 +0,0 @@
1
- //#region imports
2
- import { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith, Helpers__NS___fixCommand, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__compilationWrapper, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC, UtilsMigrations__NS__formatTimestamp, UtilsMigrations__NS__getFormattedTimestampFromClassName, UtilsMigrations__NS__getTimestampFromClassName, UtilsMigrations__NS__isValidTimestamp } from 'tnp-core/lib-prod';
3
- import { TaonBaseMigration } from './base-classes/base-migration';
4
- import type { EndpointContext } from './endpoint-context';
5
- import { Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__ISession, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams } from './models';
6
- import { ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__setName } from './helpers/class-helpers';
7
- import {
8
- Column,
9
- DataSource,
10
- Entity,
11
- EntitySchema,
12
- Index,
13
- PrimaryGeneratedColumn,
14
- QueryRunner,
15
- Table,
16
- TableColumn,
17
- TableIndex,
18
- } from 'taon-typeorm/lib-prod';
19
- //#endregion
20
-
21
- //#region models
22
- export type MigrationStatus = 'completed' | 'pending';
23
-
24
- export class ContextDbMigrations {
25
- //#region fields
26
-
27
- //#region fields / migration table name
28
- readonly DEFAULT_MIGRATION_TABLE_NAME = 'TAON_MIGRATION_META';
29
- //#endregion
30
-
31
- //#region fields / migration statuses
32
- readonly MIGRATION_STATUS_COMPLETED: MigrationStatus = 'completed';
33
- readonly MIGRATION_STATUS_PENDING: MigrationStatus = 'pending';
34
- //#endregion
35
-
36
- //#region fields / migration table schema
37
- readonly table = new Table({
38
- name: this.DEFAULT_MIGRATION_TABLE_NAME,
39
- columns: [
40
- {
41
- name: 'id',
42
- type: 'integer',
43
- isPrimary: true, // Mark it as the primary key
44
- isGenerated: true, // Enable auto-generation
45
- generationStrategy: 'increment', // Use auto-increment strategy
46
- },
47
- {
48
- name: 'name',
49
- type: 'varchar',
50
- length: '255',
51
- isUnique: true, // Ensure the name is unique
52
- isNullable: false, // Ensure this field is required
53
- },
54
- {
55
- // context is a part of name
56
- name: 'context',
57
- type: 'varchar',
58
- length: '255',
59
- isNullable: false, // Optional context for migrations (e.g., tenant or module name)
60
- },
61
- {
62
- name: 'applied_at',
63
- type: 'timestamp',
64
- default: 'CURRENT_TIMESTAMP', // Automatically set the timestamp
65
- isNullable: true,
66
- },
67
- {
68
- name: 'status',
69
- type: 'varchar',
70
- length: '50',
71
- default: `'${this.MIGRATION_STATUS_COMPLETED}'`,
72
- isNullable: false,
73
- },
74
- // { // TODO not needed for now
75
- // name: 'checksum',
76
- // type: 'varchar',
77
- // length: '64',
78
- // isNullable: true, // Optional field to store a hash/checksum of migration file
79
- // },
80
- ],
81
- });
82
- //#endregion
83
-
84
- //#endregion
85
-
86
- //#region constructor
87
- constructor(private ctx: EndpointContext) {}
88
- //#endregion
89
-
90
- //#region methods & getters / make sure migration table exists
91
- async ensureMigrationTableExists(): Promise<void> {
92
- //#region @websqlFunc
93
- if (this.ctx.isRemoteHost || !this.ctx.connection) {
94
- return;
95
- }
96
- const queryRunner = this.ctx.connection.createQueryRunner();
97
- await queryRunner.connect();
98
- await queryRunner.startTransaction();
99
-
100
- // Check if the table already exists
101
- const hasTable = await queryRunner.hasTable(
102
- this.DEFAULT_MIGRATION_TABLE_NAME,
103
- );
104
- if (hasTable) {
105
- this.ctx.logMigrations &&
106
- console.log(
107
- `Table ${this.DEFAULT_MIGRATION_TABLE_NAME} already exists.`,
108
- );
109
- await queryRunner.commitTransaction();
110
- await queryRunner.release();
111
- return; // Exit early if the table exists
112
- }
113
-
114
- try {
115
- await queryRunner.createTable(this.table);
116
- await queryRunner.createIndex(
117
- this.DEFAULT_MIGRATION_TABLE_NAME,
118
- new TableIndex({
119
- name: 'IDX_NAME',
120
- columnNames: ['name'],
121
- }),
122
- );
123
-
124
- await queryRunner.commitTransaction();
125
- } catch (error) {
126
- this.ctx.logMigrations &&
127
- console.error(
128
- `Transaction failed [ensureMigrationTableExists]` + `, rolling back:`,
129
- error,
130
- );
131
- await queryRunner.rollbackTransaction();
132
- } finally {
133
- await queryRunner.release();
134
- }
135
-
136
- //#endregion
137
- }
138
- //#endregion
139
-
140
- //#region methods & getters / revert migration to timestamp
141
- private async logSelectALl(name: string, queryRunner: QueryRunner) {
142
- console.log(
143
- name,
144
- (
145
- await queryRunner.query(
146
- `SELECT * FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} WHERE context = $1`,
147
- [this.ctx.contextName],
148
- )
149
- ).map(m => m.name),
150
- );
151
- }
152
-
153
- async revertMigrationToTimestamp(timestamp: number) {
154
- //#region @websqlFunc
155
- if (this.ctx.isRemoteHost || !this.ctx.connection) {
156
- return;
157
- }
158
- if (!UtilsMigrations__NS__isValidTimestamp(timestamp)) {
159
- Helpers__NS__throwError(
160
- `Invalid timestamp provided for migration revert: ${timestamp}`,
161
- );
162
- }
163
-
164
- // Get all migration class functions and reverse the order
165
- const migrationsClassFns: Function[] = this.ctx
166
- .getClassFunByArr(Models__NS__ClassType.MIGRATION)
167
- .reverse();
168
-
169
- // Filter migrations that need to be reverted
170
- const migrationClassesInstancesToRevert: TaonBaseMigration[] =
171
- migrationsClassFns
172
- .map(classFn => {
173
- const timestampFromClassName = Number(
174
- UtilsMigrations__NS__getTimestampFromClassName(
175
- ClassHelpers__NS__getName(classFn),
176
- ),
177
- );
178
-
179
- if (timestampFromClassName <= timestamp) {
180
- // this.ctx.logMigrations &&
181
- // console.log(
182
- // `Stopping migration filter at: ${ClassHelpers__NS__getName(classFn)} ` +
183
- // `with timestamp ${timestampFromClassName}`,
184
- // );
185
- return null;
186
- }
187
-
188
- return this.ctx.getInstanceBy(classFn as any) as any;
189
- })
190
- .filter(f => !!f)
191
- .map(f => f as TaonBaseMigration)
192
- .filter(migrationInstance => migrationInstance.isReadyToRun());
193
-
194
- const queryRunner = this.ctx.connection.createQueryRunner();
195
- await queryRunner.connect();
196
-
197
- try {
198
- await queryRunner.startTransaction();
199
-
200
- // Fetch applied migrations from the database
201
- const appliedMigrationsForContext = await queryRunner.query(
202
- `SELECT name FROM ${this.DEFAULT_MIGRATION_TABLE_NAME}
203
- WHERE status = $1 AND context = $2`,
204
- [this.MIGRATION_STATUS_COMPLETED, this.ctx.contextName],
205
- );
206
-
207
- const appliedMigrationsForContextNames = appliedMigrationsForContext.map(
208
- m => m.name,
209
- );
210
- // console.log({ appliedMigrationsForContextNames });
211
-
212
- for (const migrationClassInstance of migrationClassesInstancesToRevert) {
213
- const migrationName = ClassHelpers__NS__getName(migrationClassInstance);
214
-
215
- if (!appliedMigrationsForContextNames.includes(migrationName)) {
216
- this.ctx.logMigrations &&
217
- console.warn(
218
- `Skipping migration not marked as applied: ${migrationName}`,
219
- );
220
- continue;
221
- }
222
-
223
- this.ctx.logMigrations &&
224
- console.log(
225
- `Reverting migration: ${migrationName} , context: ${this.ctx.contextName}`,
226
- );
227
- await migrationClassInstance.down(queryRunner);
228
-
229
- // Remove the reverted migration from the tracking table
230
- await queryRunner.query(
231
- `DELETE FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} WHERE name = $1`,
232
- [migrationName],
233
- );
234
- }
235
-
236
- await queryRunner.commitTransaction();
237
- this.ctx.logMigrations &&
238
- console.log(
239
- `Migrations successfully reverted ` +
240
- `to the specified timestamp ${timestamp} .`,
241
- );
242
- } catch (error) {
243
- this.ctx.logMigrations &&
244
- console.error('Transaction failed, rolling back:', error);
245
- await queryRunner.rollbackTransaction();
246
- } finally {
247
- await queryRunner.release();
248
- }
249
- //#endregion
250
- }
251
- //#endregion
252
-
253
- //#region methods & getters / clear migration table
254
- async clearMigrationTable() {
255
- //#region @websqlFunc
256
- if (this.ctx.isRemoteHost || !this.ctx.connection) {
257
- return;
258
- }
259
- const queryRunner = this.ctx.connection.createQueryRunner();
260
- await queryRunner.connect();
261
- await queryRunner.startTransaction();
262
-
263
- try {
264
- await queryRunner.clearTable(this.DEFAULT_MIGRATION_TABLE_NAME);
265
- await queryRunner.commitTransaction();
266
- } catch (error) {
267
- this.ctx.logMigrations &&
268
- console.error('Transaction failed, rolling back:', error);
269
- await queryRunner.rollbackTransaction();
270
- } finally {
271
- await queryRunner.release();
272
- }
273
- //#endregion
274
- }
275
- //#endregion
276
-
277
- //#region methods & getters / mark all migrations as applied
278
- async markAllMigrationsAsApplied() {
279
- //#region @websqlFunc
280
- if (this.ctx.isRemoteHost || !this.ctx.connection) {
281
- return;
282
- }
283
- const migrationsClassFns: Function[] = this.ctx.getClassFunByArr(
284
- Models__NS__ClassType.MIGRATION,
285
- );
286
-
287
- const migrationClassesInstances: TaonBaseMigration[] = migrationsClassFns
288
- .map(classFn => this.ctx.getInstanceBy(classFn as any))
289
- .map(f => f as TaonBaseMigration)
290
- .filter(migrationInstance => migrationInstance.isReadyToRun());
291
-
292
- const queryRunner = this.ctx.connection.createQueryRunner();
293
- await queryRunner.connect();
294
-
295
- try {
296
- await queryRunner.startTransaction();
297
-
298
- // Fetch already applied migrations from the database
299
- const allMigrationsInDb = await queryRunner.query(
300
- `SELECT name FROM ${this.DEFAULT_MIGRATION_TABLE_NAME}`,
301
- );
302
-
303
- const allMigrationInDBNames = allMigrationsInDb.map(m => m.name);
304
-
305
- for (const instance of migrationClassesInstances) {
306
- const migrationName = ClassHelpers__NS__getName(instance);
307
-
308
- if (allMigrationInDBNames.includes(migrationName)) {
309
- this.ctx.logMigrations &&
310
- console.log(`Skipping already applied migration: ${migrationName}`);
311
- continue;
312
- }
313
-
314
- this.ctx.logMigrations &&
315
- console.log(`Marking migration as applied: ${migrationName}`);
316
-
317
- // Insert migration as 'complete' without running
318
- await queryRunner.query(
319
- `INSERT INTO ${this.DEFAULT_MIGRATION_TABLE_NAME} (name, status, context, applied_at) ` +
320
- `VALUES ($1, $2, $3, CURRENT_TIMESTAMP)`,
321
- [
322
- migrationName,
323
- this.MIGRATION_STATUS_COMPLETED,
324
- instance.ctx.contextName,
325
- ],
326
- );
327
- }
328
-
329
- // update all pending migrations to completed
330
- await queryRunner.query(
331
- `UPDATE ${this.DEFAULT_MIGRATION_TABLE_NAME}
332
- SET status = $1, applied_at = CURRENT_TIMESTAMP
333
- WHERE status = $2`,
334
- [this.MIGRATION_STATUS_COMPLETED, this.MIGRATION_STATUS_PENDING],
335
- );
336
-
337
- await queryRunner.commitTransaction();
338
- this.ctx.logMigrations &&
339
- console.log('All migrations marked as applied.');
340
- } catch (error) {
341
- this.ctx.logMigrations &&
342
- console.error(
343
- 'Failed to mark all migrations as applied, rolling back:',
344
- error,
345
- );
346
- await queryRunner.rollbackTransaction();
347
- } finally {
348
- await queryRunner.release();
349
- }
350
- //#endregion
351
- }
352
- //#endregion
353
-
354
- //#region methods & getters / run all migrations
355
- async runAllNotCompletedMigrations() {
356
- //#region @websqlFunc
357
- if (this.ctx.isRemoteHost || !this.ctx.connection) {
358
- return;
359
- }
360
- const migrationsClassFns: Function[] = this.ctx.getClassFunByArr(
361
- Models__NS__ClassType.MIGRATION,
362
- );
363
-
364
- // console.log({
365
- // migrationClassesALl: migrationsClassFns.map(f => ClassHelpers__NS__getName(f)),
366
- // });
367
-
368
- const migrationClassesInstances: TaonBaseMigration[] = migrationsClassFns
369
- .map(classFn => this.ctx.getInstanceBy(classFn as any))
370
- .map(f => f as TaonBaseMigration)
371
- .filter(migrationInstance => migrationInstance.isReadyToRun());
372
-
373
- // console.log({
374
- // migrationClassesInstances: migrationsClassFns.map(f =>
375
- // ClassHelpers__NS__getName(f),
376
- // ),
377
- // });
378
-
379
- const queryRunner = this.ctx.connection.createQueryRunner();
380
- await queryRunner.connect();
381
-
382
- try {
383
- await queryRunner.startTransaction();
384
-
385
- // Check if the migrations table exists
386
- // TODO: Implement check for migrations table existence here
387
-
388
- // Fetch applied migrations from the database
389
- const appliedMigrationsForContext = await queryRunner.query(
390
- `SELECT name, status FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} ` +
391
- `WHERE context = $1`,
392
- [this.ctx.contextName],
393
- );
394
-
395
- //#region check and update pending migrations
396
- const pendingMigrationsForContext = appliedMigrationsForContext.filter(
397
- m => m.status === this.MIGRATION_STATUS_PENDING,
398
- );
399
-
400
- // Run pending migrations first
401
- for (const pendingContextMigration of pendingMigrationsForContext) {
402
- const migrationInstance = migrationClassesInstances.find(
403
- instance =>
404
- ClassHelpers__NS__getName(instance) === pendingContextMigration.name,
405
- );
406
-
407
- if (!migrationInstance) {
408
- this.ctx.logMigrations &&
409
- console.warn(
410
- `Pending migration ${pendingContextMigration.name} not found in loaded migrations.`,
411
- );
412
- continue;
413
- }
414
-
415
- this.ctx.logMigrations &&
416
- console.log(
417
- `Completing pending migration: ${pendingContextMigration.name}`,
418
- );
419
- await migrationInstance.up(queryRunner);
420
-
421
- // Update migration status to 'complete'
422
- await queryRunner.query(
423
- `UPDATE ${this.DEFAULT_MIGRATION_TABLE_NAME}
424
- SET status = $1, applied_at = CURRENT_TIMESTAMP
425
- WHERE name = $2`,
426
- [this.MIGRATION_STATUS_COMPLETED, pendingContextMigration.name],
427
- );
428
- }
429
- //#endregion
430
-
431
- //#region run new migrations
432
- for (const instance of migrationClassesInstances) {
433
- const migrationName = ClassHelpers__NS__getName(instance);
434
-
435
- if (appliedMigrationsForContext.some(m => m.name === migrationName)) {
436
- this.ctx.logMigrations &&
437
- console.log(`Skipping already applied migration: ${migrationName}`);
438
- continue;
439
- }
440
-
441
- this.ctx.logMigrations &&
442
- console.log(`Applying new migration: ${migrationName}`);
443
- // Insert migration as 'pending' before execution
444
- await queryRunner.query(
445
- `INSERT INTO ${this.DEFAULT_MIGRATION_TABLE_NAME} (name, status, context, applied_at) ` +
446
- `VALUES ($1, $2, $3, NULL)`,
447
- [migrationName, this.MIGRATION_STATUS_PENDING, this.ctx.contextName],
448
- );
449
-
450
- try {
451
- // Apply migration
452
- await instance.up(queryRunner);
453
-
454
- // Update migration to 'complete' after successful execution
455
- await queryRunner.query(
456
- `UPDATE ${this.DEFAULT_MIGRATION_TABLE_NAME} ` +
457
- `SET status = '${this.MIGRATION_STATUS_COMPLETED}', applied_at = CURRENT_TIMESTAMP ` +
458
- `WHERE name = $1`,
459
- [migrationName],
460
- );
461
- } catch (error) {
462
- this.ctx.logMigrations &&
463
- console.error(`Failed to apply migration: ${migrationName}`, error);
464
-
465
- // Rollback pending migration entry
466
- await queryRunner.query(
467
- `DELETE FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} WHERE name = $1`,
468
- [migrationName],
469
- );
470
-
471
- throw error; // Rethrow to ensure the transaction is rolled back
472
- }
473
- }
474
-
475
- //#endregion
476
-
477
- await queryRunner.commitTransaction();
478
- } catch (error) {
479
- this.ctx.logMigrations &&
480
- console.error('Transaction failed, rolling back:', error);
481
- await queryRunner.rollbackTransaction();
482
- } finally {
483
- await queryRunner.release();
484
- }
485
- //#endregion
486
- }
487
- //#endregion
488
- }