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
@@ -1,298 +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 } from 'tnp-core/lib-prod';
3
-
4
- import { TaonController } from '../decorators/classes/controller-decorator';
5
- import { TaonEntityOptions } from '../decorators/classes/entity-decorator';
6
- import {
7
- GET,
8
- PUT,
9
- DELETE,
10
- POST,
11
- HEAD,
12
- PATCH,
13
- } from '../decorators/http/http-methods-decorators';
14
- import { Query, Path, Body } from '../decorators/http/http-params-decorators';
15
- 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';
16
- 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';
17
- import { Symbols__NS__classMethodsNames, Symbols__NS__classNameStaticProperty, Symbols__NS__ctxInClassOrClassObj, Symbols__NS__fullClassNameStaticProperty, Symbols__NS__metadata, Symbols__NS__old, Symbols__NS__orignalClass, Symbols__NS__orignalClassClonesObj, Symbols__NS__REALTIME } from '../symbols';
18
- import { Validators__NS__checkIfMethodsWithReponseTYpeAlowed, Validators__NS__classNameVlidation, Validators__NS__preventUndefinedModel, Validators__NS__validateClassFunctions } from '../validators';
19
-
20
- import { TaonBaseController } from './base-controller';
21
- import { TaonBaseRepository } from './base-repository';
22
- //#endregion
23
-
24
- /**
25
- * Please override property entityClassFn with entity class.
26
- */
27
- @TaonController({ className: 'TaonBaseCrudController' })
28
- export abstract class TaonBaseCrudController<
29
- Entity,
30
- UPLOAD_FILE_QUERY_PARAMS = {},
31
- > extends TaonBaseController<UPLOAD_FILE_QUERY_PARAMS> {
32
- //#region fields
33
- protected db: TaonBaseRepository<Entity>;
34
-
35
- /**
36
- * Please provide entity as class property entityClassFn:
37
- * @returns class function
38
- *
39
- */
40
- abstract entityClassResolveFn: () => any;
41
- //#endregion
42
-
43
- //#region init
44
- async _(): Promise<void> {
45
- if (!___NS__isFunction(this.entityClassResolveFn)) {
46
- Helpers__NS__warn(
47
- `Skipping initing CRUD controller ${ClassHelpers__NS__getName(
48
- this,
49
- )} because entityClassResolveFn is not provided.`,
50
- );
51
- return;
52
- }
53
-
54
- let entityClassFn = this.entityClassResolveFn();
55
- this.db = this.injectRepo(entityClassFn);
56
-
57
- if (entityClassFn) {
58
- const configEntity = Reflect.getMetadata(
59
- Symbols__NS__metadata.options.entity,
60
- ClassHelpers__NS__getClassFnFromObject(this),
61
- ) as TaonEntityOptions;
62
- if (configEntity?.createTable === false) {
63
- Helpers__NS__warn(
64
- `Table for entity ${ClassHelpers__NS__getName(
65
- entityClassFn,
66
- )} will not be created. Crud will not work properly.`,
67
- );
68
- }
69
- } else {
70
- Helpers__NS__error(`Entity class not provided for controller ${ClassHelpers__NS__getName(
71
- this,
72
- )}.
73
-
74
- Please provide entity as class property entityClassFn:
75
-
76
- class ${ClassHelpers__NS__getName(this)} extends TaonBaseCrudController<Entity> {
77
- // ...
78
- entityClassResolveFn = ()=> MyEntityClass;
79
- // ...
80
- }
81
-
82
- `);
83
- }
84
- await super._();
85
- }
86
- //#endregion
87
-
88
- //#region bufferd changes
89
- @GET()
90
- bufforedChanges(
91
- @Query(`id`) id: number | string,
92
- @Query(`property`) property: string,
93
- @Query('alreadyLength') alreadyLength?: number,
94
- ): Models__NS__Http__NS__Response<string | any[]> {
95
- //#region @websqlFunc
96
- return async (request, response) => {
97
- const model = await this.db.getBy(id);
98
- if (model === void 0) {
99
- return;
100
- }
101
- Validators__NS__preventUndefinedModel(model, id);
102
- let value = model[property];
103
- let result: any;
104
- if (___NS__isString(value) || ___NS__isArray(value)) {
105
- result = (value as string).slice(alreadyLength);
106
- }
107
-
108
- return result;
109
- };
110
- //#endregion
111
- }
112
- //#endregion
113
-
114
- //#region pagintation
115
- @GET()
116
- pagination(
117
- @Query('pageNumber') pageNumber: number = 1,
118
- @Query('pageSize') pageSize: number = 10,
119
- @Query('search') search: string = '',
120
- ): Models__NS__Http__NS__Response<Entity[]> {
121
- //#region @websqlFunc
122
- return async (request, response) => {
123
- if (this.db.repositoryExists) {
124
- const query = {
125
- page: pageNumber,
126
- take: pageSize,
127
- keyword: search,
128
- };
129
- // console.log({
130
- // query
131
- // })
132
-
133
- const take = query.take || 10;
134
- const page = query.page || 1;
135
- const skip = (page - 1) * take;
136
- const keyword = query.keyword || '';
137
-
138
- const [result, total] = await this.db.findAndCount({
139
- // where: { name: Like('%' + keyword + '%') },
140
- // order: { name: "DESC" },
141
- take: take,
142
- skip: skip,
143
- });
144
-
145
- response?.setHeader(Symbols__NS__old.X_TOTAL_COUNT, total);
146
- // const lastPage = Math.ceil(total / take);
147
- // const nextPage = page + 1 > lastPage ? null : page + 1;
148
- // const prevPage = page - 1 < 1 ? null : page - 1;
149
-
150
- // console.log({
151
- // result,
152
- // total
153
- // })
154
-
155
- return result as Entity[];
156
- }
157
- return [];
158
- };
159
- //#endregion
160
- }
161
- //#endregion
162
-
163
- //#region get all
164
- @GET()
165
- getAll(): Models__NS__Http__NS__Response<Entity[]> {
166
- //#region @websqlFunc
167
- return async (request, response) => {
168
- if (this.db.repositoryExists) {
169
- const { models, totalCount } = await this.db.getAll();
170
- response?.setHeader(Symbols__NS__old.X_TOTAL_COUNT, totalCount);
171
- return models;
172
- }
173
- return [];
174
- };
175
- //#endregion
176
- }
177
- //#endregion
178
-
179
- //#region get by id
180
- @GET()
181
- getBy(@Query(`id`) id: number | string): Models__NS__Http__NS__Response<Entity> {
182
- //#region @websqlFunc
183
- return async () => {
184
- const model = await this.db.getBy(id);
185
- return model;
186
- };
187
- //#endregion
188
- }
189
- //#endregion
190
-
191
- //#region update by id
192
- @PUT()
193
- updateById(
194
- @Query(`id`) id: number | string,
195
- @Body() item: Entity,
196
- ): Models__NS__Http__NS__Response<Entity> {
197
- //#region @websqlFunc
198
-
199
- return async () => {
200
- const model = await this.db.updateById<Entity>(id, item as any);
201
- return model;
202
- };
203
- //#endregion
204
- }
205
- //#endregion
206
-
207
- //#region patch by id
208
- @PATCH()
209
- patchById(
210
- @Query(`id`) id: number | string,
211
- @Body() item: Entity,
212
- ): Models__NS__Http__NS__Response<Entity> {
213
- //#region @websqlFunc
214
-
215
- return async () => {
216
- const model = await this.db.updateById<Entity>(id, item as any);
217
- return model;
218
- };
219
- //#endregion
220
- }
221
- //#endregion
222
-
223
- //#region bulk update
224
- @PUT()
225
- bulkUpdate(@Body() items: Entity[]): Models__NS__Http__NS__Response<Entity[]> {
226
- //#region @websqlFunc
227
- return async () => {
228
- if (!Array.isArray(items) || items?.length === 0) {
229
- return [];
230
- }
231
- const { models } = await this.db.bulkUpdate(items);
232
- return models;
233
- };
234
- //#endregion
235
- }
236
- //#endregion
237
-
238
- //#region delete by id
239
- @DELETE()
240
- deleteById(@Query(`id`) id: number | string): Models__NS__Http__NS__Response<Entity> {
241
- //#region @websqlFunc
242
- return async () => {
243
- const model = await this.db.deleteById(id as any);
244
- return model;
245
- };
246
- //#endregion
247
- }
248
- //#endregion
249
-
250
- //#region bulk delete
251
- @DELETE()
252
- bulkDelete(
253
- @Query(`ids`) ids: (number | string)[],
254
- ): Models__NS__Http__NS__Response<(number | string | Entity)[]> {
255
- //#region @websqlFunc
256
- return async () => {
257
- const models = await this.db.bulkDelete(ids);
258
- return models;
259
- };
260
- //#endregion
261
- }
262
- //#endregion
263
-
264
- //#region bulk delete
265
- @DELETE()
266
- clearTable(): Models__NS__Http__NS__Response<void> {
267
- //#region @websqlFunc
268
- return async () => {
269
- await this.db.clear()
270
- };
271
- //#endregion
272
- }
273
- //#endregion
274
-
275
- //#region create
276
- @POST()
277
- save(@Body() item: Entity): Models__NS__Http__NS__Response<Entity> {
278
- //#region @websqlFunc
279
- return async () => {
280
- const model = await this.db.save(item);
281
- return model as Entity;
282
- };
283
- //#endregion
284
- }
285
- //#endregion
286
-
287
- //#region bulk create
288
- @POST()
289
- bulkCreate(@Body() items: Entity): Models__NS__Http__NS__Response<Entity[]> {
290
- //#region @websqlFunc
291
- return async () => {
292
- const models = await this.db.bulkCreate(items as any);
293
- return models as Entity[];
294
- };
295
- //#endregion
296
- }
297
- //#endregion
298
- }
@@ -1,10 +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 } from 'tnp-core/lib-prod';
3
-
4
- import { TaonRepository } from '../decorators/classes/repository-decorator';
5
-
6
- import { TaonBaseInjector } from './base-injector';
7
- //#endregion
8
-
9
- @TaonRepository({ className: 'TaonBaseCustomRepository' })
10
- export abstract class TaonBaseCustomRepository extends TaonBaseInjector {}
@@ -1,60 +0,0 @@
1
- // TODO any purpose for this ?
2
- // //#region imports
3
- // import * as childProcess from 'child_process';
4
- // import * as fs from 'fs';
5
-
6
- // import { Injectable } from '@angular/core';
7
- // import { ipcRenderer, webFrame } from 'electron';
8
- // import { UtilsOs } from 'tnp-core/src';
9
- // //#endregion
10
-
11
- // // If you import a module but never use any of the imported values other than as TypeScript types,
12
- // // the resulting javascript file will look as if you never imported the module at all.
13
-
14
- // @Injectable({
15
- // providedIn: 'root',
16
- // })
17
- // export class TaonBaseElectronService {
18
- // ipcRenderer!: typeof ipcRenderer;
19
-
20
- // webFrame!: typeof webFrame;
21
-
22
- // childProcess!: typeof childProcess;
23
-
24
- // fs!: typeof fs;
25
-
26
- // constructor() {
27
- // // Conditional imports
28
- // if (UtilsOs.isElectron) {
29
- // this.ipcRenderer = (window as any).require('electron').ipcRenderer;
30
- // this.webFrame = (window as any).require('electron').webFrame;
31
-
32
- // this.fs = (window as any).require('fs');
33
-
34
- // this.childProcess = (window as any).require('child_process');
35
- // this.childProcess.exec('node -v', (error, stdout, stderr) => {
36
- // if (error) {
37
- // console.error(`error: ${error.message}`);
38
- // return;
39
- // }
40
- // if (stderr) {
41
- // console.error(`stderr: ${stderr}`);
42
- // return;
43
- // }
44
- // console.log(`stdout:\n${stdout}`);
45
- // });
46
-
47
- // // Notes :
48
- // // * A NodeJS's dependency imported with 'window.require' MUST BE present in `dependencies` of both `app/package.json`
49
- // // and `package.json (root folder)` in order to make it work here in Electron's Renderer process (src folder)
50
- // // because it will loaded at runtime by Electron.
51
- // // * A NodeJS's dependency imported with TS module import (ex: import { Dropbox } from 'dropbox') CAN only be present
52
- // // in `dependencies` of `package.json (root folder)` because it is loaded during build phase and does not need to be
53
- // // in the final bundle. Reminder : only if not used in Electron's Main process (app folder)
54
-
55
- // // If you want to use a NodeJS 3rd party deps in Renderer process,
56
- // // ipcRenderer.invoke can serve many common use cases.
57
- // // https://www.electronjs.org/docs/latest/api/ipc-renderer#ipcrendererinvokechannel-args
58
- // }
59
- // }
60
- // }
@@ -1,28 +0,0 @@
1
- import { Entity } from 'taon-typeorm/lib-prod'; // @websql
2
- import { RelationPath } from 'taon-typeorm/lib-prod';
3
-
4
- import { TaonBaseClass } from './base-class';
5
-
6
- //#region @websql
7
- @Entity()
8
- //#endregion
9
- export abstract class TaonBaseEntity<
10
- /**
11
- * type for cloning
12
- */
13
- CloneT extends TaonBaseClass = any,
14
- > extends TaonBaseClass<CloneT> {
15
- /**
16
- * simple check if relation is ok
17
- */
18
- relation(relationName: RelationPath<CloneT>): string {
19
- return relationName as string;
20
- }
21
-
22
- /**
23
- * simple check if relation is ok
24
- */
25
- relations(relationNames: RelationPath<CloneT>[]): string[] {
26
- return relationNames as string[];
27
- }
28
- }
@@ -1,92 +0,0 @@
1
- //#region imports
2
- import * as crypto from 'crypto';
3
-
4
- import type { RequestHandler } from 'express';
5
- import * as multer from 'multer';
6
- import {
7
- TaonClientMiddlewareInterceptOptions,
8
- TaonServerMiddlewareInterceptOptions,
9
- } from 'ng2-rest/lib-prod';
10
- import { Observable } from 'rxjs';
11
- import { crossPlatformPath, fse, path } from 'tnp-core/lib-prod';
12
-
13
- import { TaonMiddleware } from '../decorators/classes/middleware-decorator';
14
-
15
- import {
16
- TaonBaseMiddleware,
17
- TaonAdditionalMiddlewareMethodInfo,
18
- } from './base-middleware';
19
- //#endregion
20
-
21
- /**
22
- * Configurable file upload middleware (multer based)
23
- */
24
- @TaonMiddleware({
25
- className: 'TaonBaseFileUploadMiddleware',
26
- })
27
- export class TaonBaseFileUploadMiddleware extends TaonBaseMiddleware {
28
- async interceptServerMethod(
29
- { req, res, next }: TaonServerMiddlewareInterceptOptions,
30
- { methodName, expressPath }: TaonAdditionalMiddlewareMethodInfo,
31
- ): Promise<void> {
32
- return this.middleware()(req, res, next);
33
- }
34
-
35
- //#region upload Dir
36
- uploadDir(): string {
37
- return crossPlatformPath([this.ctx.cwd, 'uploaded-files']);
38
- }
39
- //#endregion
40
-
41
- //#region storage
42
- storage(): multer.StorageEngine {
43
- //#region @backendFunc
44
- const uploadDir = this.uploadDir();
45
- if (!fse.existsSync(uploadDir)) {
46
- try {
47
- fse.mkdirSync(uploadDir, { recursive: true });
48
- } catch (error) {}
49
- }
50
- return multer.diskStorage({
51
- destination: (_req, _file, cb) => cb(null, uploadDir),
52
- filename: (_req, file, cb) => {
53
- const ext = path.extname(file.originalname).toLowerCase();
54
- const base = path
55
- .basename(file.originalname, ext)
56
- .replace(/[^\w.-]/g, '_');
57
- const uniq = `${Date.now()}-${crypto.randomBytes(6).toString('hex')}`;
58
- const filenameToProcess = `${base}-${uniq}${ext}`;
59
- cb(null, filenameToProcess);
60
- },
61
- });
62
- //#endregion
63
- }
64
- //#endregion
65
-
66
- //#region upload
67
- upload(): multer.Multer {
68
- //#region @backendFunc
69
- return multer({
70
- storage: this.storage(),
71
- limits: { fileSize: 1024 * 1024 * 1024 }, // 1 GiB cap; tweak as needed
72
- // TODO implement file filter if needed
73
- // fileFilter: (_req, file, cb) => {
74
- // // accept only .zip by filename extension
75
- // if (path.extname(file.originalname).toLowerCase() !== '.zip') {
76
- // return cb(new Error('Only .zip files are allowed'));
77
- // }
78
- // cb(null, true);
79
- // },
80
- });
81
- //#endregion
82
- }
83
- //#endregion
84
-
85
- //#region middleware
86
- middleware(): RequestHandler {
87
- //#region @backendFunc
88
- return this.upload().any();
89
- //#endregion
90
- }
91
- //#endregion
92
- }