@taon-dev/cms 21.0.4 → 21.0.7

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 (479) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/browser/fesm2022/cms-browser.mjs +2864 -433
  3. package/browser/fesm2022/cms-browser.mjs.map +1 -1
  4. package/browser/package.json +1 -1
  5. package/browser/types/cms-browser.d.ts +439 -70
  6. package/browser-prod/fesm2022/cms-browser-prod.mjs +2866 -432
  7. package/browser-prod/fesm2022/cms-browser-prod.mjs.map +1 -1
  8. package/browser-prod/package.json +1 -1
  9. package/browser-prod/types/cms-browser-prod.d.ts +437 -70
  10. package/html/app/baseline-backoffice/taon-baseline-backoffice.component.html +23 -0
  11. package/html/app/cms-example/cms-example.component.html +2 -0
  12. package/html/app/session-example/session-example.component.html +2 -0
  13. package/html/lib/taon-cms-backoffice/taon-cms-backoffice.component.html +9 -4
  14. package/html/lib/taon-posts/taon-cms-post/taon-cms-post.component.html +183 -0
  15. package/html/lib/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.html +12 -0
  16. package/html/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +14 -0
  17. package/html/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html +35 -0
  18. package/html/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html +27 -0
  19. package/i18n/app.ts.en-US.i18n.data.d.ts +0 -8
  20. package/i18n/app.ts.pl-PL.i18n.data.d.ts +0 -8
  21. package/i18n/src.translation.d.ts +1 -1
  22. package/lib/app.data.d.ts +22 -0
  23. package/lib/app.data.js +23 -0
  24. package/lib/app.data.js.map +1 -0
  25. package/lib/build-info._auto-generated_.d.ts +1 -1
  26. package/lib/build-info._auto-generated_.js +1 -1
  27. package/lib/env/env.angular-node-app.d.ts +3 -0
  28. package/lib/env/env.angular-node-app.js +10 -2
  29. package/lib/env/env.angular-node-app.js.map +1 -1
  30. package/lib/env/env.docs-webapp.d.ts +3 -0
  31. package/lib/env/env.docs-webapp.js +10 -2
  32. package/lib/env/env.docs-webapp.js.map +1 -1
  33. package/lib/env/env.electron-app.d.ts +3 -0
  34. package/lib/env/env.electron-app.js +10 -2
  35. package/lib/env/env.electron-app.js.map +1 -1
  36. package/lib/env/env.mobile-app.d.ts +3 -0
  37. package/lib/env/env.mobile-app.js +10 -2
  38. package/lib/env/env.mobile-app.js.map +1 -1
  39. package/lib/env/env.npm-lib-and-cli-tool.d.ts +3 -0
  40. package/lib/env/env.npm-lib-and-cli-tool.js +10 -2
  41. package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  42. package/lib/env/env.vscode-plugin.d.ts +3 -0
  43. package/lib/env/env.vscode-plugin.js +10 -2
  44. package/lib/env/env.vscode-plugin.js.map +1 -1
  45. package/lib/i18n/lib.translation.d.ts +2 -2
  46. package/lib/index._auto-generated_.d.ts +18 -1
  47. package/lib/index._auto-generated_.js +17 -0
  48. package/lib/index._auto-generated_.js.map +1 -1
  49. package/lib/index.d.ts +3 -1
  50. package/lib/index.js +2 -0
  51. package/lib/index.js.map +1 -1
  52. package/lib/migrations/1791132517216_initial.d.ts +7 -0
  53. package/lib/migrations/1791132517216_initial.js +74 -0
  54. package/lib/migrations/1791132517216_initial.js.map +1 -0
  55. package/lib/migrations/migrations_index._auto-generated_.d.ts +4 -0
  56. package/lib/migrations/migrations_index._auto-generated_.js +7 -0
  57. package/lib/migrations/migrations_index._auto-generated_.js.map +1 -1
  58. package/lib/package.json +1 -1
  59. package/lib/taon-cms-backoffice/index.js +2 -2
  60. package/lib/taon-cms-category/taon-cms-category.abstract.context.d.ts +7 -7
  61. package/lib/taon-cms-category/taon-cms-category.controller.d.ts +2 -6
  62. package/lib/taon-cms-category/taon-cms-category.controller.js +3 -33
  63. package/lib/taon-cms-category/taon-cms-category.controller.js.map +1 -1
  64. package/lib/taon-cms-category/taon-cms-category.entity.d.ts +2 -2
  65. package/lib/taon-cms-category/taon-cms-category.middleware.d.ts +2 -2
  66. package/lib/taon-cms-category/taon-cms-category.provider.d.ts +2 -2
  67. package/lib/taon-cms-category/taon-cms-category.repository.d.ts +4 -6
  68. package/lib/taon-cms-category/taon-cms-category.repository.js +8 -11
  69. package/lib/taon-cms-category/taon-cms-category.repository.js.map +1 -1
  70. package/lib/taon-cms-category/taon-cms-category.subscriber.d.ts +2 -2
  71. package/lib/taon-cms-comment/taon-cms-comment.abstract.context.d.ts +7 -7
  72. package/lib/taon-cms-comment/taon-cms-comment.controller.d.ts +2 -2
  73. package/lib/taon-cms-comment/taon-cms-comment.entity.d.ts +2 -2
  74. package/lib/taon-cms-comment/taon-cms-comment.middleware.d.ts +2 -2
  75. package/lib/taon-cms-comment/taon-cms-comment.provider.d.ts +2 -2
  76. package/lib/taon-cms-comment/taon-cms-comment.repository.d.ts +2 -2
  77. package/lib/taon-cms-comment/taon-cms-comment.subscriber.d.ts +2 -2
  78. package/lib/taon-cms-content/index.d.ts +1 -0
  79. package/lib/taon-cms-content/index.js +1 -0
  80. package/lib/taon-cms-content/index.js.map +1 -1
  81. package/lib/taon-cms-content/taon-cms-content-storage.controller.d.ts +7 -0
  82. package/lib/taon-cms-content/taon-cms-content-storage.controller.js +41 -0
  83. package/lib/taon-cms-content/taon-cms-content-storage.controller.js.map +1 -0
  84. package/lib/taon-cms-content/taon-cms-content.abstract.context.d.ts +7 -7
  85. package/lib/taon-cms-content/taon-cms-content.abstract.context.js +16 -5
  86. package/lib/taon-cms-content/taon-cms-content.abstract.context.js.map +1 -1
  87. package/lib/taon-cms-content/taon-cms-content.constants.js +5 -0
  88. package/lib/taon-cms-content/taon-cms-content.constants.js.map +1 -1
  89. package/lib/taon-cms-content/taon-cms-content.controller.d.ts +14 -6
  90. package/lib/taon-cms-content/taon-cms-content.controller.js +125 -21
  91. package/lib/taon-cms-content/taon-cms-content.controller.js.map +1 -1
  92. package/lib/taon-cms-content/taon-cms-content.entity.d.ts +10 -3
  93. package/lib/taon-cms-content/taon-cms-content.entity.js +59 -3
  94. package/lib/taon-cms-content/taon-cms-content.entity.js.map +1 -1
  95. package/lib/taon-cms-content/taon-cms-content.middleware.d.ts +2 -2
  96. package/lib/taon-cms-content/taon-cms-content.models.d.ts +40 -0
  97. package/lib/taon-cms-content/taon-cms-content.models.js +8 -1
  98. package/lib/taon-cms-content/taon-cms-content.models.js.map +1 -1
  99. package/lib/taon-cms-content/taon-cms-content.provider.d.ts +2 -2
  100. package/lib/taon-cms-content/taon-cms-content.provider.js.map +1 -1
  101. package/lib/taon-cms-content/taon-cms-content.repository.d.ts +29 -2
  102. package/lib/taon-cms-content/taon-cms-content.repository.js +326 -0
  103. package/lib/taon-cms-content/taon-cms-content.repository.js.map +1 -1
  104. package/lib/taon-cms-content/taon-cms-content.subscriber.d.ts +2 -2
  105. package/lib/taon-cms-content/taon-cms-content.validation.d.ts +9 -0
  106. package/lib/taon-cms-content/taon-cms-content.validation.js +79 -0
  107. package/lib/taon-cms-content/taon-cms-content.validation.js.map +1 -0
  108. package/lib/taon-cms-content-asset/taon-cms-content-asset.abstract.context.d.ts +7 -7
  109. package/lib/taon-cms-content-asset/taon-cms-content-asset.controller.d.ts +2 -2
  110. package/lib/taon-cms-content-asset/taon-cms-content-asset.entity.d.ts +2 -2
  111. package/lib/taon-cms-content-asset/taon-cms-content-asset.middleware.d.ts +2 -2
  112. package/lib/taon-cms-content-asset/taon-cms-content-asset.provider.d.ts +2 -2
  113. package/lib/taon-cms-content-asset/taon-cms-content-asset.repository.d.ts +2 -2
  114. package/lib/taon-cms-content-asset/taon-cms-content-asset.subscriber.d.ts +2 -2
  115. package/lib/taon-cms-content-permission/taon-cms-content-permission.abstract.context.d.ts +7 -7
  116. package/lib/taon-cms-content-permission/taon-cms-content-permission.controller.d.ts +2 -2
  117. package/lib/taon-cms-content-permission/taon-cms-content-permission.entity.d.ts +2 -2
  118. package/lib/taon-cms-content-permission/taon-cms-content-permission.middleware.d.ts +2 -2
  119. package/lib/taon-cms-content-permission/taon-cms-content-permission.provider.d.ts +2 -2
  120. package/lib/taon-cms-content-permission/taon-cms-content-permission.repository.d.ts +2 -2
  121. package/lib/taon-cms-content-permission/taon-cms-content-permission.subscriber.d.ts +2 -2
  122. package/lib/taon-cms-content-revision/taon-cms-content-revision.abstract.context.d.ts +7 -7
  123. package/lib/taon-cms-content-revision/taon-cms-content-revision.controller.d.ts +2 -6
  124. package/lib/taon-cms-content-revision/taon-cms-content-revision.controller.js +3 -33
  125. package/lib/taon-cms-content-revision/taon-cms-content-revision.controller.js.map +1 -1
  126. package/lib/taon-cms-content-revision/taon-cms-content-revision.entity.d.ts +4 -2
  127. package/lib/taon-cms-content-revision/taon-cms-content-revision.entity.js +9 -0
  128. package/lib/taon-cms-content-revision/taon-cms-content-revision.entity.js.map +1 -1
  129. package/lib/taon-cms-content-revision/taon-cms-content-revision.middleware.d.ts +2 -2
  130. package/lib/taon-cms-content-revision/taon-cms-content-revision.provider.d.ts +2 -2
  131. package/lib/taon-cms-content-revision/taon-cms-content-revision.repository.d.ts +8 -6
  132. package/lib/taon-cms-content-revision/taon-cms-content-revision.repository.js +33 -10
  133. package/lib/taon-cms-content-revision/taon-cms-content-revision.repository.js.map +1 -1
  134. package/lib/taon-cms-content-revision/taon-cms-content-revision.subscriber.d.ts +2 -2
  135. package/lib/taon-cms-content-tag/taon-cms-content-tag.abstract.context.d.ts +7 -7
  136. package/lib/taon-cms-content-tag/taon-cms-content-tag.controller.d.ts +2 -6
  137. package/lib/taon-cms-content-tag/taon-cms-content-tag.controller.js +3 -33
  138. package/lib/taon-cms-content-tag/taon-cms-content-tag.controller.js.map +1 -1
  139. package/lib/taon-cms-content-tag/taon-cms-content-tag.entity.d.ts +2 -2
  140. package/lib/taon-cms-content-tag/taon-cms-content-tag.middleware.d.ts +2 -2
  141. package/lib/taon-cms-content-tag/taon-cms-content-tag.provider.d.ts +2 -2
  142. package/lib/taon-cms-content-tag/taon-cms-content-tag.repository.d.ts +5 -6
  143. package/lib/taon-cms-content-tag/taon-cms-content-tag.repository.js +15 -11
  144. package/lib/taon-cms-content-tag/taon-cms-content-tag.repository.js.map +1 -1
  145. package/lib/taon-cms-content-tag/taon-cms-content-tag.subscriber.d.ts +2 -2
  146. package/lib/taon-cms-tag/taon-cms-tag.abstract.context.d.ts +7 -7
  147. package/lib/taon-cms-tag/taon-cms-tag.controller.d.ts +2 -2
  148. package/lib/taon-cms-tag/taon-cms-tag.entity.d.ts +2 -2
  149. package/lib/taon-cms-tag/taon-cms-tag.middleware.d.ts +2 -2
  150. package/lib/taon-cms-tag/taon-cms-tag.provider.d.ts +2 -2
  151. package/lib/taon-cms-tag/taon-cms-tag.repository.d.ts +4 -2
  152. package/lib/taon-cms-tag/taon-cms-tag.repository.js +13 -0
  153. package/lib/taon-cms-tag/taon-cms-tag.repository.js.map +1 -1
  154. package/lib/taon-cms-tag/taon-cms-tag.subscriber.d.ts +2 -2
  155. package/lib/taon-cms.abstract.context.d.ts +7 -7
  156. package/lib/taon-cms.abstract.context.js +4 -2
  157. package/lib/taon-cms.abstract.context.js.map +1 -1
  158. package/lib/taon-posts/taon-cms-post/index.d.ts +1 -0
  159. package/lib/taon-posts/taon-cms-post/index.js +5 -0
  160. package/lib/taon-posts/taon-cms-post/index.js.map +1 -0
  161. package/lib/taon-posts/taon-cms-post/taon-cms-post.models.d.ts +8 -0
  162. package/lib/taon-posts/taon-cms-post/taon-cms-post.models.js +3 -0
  163. package/lib/taon-posts/taon-cms-post/taon-cms-post.models.js.map +1 -0
  164. package/lib/taon-posts/taon-cms-post-edit-dialog/index.d.ts +1 -0
  165. package/lib/taon-posts/taon-cms-post-edit-dialog/index.js +5 -0
  166. package/lib/taon-posts/taon-cms-post-edit-dialog/index.js.map +1 -0
  167. package/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -0
  168. package/lib/taon-posts/taon-cms-posts-backoffice/index.js +5 -0
  169. package/lib/taon-posts/taon-cms-posts-backoffice/index.js.map +1 -0
  170. package/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.d.ts +1 -0
  171. package/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.js +3 -0
  172. package/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.js.map +1 -0
  173. package/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -0
  174. package/lib/taon-posts/taon-cms-revision-chooser/index.js +5 -0
  175. package/lib/taon-posts/taon-cms-revision-chooser/index.js.map +1 -0
  176. package/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -0
  177. package/lib/taon-posts/taon-related-post-chooser/index.js +5 -0
  178. package/lib/taon-posts/taon-related-post-chooser/index.js.map +1 -0
  179. package/lib-esm/app/baseline-backoffice/index.d.ts +0 -0
  180. package/lib-esm/app/baseline-backoffice/index.js +2 -0
  181. package/lib-esm/app/baseline-backoffice/index.js.map +1 -0
  182. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.component.d.ts +0 -0
  183. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.component.js +2 -0
  184. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.component.js.map +1 -0
  185. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.models.d.ts +0 -0
  186. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.models.js +2 -0
  187. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.models.js.map +1 -0
  188. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.routes.d.ts +0 -0
  189. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.routes.js +2 -0
  190. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.routes.js.map +1 -0
  191. package/lib-esm/app/cms-example/cms-example.component.d.ts +0 -0
  192. package/lib-esm/app/cms-example/cms-example.component.js +2 -0
  193. package/lib-esm/app/cms-example/cms-example.component.js.map +1 -0
  194. package/lib-esm/app/cms-example/cms-example.models.d.ts +0 -0
  195. package/lib-esm/app/cms-example/cms-example.models.js +2 -0
  196. package/lib-esm/app/cms-example/cms-example.models.js.map +1 -0
  197. package/lib-esm/app/cms-example/cms-example.routes.d.ts +0 -0
  198. package/lib-esm/app/cms-example/cms-example.routes.js +2 -0
  199. package/lib-esm/app/cms-example/cms-example.routes.js.map +1 -0
  200. package/lib-esm/app/cms-example/index.d.ts +0 -0
  201. package/lib-esm/app/cms-example/index.js +2 -0
  202. package/lib-esm/app/cms-example/index.js.map +1 -0
  203. package/lib-esm/app/session-example/index.d.ts +0 -0
  204. package/lib-esm/app/session-example/index.js +2 -0
  205. package/lib-esm/app/session-example/index.js.map +1 -0
  206. package/lib-esm/app/session-example/session-example.component.d.ts +0 -0
  207. package/lib-esm/app/session-example/session-example.component.js +2 -0
  208. package/lib-esm/app/session-example/session-example.component.js.map +1 -0
  209. package/lib-esm/app/session-example/session-example.models.d.ts +0 -0
  210. package/lib-esm/app/session-example/session-example.models.js +2 -0
  211. package/lib-esm/app/session-example/session-example.models.js.map +1 -0
  212. package/lib-esm/app/session-example/session-example.routes.d.ts +0 -0
  213. package/lib-esm/app/session-example/session-example.routes.js +2 -0
  214. package/lib-esm/app/session-example/session-example.routes.js.map +1 -0
  215. package/lib-esm/lib/app.data.d.ts +22 -0
  216. package/lib-esm/lib/app.data.js +20 -0
  217. package/lib-esm/lib/app.data.js.map +1 -0
  218. package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
  219. package/lib-esm/lib/build-info._auto-generated_.js +1 -1
  220. package/lib-esm/lib/env/env.angular-node-app.d.ts +3 -0
  221. package/lib-esm/lib/env/env.angular-node-app.js +6 -0
  222. package/lib-esm/lib/env/env.angular-node-app.js.map +1 -1
  223. package/lib-esm/lib/env/env.docs-webapp.d.ts +3 -0
  224. package/lib-esm/lib/env/env.docs-webapp.js +6 -0
  225. package/lib-esm/lib/env/env.docs-webapp.js.map +1 -1
  226. package/lib-esm/lib/env/env.electron-app.d.ts +3 -0
  227. package/lib-esm/lib/env/env.electron-app.js +6 -0
  228. package/lib-esm/lib/env/env.electron-app.js.map +1 -1
  229. package/lib-esm/lib/env/env.mobile-app.d.ts +3 -0
  230. package/lib-esm/lib/env/env.mobile-app.js +6 -0
  231. package/lib-esm/lib/env/env.mobile-app.js.map +1 -1
  232. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +3 -0
  233. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +6 -0
  234. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  235. package/lib-esm/lib/env/env.vscode-plugin.d.ts +3 -0
  236. package/lib-esm/lib/env/env.vscode-plugin.js +6 -0
  237. package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -1
  238. package/lib-esm/lib/index._auto-generated_.d.ts +27 -0
  239. package/lib-esm/lib/index._auto-generated_.js +17 -0
  240. package/lib-esm/lib/index._auto-generated_.js.map +1 -1
  241. package/lib-esm/lib/index.d.ts +3 -1
  242. package/lib-esm/lib/index.js +2 -0
  243. package/lib-esm/lib/index.js.map +1 -1
  244. package/lib-esm/lib/migrations/1791132517216_initial.d.ts +7 -0
  245. package/lib-esm/lib/migrations/1791132517216_initial.js +65 -0
  246. package/lib-esm/lib/migrations/1791132517216_initial.js.map +1 -0
  247. package/lib-esm/lib/migrations/migrations_index._auto-generated_.d.ts +4 -0
  248. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js +4 -0
  249. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js.map +1 -1
  250. package/lib-esm/lib/taon-cms-backoffice/index.d.ts +1 -1
  251. package/lib-esm/lib/taon-cms-backoffice/index.js +1 -1
  252. package/lib-esm/lib/taon-cms-category/index.d.ts +2 -1
  253. package/lib-esm/lib/taon-cms-category/taon-cms-category.abstract.context.d.ts +3 -3
  254. package/lib-esm/lib/taon-cms-category/taon-cms-category.controller.d.ts +1 -5
  255. package/lib-esm/lib/taon-cms-category/taon-cms-category.controller.js +4 -28
  256. package/lib-esm/lib/taon-cms-category/taon-cms-category.controller.js.map +1 -1
  257. package/lib-esm/lib/taon-cms-category/taon-cms-category.repository.d.ts +2 -4
  258. package/lib-esm/lib/taon-cms-category/taon-cms-category.repository.js +8 -11
  259. package/lib-esm/lib/taon-cms-category/taon-cms-category.repository.js.map +1 -1
  260. package/lib-esm/lib/taon-cms-comment/index.d.ts +2 -1
  261. package/lib-esm/lib/taon-cms-comment/taon-cms-comment.abstract.context.d.ts +3 -3
  262. package/lib-esm/lib/taon-cms-content/index.d.ts +3 -1
  263. package/lib-esm/lib/taon-cms-content/index.js +1 -0
  264. package/lib-esm/lib/taon-cms-content/index.js.map +1 -1
  265. package/lib-esm/lib/taon-cms-content/taon-cms-content-storage.controller.d.ts +7 -0
  266. package/lib-esm/lib/taon-cms-content/taon-cms-content-storage.controller.js +32 -0
  267. package/lib-esm/lib/taon-cms-content/taon-cms-content-storage.controller.js.map +1 -0
  268. package/lib-esm/lib/taon-cms-content/taon-cms-content.abstract.context.d.ts +3 -3
  269. package/lib-esm/lib/taon-cms-content/taon-cms-content.abstract.context.js +16 -5
  270. package/lib-esm/lib/taon-cms-content/taon-cms-content.abstract.context.js.map +1 -1
  271. package/lib-esm/lib/taon-cms-content/taon-cms-content.constants.js +5 -0
  272. package/lib-esm/lib/taon-cms-content/taon-cms-content.constants.js.map +1 -1
  273. package/lib-esm/lib/taon-cms-content/taon-cms-content.controller.d.ts +12 -4
  274. package/lib-esm/lib/taon-cms-content/taon-cms-content.controller.js +126 -22
  275. package/lib-esm/lib/taon-cms-content/taon-cms-content.controller.js.map +1 -1
  276. package/lib-esm/lib/taon-cms-content/taon-cms-content.entity.d.ts +8 -1
  277. package/lib-esm/lib/taon-cms-content/taon-cms-content.entity.js +60 -4
  278. package/lib-esm/lib/taon-cms-content/taon-cms-content.entity.js.map +1 -1
  279. package/lib-esm/lib/taon-cms-content/taon-cms-content.models.d.ts +40 -0
  280. package/lib-esm/lib/taon-cms-content/taon-cms-content.models.js +7 -0
  281. package/lib-esm/lib/taon-cms-content/taon-cms-content.models.js.map +1 -1
  282. package/lib-esm/lib/taon-cms-content/taon-cms-content.provider.js.map +1 -1
  283. package/lib-esm/lib/taon-cms-content/taon-cms-content.repository.d.ts +27 -0
  284. package/lib-esm/lib/taon-cms-content/taon-cms-content.repository.js +327 -1
  285. package/lib-esm/lib/taon-cms-content/taon-cms-content.repository.js.map +1 -1
  286. package/lib-esm/lib/taon-cms-content/taon-cms-content.validation.d.ts +9 -0
  287. package/lib-esm/lib/taon-cms-content/taon-cms-content.validation.js +73 -0
  288. package/lib-esm/lib/taon-cms-content/taon-cms-content.validation.js.map +1 -0
  289. package/lib-esm/lib/taon-cms-content-asset/index.d.ts +2 -1
  290. package/lib-esm/lib/taon-cms-content-asset/taon-cms-content-asset.abstract.context.d.ts +3 -3
  291. package/lib-esm/lib/taon-cms-content-permission/index.d.ts +2 -1
  292. package/lib-esm/lib/taon-cms-content-permission/taon-cms-content-permission.abstract.context.d.ts +3 -3
  293. package/lib-esm/lib/taon-cms-content-revision/index.d.ts +2 -1
  294. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.abstract.context.d.ts +3 -3
  295. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.controller.d.ts +1 -5
  296. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.controller.js +4 -28
  297. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.controller.js.map +1 -1
  298. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.entity.d.ts +2 -0
  299. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.entity.js +9 -0
  300. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.entity.js.map +1 -1
  301. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.repository.d.ts +6 -4
  302. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.repository.js +33 -10
  303. package/lib-esm/lib/taon-cms-content-revision/taon-cms-content-revision.repository.js.map +1 -1
  304. package/lib-esm/lib/taon-cms-content-tag/index.d.ts +2 -1
  305. package/lib-esm/lib/taon-cms-content-tag/taon-cms-content-tag.abstract.context.d.ts +3 -3
  306. package/lib-esm/lib/taon-cms-content-tag/taon-cms-content-tag.controller.d.ts +1 -5
  307. package/lib-esm/lib/taon-cms-content-tag/taon-cms-content-tag.controller.js +4 -28
  308. package/lib-esm/lib/taon-cms-content-tag/taon-cms-content-tag.controller.js.map +1 -1
  309. package/lib-esm/lib/taon-cms-content-tag/taon-cms-content-tag.repository.d.ts +3 -4
  310. package/lib-esm/lib/taon-cms-content-tag/taon-cms-content-tag.repository.js +15 -11
  311. package/lib-esm/lib/taon-cms-content-tag/taon-cms-content-tag.repository.js.map +1 -1
  312. package/lib-esm/lib/taon-cms-tag/index.d.ts +2 -1
  313. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.abstract.context.d.ts +3 -3
  314. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.repository.d.ts +2 -0
  315. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.repository.js +13 -0
  316. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.repository.js.map +1 -1
  317. package/lib-esm/lib/taon-cms.abstract.context.d.ts +3 -3
  318. package/lib-esm/lib/taon-cms.abstract.context.js +2 -0
  319. package/lib-esm/lib/taon-cms.abstract.context.js.map +1 -1
  320. package/lib-esm/lib/taon-posts/taon-cms-post/index.d.ts +1 -0
  321. package/lib-esm/lib/taon-posts/taon-cms-post/index.js +2 -0
  322. package/lib-esm/lib/taon-posts/taon-cms-post/index.js.map +1 -0
  323. package/lib-esm/lib/taon-posts/taon-cms-post/taon-cms-post.models.d.ts +8 -0
  324. package/lib-esm/lib/taon-posts/taon-cms-post/taon-cms-post.models.js +2 -0
  325. package/lib-esm/lib/taon-posts/taon-cms-post/taon-cms-post.models.js.map +1 -0
  326. package/lib-esm/lib/taon-posts/taon-cms-post-edit-dialog/index.d.ts +1 -0
  327. package/lib-esm/lib/taon-posts/taon-cms-post-edit-dialog/index.js +2 -0
  328. package/lib-esm/lib/taon-posts/taon-cms-post-edit-dialog/index.js.map +1 -0
  329. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -0
  330. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.js +2 -0
  331. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.js.map +1 -0
  332. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.d.ts +1 -0
  333. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.js +2 -0
  334. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.js.map +1 -0
  335. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -0
  336. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.js +2 -0
  337. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.js.map +1 -0
  338. package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -0
  339. package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.js +2 -0
  340. package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.js.map +1 -0
  341. package/lib-prod/app.data.d.ts +22 -0
  342. package/lib-prod/app.data.js +20 -0
  343. package/lib-prod/app.data.js.map +1 -0
  344. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  345. package/lib-prod/build-info._auto-generated_.js +1 -1
  346. package/lib-prod/env/env.angular-node-app.d.ts +3 -0
  347. package/lib-prod/env/env.angular-node-app.js +6 -0
  348. package/lib-prod/env/env.angular-node-app.js.map +1 -1
  349. package/lib-prod/env/env.docs-webapp.d.ts +3 -0
  350. package/lib-prod/env/env.docs-webapp.js +6 -0
  351. package/lib-prod/env/env.docs-webapp.js.map +1 -1
  352. package/lib-prod/env/env.electron-app.d.ts +3 -0
  353. package/lib-prod/env/env.electron-app.js +6 -0
  354. package/lib-prod/env/env.electron-app.js.map +1 -1
  355. package/lib-prod/env/env.mobile-app.d.ts +3 -0
  356. package/lib-prod/env/env.mobile-app.js +6 -0
  357. package/lib-prod/env/env.mobile-app.js.map +1 -1
  358. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +3 -0
  359. package/lib-prod/env/env.npm-lib-and-cli-tool.js +6 -0
  360. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -1
  361. package/lib-prod/env/env.vscode-plugin.d.ts +3 -0
  362. package/lib-prod/env/env.vscode-plugin.js +6 -0
  363. package/lib-prod/env/env.vscode-plugin.js.map +1 -1
  364. package/lib-prod/index._auto-generated_.d.ts +5 -0
  365. package/lib-prod/index._auto-generated_.js +17 -0
  366. package/lib-prod/index._auto-generated_.js.map +1 -1
  367. package/lib-prod/index.d.ts +1 -0
  368. package/lib-prod/index.js +2 -0
  369. package/lib-prod/index.js.map +1 -1
  370. package/lib-prod/migrations/1791132517216_initial.d.ts +7 -0
  371. package/lib-prod/migrations/1791132517216_initial.js +65 -0
  372. package/lib-prod/migrations/1791132517216_initial.js.map +1 -0
  373. package/lib-prod/migrations/migrations_index._auto-generated_.d.ts +4 -0
  374. package/lib-prod/migrations/migrations_index._auto-generated_.js +4 -0
  375. package/lib-prod/migrations/migrations_index._auto-generated_.js.map +1 -1
  376. package/lib-prod/package.json +1 -1
  377. package/lib-prod/taon-cms-backoffice/index.d.ts +1 -1
  378. package/lib-prod/taon-cms-backoffice/index.js +1 -1
  379. package/lib-prod/taon-cms-category/taon-cms-category.controller.d.ts +1 -5
  380. package/lib-prod/taon-cms-category/taon-cms-category.controller.js +4 -28
  381. package/lib-prod/taon-cms-category/taon-cms-category.controller.js.map +1 -1
  382. package/lib-prod/taon-cms-category/taon-cms-category.repository.d.ts +2 -4
  383. package/lib-prod/taon-cms-category/taon-cms-category.repository.js +8 -11
  384. package/lib-prod/taon-cms-category/taon-cms-category.repository.js.map +1 -1
  385. package/lib-prod/taon-cms-content/index.d.ts +1 -0
  386. package/lib-prod/taon-cms-content/index.js +1 -0
  387. package/lib-prod/taon-cms-content/index.js.map +1 -1
  388. package/lib-prod/taon-cms-content/taon-cms-content-storage.controller.d.ts +7 -0
  389. package/lib-prod/taon-cms-content/taon-cms-content-storage.controller.js +32 -0
  390. package/lib-prod/taon-cms-content/taon-cms-content-storage.controller.js.map +1 -0
  391. package/lib-prod/taon-cms-content/taon-cms-content.abstract.context.js +16 -5
  392. package/lib-prod/taon-cms-content/taon-cms-content.abstract.context.js.map +1 -1
  393. package/lib-prod/taon-cms-content/taon-cms-content.constants.js +5 -0
  394. package/lib-prod/taon-cms-content/taon-cms-content.constants.js.map +1 -1
  395. package/lib-prod/taon-cms-content/taon-cms-content.controller.d.ts +12 -4
  396. package/lib-prod/taon-cms-content/taon-cms-content.controller.js +126 -22
  397. package/lib-prod/taon-cms-content/taon-cms-content.controller.js.map +1 -1
  398. package/lib-prod/taon-cms-content/taon-cms-content.entity.d.ts +8 -1
  399. package/lib-prod/taon-cms-content/taon-cms-content.entity.js +60 -4
  400. package/lib-prod/taon-cms-content/taon-cms-content.entity.js.map +1 -1
  401. package/lib-prod/taon-cms-content/taon-cms-content.models.d.ts +40 -0
  402. package/lib-prod/taon-cms-content/taon-cms-content.models.js +7 -0
  403. package/lib-prod/taon-cms-content/taon-cms-content.models.js.map +1 -1
  404. package/lib-prod/taon-cms-content/taon-cms-content.provider.js.map +1 -1
  405. package/lib-prod/taon-cms-content/taon-cms-content.repository.d.ts +27 -0
  406. package/lib-prod/taon-cms-content/taon-cms-content.repository.js +327 -1
  407. package/lib-prod/taon-cms-content/taon-cms-content.repository.js.map +1 -1
  408. package/lib-prod/taon-cms-content/taon-cms-content.validation.d.ts +9 -0
  409. package/lib-prod/taon-cms-content/taon-cms-content.validation.js +73 -0
  410. package/lib-prod/taon-cms-content/taon-cms-content.validation.js.map +1 -0
  411. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.controller.d.ts +1 -5
  412. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.controller.js +4 -28
  413. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.controller.js.map +1 -1
  414. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.entity.d.ts +2 -0
  415. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.entity.js +9 -0
  416. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.entity.js.map +1 -1
  417. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.repository.d.ts +6 -4
  418. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.repository.js +33 -10
  419. package/lib-prod/taon-cms-content-revision/taon-cms-content-revision.repository.js.map +1 -1
  420. package/lib-prod/taon-cms-content-tag/taon-cms-content-tag.controller.d.ts +1 -5
  421. package/lib-prod/taon-cms-content-tag/taon-cms-content-tag.controller.js +4 -28
  422. package/lib-prod/taon-cms-content-tag/taon-cms-content-tag.controller.js.map +1 -1
  423. package/lib-prod/taon-cms-content-tag/taon-cms-content-tag.repository.d.ts +3 -4
  424. package/lib-prod/taon-cms-content-tag/taon-cms-content-tag.repository.js +15 -11
  425. package/lib-prod/taon-cms-content-tag/taon-cms-content-tag.repository.js.map +1 -1
  426. package/lib-prod/taon-cms-tag/taon-cms-tag.repository.d.ts +2 -0
  427. package/lib-prod/taon-cms-tag/taon-cms-tag.repository.js +13 -0
  428. package/lib-prod/taon-cms-tag/taon-cms-tag.repository.js.map +1 -1
  429. package/lib-prod/taon-cms.abstract.context.js +2 -0
  430. package/lib-prod/taon-cms.abstract.context.js.map +1 -1
  431. package/lib-prod/taon-posts/taon-cms-post/index.d.ts +1 -0
  432. package/lib-prod/taon-posts/taon-cms-post/index.js +2 -0
  433. package/lib-prod/taon-posts/taon-cms-post/index.js.map +1 -0
  434. package/lib-prod/taon-posts/taon-cms-post/taon-cms-post.models.d.ts +8 -0
  435. package/lib-prod/taon-posts/taon-cms-post/taon-cms-post.models.js +2 -0
  436. package/lib-prod/taon-posts/taon-cms-post/taon-cms-post.models.js.map +1 -0
  437. package/lib-prod/taon-posts/taon-cms-post-edit-dialog/index.d.ts +1 -0
  438. package/lib-prod/taon-posts/taon-cms-post-edit-dialog/index.js +2 -0
  439. package/lib-prod/taon-posts/taon-cms-post-edit-dialog/index.js.map +1 -0
  440. package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -0
  441. package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.js +2 -0
  442. package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.js.map +1 -0
  443. package/lib-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.d.ts +0 -0
  444. package/lib-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.js +3 -0
  445. package/lib-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.js.map +1 -0
  446. package/lib-prod/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -0
  447. package/lib-prod/taon-posts/taon-cms-revision-chooser/index.js +2 -0
  448. package/lib-prod/taon-posts/taon-cms-revision-chooser/index.js.map +1 -0
  449. package/lib-prod/taon-posts/taon-related-post-chooser/index.d.ts +1 -0
  450. package/lib-prod/taon-posts/taon-related-post-chooser/index.js +2 -0
  451. package/lib-prod/taon-posts/taon-related-post-chooser/index.js.map +1 -0
  452. package/package.json +1 -1
  453. package/scss/app/baseline-backoffice/taon-baseline-backoffice.component.scss +3 -0
  454. package/scss/app/cms-example/cms-example.component.scss +3 -0
  455. package/scss/app/session-example/session-example.component.scss +3 -0
  456. package/scss/global.scss +4 -1
  457. package/scss/lib/taon-posts/taon-cms-post/taon-cms-post.component.scss +132 -0
  458. package/scss/lib/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.scss +19 -0
  459. package/scss/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.scss +3 -0
  460. package/scss/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.scss +15 -0
  461. package/scss/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.scss +25 -0
  462. package/websql/fesm2022/cms-websql.mjs +2992 -600
  463. package/websql/fesm2022/cms-websql.mjs.map +1 -1
  464. package/websql/package.json +1 -1
  465. package/websql/types/cms-websql.d.ts +439 -70
  466. package/websql-prod/fesm2022/cms-websql-prod.mjs +2995 -600
  467. package/websql-prod/fesm2022/cms-websql-prod.mjs.map +1 -1
  468. package/websql-prod/package.json +1 -1
  469. package/websql-prod/types/cms-websql-prod.d.ts +437 -70
  470. package/lib/taon-cms-backoffice/taon-cms-backoffice.component.d.ts +0 -2
  471. package/lib/taon-cms-backoffice/taon-cms-backoffice.routes.d.ts +0 -7
  472. package/lib/taon-cms-category/taon-cms-category-api.service.d.ts +0 -8
  473. package/lib/taon-cms-comment/taon-cms-comment-api.service.d.ts +0 -8
  474. package/lib/taon-cms-content/taon-cms-content-api.service.d.ts +0 -8
  475. package/lib/taon-cms-content-asset/taon-cms-content-asset-api.service.d.ts +0 -8
  476. package/lib/taon-cms-content-permission/taon-cms-content-permission-api.service.d.ts +0 -8
  477. package/lib/taon-cms-content-revision/taon-cms-content-revision-api.service.d.ts +0 -8
  478. package/lib/taon-cms-content-tag/taon-cms-content-tag-api.service.d.ts +0 -8
  479. package/lib/taon-cms-tag/taon-cms-tag-api.service.d.ts +0 -8
@@ -1,22 +1,114 @@
1
+ import { __decorate, __metadata, __param } from 'tslib';
2
+ import { TaonAuthContextRepository, TaonPermissionEntity, TaonSessionAbstractContext, TaonPermissionApiService } from '@taon-dev/session/websql';
3
+ import { TaonBaseMigration, TaonMigration, TaonBaseAbstractEntity, Column, TaonEntity, Taon, TaonBaseRepository, TaonRepository, TaonBaseCrudController, TaonController, TaonBaseProvider, TaonProvider, TaonBaseMiddleware, TaonMiddleware, TaonBaseSubscriberForEntity, TaonSubscriber, createContext, TaonBaseContext, TaonBaseEntity, PrimaryGeneratedColumn, ClassHelpers, GET, Query, ManyToMany, JoinTable, POST, Body, PUT, DELETE, TaonBaseStorageController, TaonBaseAngularService } from 'taon/websql';
1
4
  import { decodeEnv, UtilsJson } from 'tnp-core/websql';
2
5
  import { Translation } from '@taon-dev/i18n/websql';
3
6
  import { BaseCommandLineFeature } from 'tnp-helpers/websql';
4
- import { TaonBaseAbstractEntity, Column, TaonEntity, TaonBaseRepository, TaonRepository, TaonBaseCrudController, ClassHelpers, GET, Query, TaonController, TaonBaseProvider, TaonProvider, TaonBaseMiddleware, TaonMiddleware, TaonBaseSubscriberForEntity, TaonSubscriber, createContext, TaonBaseContext, TaonBaseEntity, PrimaryGeneratedColumn, TaonBaseAngularService } from 'taon/websql';
5
- import { __decorate, __metadata, __param } from 'tslib';
6
- import { Raw } from 'taon-typeorm/websql';
7
7
  import * as i0 from '@angular/core';
8
- import { Injectable, ChangeDetectionStrategy, Component } from '@angular/core';
9
- import { AsyncPipe } from '@angular/common';
10
- import { RouterOutlet } from '@angular/router';
8
+ import { Injectable, ChangeDetectionStrategy, Component, inject, ElementRef, EventEmitter, SecurityContext, HostListener, Input, Output, Directive, signal, DestroyRef, computed, input, model, output, effect, untracked, viewChild, ViewChild } from '@angular/core';
9
+ import { Raw, In } from 'taon-typeorm/websql';
10
+ import { MtxGrid } from '@ng-matero/extensions/grid';
11
+ import { AsyncPipe, DatePipe } from '@angular/common';
12
+ import { RouterOutlet, ActivatedRoute, RouterLink, Router } from '@angular/router';
13
+ import { adminLazyRoute, TaonConfirmDialogComponent, TaonDatatableComponent } from '@taon-dev/ui/websql';
11
14
  import { map } from 'rxjs/operators';
15
+ import { DomSanitizer } from '@angular/platform-browser';
16
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
17
+ import * as i1 from '@angular/material/button';
18
+ import { MatButtonModule } from '@angular/material/button';
19
+ import * as i2 from '@angular/material/dialog';
20
+ import { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule, MatDialog } from '@angular/material/dialog';
21
+ import * as i2$1 from '@angular/material/form-field';
22
+ import { MatFormFieldModule } from '@angular/material/form-field';
23
+ import * as i3$1 from '@angular/material/icon';
24
+ import { MatIconModule } from '@angular/material/icon';
25
+ import * as i3 from '@angular/material/radio';
26
+ import { MatRadioModule } from '@angular/material/radio';
27
+ import * as i5 from '@angular/material/select';
28
+ import { MatSelectModule } from '@angular/material/select';
29
+ import { finalize, map as map$1, Subject, takeUntil } from 'rxjs';
30
+
31
+ //#region Migration class for context "CmsContext"
32
+ let CmsContext_1791132517216_initial = class CmsContext_1791132517216_initial extends TaonBaseMigration {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.taonAuthContextRepository = this.injectCustomRepo((TaonAuthContextRepository));
36
+ //#endregion
37
+ }
38
+ //#region up
39
+ async up(queryRunner) {
40
+ await queryRunner.startTransaction();
41
+ try {
42
+ await this.taonAuthContextRepository.persistTree({
43
+ enums: {
44
+ groups: MyAppGroup,
45
+ roles: MyAppRole,
46
+ permissions: MyAppPermission,
47
+ },
48
+ tree: {
49
+ groupAndRoles: {
50
+ [MyAppGroup.Administrator]: '*',
51
+ [MyAppGroup.Customers]: [MyAppRole.BlogReader],
52
+ },
53
+ rolesAndPermissions: {
54
+ [MyAppRole.Customer]: [
55
+ MyAppPermission.AccessCourseP2,
56
+ MyAppPermission.AccessCourseP2,
57
+ ],
58
+ [MyAppRole.CustomerPremium]: '*',
59
+ },
60
+ },
61
+ });
62
+ await queryRunner.commitTransaction();
63
+ }
64
+ catch (error) {
65
+ console.error('Error in migration:', error);
66
+ await queryRunner.rollbackTransaction();
67
+ }
68
+ finally {
69
+ await queryRunner.release();
70
+ }
71
+ }
72
+ //#endregion
73
+ //#region down
74
+ async down(queryRunner) {
75
+ await queryRunner.startTransaction();
76
+ try {
77
+ await this.taonAuthContextRepository.clearRolesGroupPermissions();
78
+ await queryRunner.commitTransaction();
79
+ }
80
+ catch (error) {
81
+ console.error('Error in migration:', error);
82
+ await queryRunner.rollbackTransaction();
83
+ }
84
+ finally {
85
+ await queryRunner.release();
86
+ }
87
+ }
88
+ };
89
+ CmsContext_1791132517216_initial = __decorate([
90
+ TaonMigration({
91
+ className: 'CmsContext_1791132517216_initial',
92
+ })
93
+ ], CmsContext_1791132517216_initial);
94
+ //#endregion
12
95
 
13
96
  // THIS FILE IS GENERATED - DO NOT MODIFY
14
97
  // THIS FILE IS GENERATED - DO NOT MODIFY
98
+ const MIGRATIONS_CLASSES_FOR_CmsContext = {
99
+ /* 04-10-2026 18:48:37 */ CmsContext_1791132517216_initial,
100
+ };
15
101
  // THIS FILE IS GENERATED - DO NOT MODIFY
16
102
 
17
103
  //@ts-nocheck
18
104
 
19
105
  // THIS FILE IS GENERATED - DO NOT MODIFY
106
+ // config.superUsers
107
+ const ENV_ANGULAR_NODE_APP_CONFIG_SUPER_USERS = () => decodeEnv("dariusz@taon.dev");
108
+ // config.googleSecret
109
+ const ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_SECRET = () => decodeEnv("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");
110
+ // config.googleClientId
111
+ const ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';
20
112
  // loading.preAngularBootstrap.background
21
113
  const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';
22
114
  // loading.preAngularBootstrap.loader.name
@@ -156,6 +248,12 @@ const ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;
156
248
  // THIS FILE IS GENERATED - DO NOT MODIFY
157
249
 
158
250
  // THIS FILE IS GENERATED - DO NOT MODIFY
251
+ // config.superUsers
252
+ const ENV_DOCS_WEBAPP_CONFIG_SUPER_USERS = () => decodeEnv("dariusz@taon.dev");
253
+ // config.googleSecret
254
+ const ENV_DOCS_WEBAPP_CONFIG_GOOGLE_SECRET = () => decodeEnv("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");
255
+ // config.googleClientId
256
+ const ENV_DOCS_WEBAPP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';
159
257
  // loading.preAngularBootstrap.background
160
258
  const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';
161
259
  // loading.preAngularBootstrap.loader.name
@@ -295,6 +393,12 @@ const ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB = undefined;
295
393
  // THIS FILE IS GENERATED - DO NOT MODIFY
296
394
 
297
395
  // THIS FILE IS GENERATED - DO NOT MODIFY
396
+ // config.superUsers
397
+ const ENV_ELECTRON_APP_CONFIG_SUPER_USERS = () => decodeEnv("dariusz@taon.dev");
398
+ // config.googleSecret
399
+ const ENV_ELECTRON_APP_CONFIG_GOOGLE_SECRET = () => decodeEnv("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");
400
+ // config.googleClientId
401
+ const ENV_ELECTRON_APP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';
298
402
  // build.ssr
299
403
  const ENV_ELECTRON_APP_BUILD_SSR = false;
300
404
  // loading.preAngularBootstrap.background
@@ -434,6 +538,12 @@ const ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;
434
538
  // THIS FILE IS GENERATED - DO NOT MODIFY
435
539
 
436
540
  // THIS FILE IS GENERATED - DO NOT MODIFY
541
+ // config.superUsers
542
+ const ENV_MOBILE_APP_CONFIG_SUPER_USERS = () => decodeEnv("dariusz@taon.dev");
543
+ // config.googleSecret
544
+ const ENV_MOBILE_APP_CONFIG_GOOGLE_SECRET = () => decodeEnv("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");
545
+ // config.googleClientId
546
+ const ENV_MOBILE_APP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';
437
547
  // loading.preAngularBootstrap.background
438
548
  const ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';
439
549
  // loading.preAngularBootstrap.loader.name
@@ -573,6 +683,12 @@ const ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;
573
683
  // THIS FILE IS GENERATED - DO NOT MODIFY
574
684
 
575
685
  // THIS FILE IS GENERATED - DO NOT MODIFY
686
+ // config.superUsers
687
+ const ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_SUPER_USERS = () => decodeEnv("dariusz@taon.dev");
688
+ // config.googleSecret
689
+ const ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_SECRET = () => decodeEnv("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");
690
+ // config.googleClientId
691
+ const ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';
576
692
  // loading.preAngularBootstrap.background
577
693
  const ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';
578
694
  // loading.preAngularBootstrap.loader.name
@@ -712,6 +828,12 @@ const ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB = undefined;
712
828
  // THIS FILE IS GENERATED - DO NOT MODIFY
713
829
 
714
830
  // THIS FILE IS GENERATED - DO NOT MODIFY
831
+ // config.superUsers
832
+ const ENV_VSCODE_PLUGIN_CONFIG_SUPER_USERS = () => decodeEnv("dariusz@taon.dev");
833
+ // config.googleSecret
834
+ const ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_SECRET = () => decodeEnv("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");
835
+ // config.googleClientId
836
+ const ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';
715
837
  // loading.preAngularBootstrap.background
716
838
  const ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';
717
839
  // loading.preAngularBootstrap.loader.name
@@ -850,6 +972,26 @@ const ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER = undefined;
850
972
  const ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB = undefined;
851
973
  // THIS FILE IS GENERATED - DO NOT MODIFY
852
974
 
975
+ var MyAppGroup;
976
+ (function (MyAppGroup) {
977
+ MyAppGroup["Administrator"] = "administrator";
978
+ MyAppGroup["Customers"] = "customers";
979
+ })(MyAppGroup || (MyAppGroup = {}));
980
+ var MyAppRole;
981
+ (function (MyAppRole) {
982
+ MyAppRole["MangePosts"] = "manage-posts";
983
+ MyAppRole["Customer"] = "Customer";
984
+ MyAppRole["CustomerPremium"] = "CustomerPremium";
985
+ MyAppRole["BlogReader"] = "BlogReader";
986
+ })(MyAppRole || (MyAppRole = {}));
987
+ var MyAppPermission;
988
+ (function (MyAppPermission) {
989
+ MyAppPermission["AccessToAllEmails"] = "AccessToAllEmails";
990
+ MyAppPermission["AccessCourseP1"] = "AccessCourseP1";
991
+ MyAppPermission["AccessCourseP2"] = "AccessCourseP2";
992
+ MyAppPermission["AccessCoursePremium"] = "AccessCoursePremium";
993
+ })(MyAppPermission || (MyAppPermission = {}));
994
+
853
995
  // THIS FILE IS GENERATED - DO NOT MODIFY
854
996
  /**
855
997
  * Autogenerated by current cli tool
@@ -874,7 +1016,7 @@ const CURRENT_PACKAGE_TAON_VERSION = 'v21';
874
1016
  /**
875
1017
  * Autogenerated by current cli tool. Use *tnp release* to bump version.
876
1018
  */
877
- const CURRENT_PACKAGE_VERSION = '21.0.4';
1019
+ const CURRENT_PACKAGE_VERSION = '21.0.7';
878
1020
  // THIS FILE IS GENERATED - DO NOT MODIFY
879
1021
 
880
1022
  const t = Translation.for('src/lib/my-organization-proj.ts', { "src/lib/my-organization-proj.ts": { "en-US": async () => (await import('./cms-websql-my-organization-proj.ts.en-US.i18n.data-CoSik70Y.mjs')).default, "pl-PL": async () => (await import('./cms-websql-my-organization-proj.ts.pl-PL.i18n.data-BZPsT3Zk.mjs')).default } });
@@ -1011,23 +1153,104 @@ TaonCmsCategoryEntity = __decorate([
1011
1153
  })
1012
1154
  ], TaonCmsCategoryEntity);
1013
1155
 
1156
+ var TaonCmsContentType;
1157
+ (function (TaonCmsContentType) {
1158
+ TaonCmsContentType["Normal"] = "normal";
1159
+ TaonCmsContentType["Video"] = "video";
1160
+ TaonCmsContentType["Audio"] = "audio";
1161
+ TaonCmsContentType["Attachment"] = "attachment";
1162
+ })(TaonCmsContentType || (TaonCmsContentType = {}));
1163
+ var TaonCmsContentState;
1164
+ (function (TaonCmsContentState) {
1165
+ TaonCmsContentState["Active"] = "active";
1166
+ TaonCmsContentState["Inactive"] = "inactive";
1167
+ })(TaonCmsContentState || (TaonCmsContentState = {}));
1168
+
1169
+ function contentError(message, status = 400) {
1170
+ Taon.error({ message, status });
1171
+ throw new Error(message);
1172
+ }
1173
+ function requireContentId(value, name = 'contentId') {
1174
+ if (!Number.isSafeInteger(value) || value <= 0) {
1175
+ contentError(`${name} must be a positive integer.`);
1176
+ }
1177
+ }
1178
+ function requireContentVersion(value, name = 'expectedVersion') {
1179
+ if (!Number.isSafeInteger(value) || value < 0) {
1180
+ contentError(`${name} must be a non-negative integer.`);
1181
+ }
1182
+ }
1183
+ function validateContentInput(input, creating = false) {
1184
+ if (!input || typeof input !== 'object' || Array.isArray(input)) {
1185
+ contentError('Content must be an object.');
1186
+ }
1187
+ if (input.type !== undefined &&
1188
+ !Object.values(TaonCmsContentType).includes(input.type)) {
1189
+ contentError('type must be normal, video, audio, or attachment.');
1190
+ }
1191
+ for (const field of ['title', 'slug']) {
1192
+ if (creating || input[field] !== undefined) {
1193
+ if (typeof input[field] !== 'string' || !input[field].trim()) {
1194
+ contentError(`${field} must be a non-empty string.`);
1195
+ }
1196
+ }
1197
+ }
1198
+ for (const field of [
1199
+ 'body', 'excerpt', 'videoKey', 'audioKey', 'attachmentKey',
1200
+ ]) {
1201
+ if (input[field] !== undefined &&
1202
+ input[field] !== null &&
1203
+ typeof input[field] !== 'string') {
1204
+ contentError(`${field} must be a string or null.`);
1205
+ }
1206
+ }
1207
+ for (const field of ['categoryId', 'authorUserId']) {
1208
+ if (input[field] !== undefined && input[field] !== null) {
1209
+ requireContentId(input[field], field);
1210
+ }
1211
+ }
1212
+ if (input.status !== undefined &&
1213
+ !['draft', 'published', 'archived'].includes(input.status)) {
1214
+ contentError('status must be draft, published, or archived.');
1215
+ }
1216
+ if (input.publishedAt !== undefined && input.publishedAt !== null) {
1217
+ if (!(input.publishedAt instanceof Date ||
1218
+ typeof input.publishedAt === 'string') ||
1219
+ Number.isNaN(new Date(input.publishedAt).getTime())) {
1220
+ contentError('publishedAt must be a valid date or null.');
1221
+ }
1222
+ }
1223
+ for (const field of ['tagIds', 'relatedPostIds', 'permissionIds']) {
1224
+ const ids = input[field];
1225
+ if (ids !== undefined) {
1226
+ if (!Array.isArray(ids)) {
1227
+ contentError(`${field} must be an array.`);
1228
+ }
1229
+ for (const id of ids) {
1230
+ requireContentId(id, field === 'tagIds'
1231
+ ? 'tagId'
1232
+ : field === 'relatedPostIds'
1233
+ ? 'relatedPostId'
1234
+ : 'permissionId');
1235
+ }
1236
+ }
1237
+ }
1238
+ }
1239
+
1014
1240
  //#endregion
1015
1241
  let TaonCmsCategoryRepository = class TaonCmsCategoryRepository extends TaonBaseRepository {
1016
1242
  constructor() {
1017
1243
  super(...arguments);
1018
1244
  this.entityClassResolveFn = () => TaonCmsCategoryEntity;
1019
1245
  }
1020
- /**
1021
- * TODO remove this demo example method
1022
- */
1023
- async countEntitesWithEvenId() {
1246
+ async requireCategory(id, manager) {
1024
1247
  //#region @websqlFunc
1025
- const result = await this.count({
1026
- where: {
1027
- id: Raw(alias => `${alias} % 2 = 0`),
1028
- },
1029
- });
1030
- return result;
1248
+ const category = await manager
1249
+ .getRepository(this.target)
1250
+ .findOneBy({ id });
1251
+ if (!category) {
1252
+ contentError(`Category ${id} does not exist.`, 404);
1253
+ }
1031
1254
  //#endregion
1032
1255
  }
1033
1256
  };
@@ -1037,43 +1260,18 @@ TaonCmsCategoryRepository = __decorate([
1037
1260
  })
1038
1261
  ], TaonCmsCategoryRepository);
1039
1262
 
1040
- var TaonCmsCategoryController_1;
1041
1263
  //#endregion
1042
- let TaonCmsCategoryController = TaonCmsCategoryController_1 = class TaonCmsCategoryController extends TaonBaseCrudController {
1264
+ let TaonCmsCategoryController = class TaonCmsCategoryController extends TaonBaseCrudController {
1043
1265
  constructor() {
1044
1266
  super(...arguments);
1045
1267
  this.entityClassResolveFn = () => TaonCmsCategoryEntity;
1046
1268
  this.taonCmsCategoryRepository = this.injectCustomRepo(TaonCmsCategoryRepository);
1047
- //#endregion
1048
- }
1049
- //#region methods & getters / hello world
1050
- /**
1051
- * TODO remove this demo example method
1052
- */
1053
- helloWord(yourName) {
1054
- //#region @websqlFunc
1055
- return async (req, res) => {
1056
- const numOfEntities = await this.db.count();
1057
- const numberOfEvenEntities = await this.taonCmsCategoryRepository.countEntitesWithEvenId();
1058
- return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsCategoryController_1)}
1059
- controller.. ${numOfEntities} entites in db..
1060
- ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)
1061
- `;
1062
- };
1063
- //#endregion
1064
1269
  }
1065
1270
  };
1066
- __decorate([
1067
- GET(),
1068
- __param(0, Query('yourName')),
1069
- __metadata("design:type", Function),
1070
- __metadata("design:paramtypes", [String]),
1071
- __metadata("design:returntype", Object)
1072
- ], TaonCmsCategoryController.prototype, "helloWord", null);
1073
- TaonCmsCategoryController = TaonCmsCategoryController_1 = __decorate([
1271
+ TaonCmsCategoryController = __decorate([
1074
1272
  TaonController({
1075
1273
  className: 'TaonCmsCategoryController',
1076
- allowedMethods: []
1274
+ allowedMethods: [],
1077
1275
  })
1078
1276
  ], TaonCmsCategoryController);
1079
1277
 
@@ -1318,478 +1516,356 @@ const TaonCmsCommentAbstractContext = createContext(() => ({
1318
1516
  }));
1319
1517
 
1320
1518
  //#endregion
1321
- let TaonCmsContentEntity = class TaonCmsContentEntity extends TaonBaseEntity {
1519
+ let TaonCmsContentRevisionEntity = class TaonCmsContentRevisionEntity extends TaonBaseEntity {
1322
1520
  };
1323
1521
  __decorate([
1324
1522
  PrimaryGeneratedColumn()
1325
1523
  //#endregion
1326
1524
  ,
1327
1525
  __metadata("design:type", Number)
1328
- ], TaonCmsContentEntity.prototype, "id", void 0);
1526
+ ], TaonCmsContentRevisionEntity.prototype, "id", void 0);
1329
1527
  __decorate([
1330
1528
  Column({ type: 'integer', default: 0 })
1331
1529
  //#endregion
1332
1530
  ,
1333
1531
  __metadata("design:type", Number)
1334
- ], TaonCmsContentEntity.prototype, "version", void 0);
1335
- __decorate([
1336
- Column({ type: 'varchar' })
1337
- //#endregion
1338
- ,
1339
- __metadata("design:type", String)
1340
- ], TaonCmsContentEntity.prototype, "type", void 0);
1532
+ ], TaonCmsContentRevisionEntity.prototype, "version", void 0);
1341
1533
  __decorate([
1342
- Column({ type: 'varchar' })
1534
+ Column({ type: 'integer' })
1343
1535
  //#endregion
1344
1536
  ,
1345
- __metadata("design:type", String)
1346
- ], TaonCmsContentEntity.prototype, "title", void 0);
1537
+ __metadata("design:type", Number)
1538
+ ], TaonCmsContentRevisionEntity.prototype, "contentId", void 0);
1347
1539
  __decorate([
1348
- Column({ type: 'varchar', unique: true })
1540
+ Column({ type: 'integer' })
1349
1541
  //#endregion
1350
1542
  ,
1351
- __metadata("design:type", String)
1352
- ], TaonCmsContentEntity.prototype, "slug", void 0);
1543
+ __metadata("design:type", Number)
1544
+ ], TaonCmsContentRevisionEntity.prototype, "revisionNumber", void 0);
1353
1545
  __decorate([
1354
- Column({ type: 'text', nullable: true })
1546
+ Column({ type: 'varchar' })
1355
1547
  //#endregion
1356
1548
  ,
1357
1549
  __metadata("design:type", String)
1358
- ], TaonCmsContentEntity.prototype, "excerpt", void 0);
1550
+ ], TaonCmsContentRevisionEntity.prototype, "title", void 0);
1359
1551
  __decorate([
1360
1552
  Column({ type: 'text', nullable: true })
1361
1553
  //#endregion
1362
1554
  ,
1363
1555
  __metadata("design:type", String)
1364
- ], TaonCmsContentEntity.prototype, "body", void 0);
1556
+ ], TaonCmsContentRevisionEntity.prototype, "body", void 0);
1365
1557
  __decorate([
1366
- Column({ type: 'integer', nullable: true })
1558
+ Column({ type: 'simple-json', nullable: true })
1367
1559
  //#endregion
1368
1560
  ,
1369
- __metadata("design:type", Number)
1370
- ], TaonCmsContentEntity.prototype, "categoryId", void 0);
1561
+ __metadata("design:type", Object)
1562
+ ], TaonCmsContentRevisionEntity.prototype, "snapshot", void 0);
1371
1563
  __decorate([
1372
1564
  Column({ type: 'integer', nullable: true })
1373
1565
  //#endregion
1374
1566
  ,
1375
1567
  __metadata("design:type", Number)
1376
- ], TaonCmsContentEntity.prototype, "authorUserId", void 0);
1377
- __decorate([
1378
- Column({ type: 'varchar', default: 'draft' })
1379
- //#endregion
1380
- ,
1381
- __metadata("design:type", String)
1382
- ], TaonCmsContentEntity.prototype, "status", void 0);
1383
- __decorate([
1384
- Column({ type: 'datetime', nullable: true })
1385
- //#endregion
1386
- ,
1387
- __metadata("design:type", Date)
1388
- ], TaonCmsContentEntity.prototype, "publishedAt", void 0);
1389
- __decorate([
1390
- Column({ type: 'datetime' })
1391
- //#endregion
1392
- ,
1393
- __metadata("design:type", Date)
1394
- ], TaonCmsContentEntity.prototype, "createdAt", void 0);
1568
+ ], TaonCmsContentRevisionEntity.prototype, "createdByUserId", void 0);
1395
1569
  __decorate([
1396
1570
  Column({ type: 'datetime' })
1397
1571
  //#endregion
1398
1572
  ,
1399
1573
  __metadata("design:type", Date)
1400
- ], TaonCmsContentEntity.prototype, "updatedAt", void 0);
1401
- TaonCmsContentEntity = __decorate([
1574
+ ], TaonCmsContentRevisionEntity.prototype, "createdAt", void 0);
1575
+ TaonCmsContentRevisionEntity = __decorate([
1402
1576
  TaonEntity({
1403
- className: 'TaonCmsContentEntity',
1577
+ className: 'TaonCmsContentRevisionEntity',
1404
1578
  createTable: true,
1405
1579
  })
1406
- ], TaonCmsContentEntity);
1580
+ ], TaonCmsContentRevisionEntity);
1407
1581
 
1408
1582
  //#endregion
1409
- let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRepository {
1583
+ let TaonCmsContentRevisionRepository = class TaonCmsContentRevisionRepository extends TaonBaseRepository {
1410
1584
  constructor() {
1411
1585
  super(...arguments);
1412
- this.entityClassResolveFn = () => TaonCmsContentEntity;
1586
+ this.entityClassResolveFn = () => TaonCmsContentRevisionEntity;
1413
1587
  }
1414
- /**
1415
- * TODO remove this demo example method
1416
- */
1417
- async countEntitesWithEvenId() {
1588
+ async listForContent(contentId, manager) {
1418
1589
  //#region @websqlFunc
1419
- const result = await this.count({
1420
- where: {
1421
- id: Raw(alias => `${alias} % 2 = 0`),
1422
- },
1590
+ return manager
1591
+ .getRepository(this.target)
1592
+ .find({
1593
+ where: { contentId },
1594
+ order: { revisionNumber: 'DESC' },
1423
1595
  });
1424
- return result;
1596
+ //#endregion
1597
+ }
1598
+ async requireRevision(contentId, revisionNumber, manager) {
1599
+ //#region @websqlFunc
1600
+ const revision = await manager
1601
+ .getRepository(this.target)
1602
+ .findOneBy({ contentId, revisionNumber });
1603
+ if (!revision) {
1604
+ contentError(`Revision ${revisionNumber} of content ${contentId} does not exist.`, 404);
1605
+ }
1606
+ return revision;
1607
+ //#endregion
1608
+ }
1609
+ async recordContent(content, snapshot, manager) {
1610
+ //#region @websqlFunc
1611
+ const repository = manager.getRepository(this.target);
1612
+ return repository.save(repository.create({
1613
+ contentId: content.id,
1614
+ revisionNumber: content.version,
1615
+ version: 1,
1616
+ title: content.title,
1617
+ body: content.body,
1618
+ snapshot,
1619
+ createdByUserId: content.authorUserId,
1620
+ createdAt: new Date(),
1621
+ }));
1425
1622
  //#endregion
1426
1623
  }
1427
1624
  };
1428
- TaonCmsContentRepository = __decorate([
1625
+ TaonCmsContentRevisionRepository = __decorate([
1429
1626
  TaonRepository({
1430
- className: 'TaonCmsContentRepository',
1627
+ className: 'TaonCmsContentRevisionRepository',
1431
1628
  })
1432
- ], TaonCmsContentRepository);
1629
+ ], TaonCmsContentRevisionRepository);
1433
1630
 
1434
- var TaonCmsContentController_1;
1435
1631
  //#endregion
1436
- let TaonCmsContentController = TaonCmsContentController_1 = class TaonCmsContentController extends TaonBaseCrudController {
1632
+ let TaonCmsContentRevisionController = class TaonCmsContentRevisionController extends TaonBaseCrudController {
1437
1633
  constructor() {
1438
1634
  super(...arguments);
1439
- this.entityClassResolveFn = () => TaonCmsContentEntity;
1440
- this.taonCmsContentRepository = this.injectCustomRepo(TaonCmsContentRepository);
1441
- //#endregion
1442
- }
1443
- //#region methods & getters / hello world
1444
- /**
1445
- * TODO remove this demo example method
1446
- */
1447
- helloWord(yourName) {
1448
- //#region @websqlFunc
1449
- return async (req, res) => {
1450
- const numOfEntities = await this.db.count();
1451
- const numberOfEvenEntities = await this.taonCmsContentRepository.countEntitesWithEvenId();
1452
- return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsContentController_1)}
1453
- controller.. ${numOfEntities} entites in db..
1454
- ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)
1455
- `;
1456
- };
1457
- //#endregion
1635
+ this.entityClassResolveFn = () => TaonCmsContentRevisionEntity;
1636
+ this.taonCmsContentRevisionRepository = this.injectCustomRepo(TaonCmsContentRevisionRepository);
1458
1637
  }
1459
1638
  };
1460
- __decorate([
1461
- GET(),
1462
- __param(0, Query('yourName')),
1463
- __metadata("design:type", Function),
1464
- __metadata("design:paramtypes", [String]),
1465
- __metadata("design:returntype", Object)
1466
- ], TaonCmsContentController.prototype, "helloWord", null);
1467
- TaonCmsContentController = TaonCmsContentController_1 = __decorate([
1639
+ TaonCmsContentRevisionController = __decorate([
1468
1640
  TaonController({
1469
- className: 'TaonCmsContentController',
1641
+ className: 'TaonCmsContentRevisionController',
1470
1642
  allowedMethods: [],
1471
1643
  })
1472
- ], TaonCmsContentController);
1644
+ ], TaonCmsContentRevisionController);
1473
1645
 
1474
1646
  //#endregion
1475
- let TaonCmsContentProvider = class TaonCmsContentProvider extends TaonBaseProvider {
1476
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1477
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentProvider }); }
1647
+ let TaonCmsContentRevisionProvider = class TaonCmsContentRevisionProvider extends TaonBaseProvider {
1648
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1649
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionProvider }); }
1478
1650
  };
1479
- TaonCmsContentProvider = __decorate([
1651
+ TaonCmsContentRevisionProvider = __decorate([
1480
1652
  TaonProvider({
1481
- className: 'TaonCmsContentProvider',
1653
+ className: 'TaonCmsContentRevisionProvider',
1482
1654
  })
1483
1655
  //#region @browser
1484
- ], TaonCmsContentProvider);
1485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentProvider, decorators: [{
1656
+ ], TaonCmsContentRevisionProvider);
1657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionProvider, decorators: [{
1486
1658
  type: Injectable
1487
1659
  }] });
1488
1660
 
1489
1661
  //#endregion
1490
- let TaonCmsContentMiddleware = class TaonCmsContentMiddleware extends TaonBaseMiddleware {
1662
+ let TaonCmsContentRevisionMiddleware = class TaonCmsContentRevisionMiddleware extends TaonBaseMiddleware {
1491
1663
  };
1492
- TaonCmsContentMiddleware = __decorate([
1664
+ TaonCmsContentRevisionMiddleware = __decorate([
1493
1665
  TaonMiddleware({
1494
- className: 'TaonCmsContentMiddleware',
1666
+ className: 'TaonCmsContentRevisionMiddleware',
1495
1667
  })
1496
- ], TaonCmsContentMiddleware);
1668
+ ], TaonCmsContentRevisionMiddleware);
1497
1669
 
1498
1670
  //#endregion
1499
- let TaonCmsContentSubscriber = class TaonCmsContentSubscriber extends TaonBaseSubscriberForEntity {
1671
+ let TaonCmsContentRevisionSubscriber = class TaonCmsContentRevisionSubscriber extends TaonBaseSubscriberForEntity {
1500
1672
  constructor() {
1501
1673
  super(...arguments);
1502
- this.taonCmsContentProvider = this.injectProvider(TaonCmsContentProvider);
1674
+ this.taonCmsContentRevisionProvider = this.injectProvider(TaonCmsContentRevisionProvider);
1503
1675
  }
1504
1676
  listenTo() {
1505
- return TaonCmsContentEntity;
1677
+ return TaonCmsContentRevisionEntity;
1506
1678
  }
1507
1679
  };
1508
- TaonCmsContentSubscriber = __decorate([
1680
+ TaonCmsContentRevisionSubscriber = __decorate([
1509
1681
  TaonSubscriber({
1510
- className: 'TaonCmsContentSubscriber',
1682
+ className: 'TaonCmsContentRevisionSubscriber',
1511
1683
  // allowedEvents: ['afterUpdate'],
1512
1684
  })
1513
- ], TaonCmsContentSubscriber);
1685
+ ], TaonCmsContentRevisionSubscriber);
1514
1686
 
1515
1687
  //#region imports
1516
1688
  //#endregion
1517
- const TaonCmsContentAbstractContext = createContext(() => ({
1518
- contextName: 'TaonCmsContentAbstractContext',
1689
+ const TaonCmsContentRevisionAbstractContext = createContext(() => ({
1690
+ contextName: 'TaonCmsContentRevisionAbstractContext',
1519
1691
  abstract: true,
1520
1692
  contexts: { TaonBaseContext },
1521
- entities: { TaonCmsContentEntity },
1522
- controllers: { TaonCmsContentController },
1523
- repositories: { TaonCmsContentRepository },
1524
- providers: { TaonCmsContentProvider },
1525
- middlewares: { TaonCmsContentMiddleware },
1526
- subscribers: { TaonCmsContentSubscriber },
1693
+ entities: { TaonCmsContentRevisionEntity },
1694
+ controllers: { TaonCmsContentRevisionController },
1695
+ repositories: { TaonCmsContentRevisionRepository },
1696
+ providers: { TaonCmsContentRevisionProvider },
1697
+ middlewares: { TaonCmsContentRevisionMiddleware },
1698
+ subscribers: { TaonCmsContentRevisionSubscriber },
1527
1699
  }));
1528
1700
 
1529
1701
  //#endregion
1530
- let TaonCmsContentAssetEntity = class TaonCmsContentAssetEntity extends TaonBaseEntity {
1702
+ let TaonCmsContentTagEntity = class TaonCmsContentTagEntity extends TaonBaseAbstractEntity {
1531
1703
  };
1532
1704
  __decorate([
1533
- PrimaryGeneratedColumn()
1534
- //#endregion
1535
- ,
1536
- __metadata("design:type", Number)
1537
- ], TaonCmsContentAssetEntity.prototype, "id", void 0);
1538
- __decorate([
1539
- Column({ type: 'integer', default: 0 })
1705
+ Column({ type: 'integer' })
1540
1706
  //#endregion
1541
1707
  ,
1542
1708
  __metadata("design:type", Number)
1543
- ], TaonCmsContentAssetEntity.prototype, "version", void 0);
1709
+ ], TaonCmsContentTagEntity.prototype, "contentId", void 0);
1544
1710
  __decorate([
1545
- Column({ type: 'integer', nullable: true })
1711
+ Column({ type: 'integer' })
1546
1712
  //#endregion
1547
1713
  ,
1548
1714
  __metadata("design:type", Number)
1549
- ], TaonCmsContentAssetEntity.prototype, "contentId", void 0);
1550
- __decorate([
1551
- Column({ type: 'varchar' })
1552
- //#endregion
1553
- ,
1554
- __metadata("design:type", String)
1555
- ], TaonCmsContentAssetEntity.prototype, "type", void 0);
1556
- __decorate([
1557
- Column({ type: 'varchar' })
1558
- //#endregion
1559
- ,
1560
- __metadata("design:type", String)
1561
- ], TaonCmsContentAssetEntity.prototype, "storageProvider", void 0);
1562
- __decorate([
1563
- Column({ type: 'varchar', nullable: true })
1564
- //#endregion
1565
- ,
1566
- __metadata("design:type", String)
1567
- ], TaonCmsContentAssetEntity.prototype, "bucket", void 0);
1568
- __decorate([
1569
- Column({ type: 'varchar' })
1570
- //#endregion
1571
- ,
1572
- __metadata("design:type", String)
1573
- ], TaonCmsContentAssetEntity.prototype, "key", void 0);
1574
- __decorate([
1575
- Column({ type: 'varchar', nullable: true })
1576
- //#endregion
1577
- ,
1578
- __metadata("design:type", String)
1579
- ], TaonCmsContentAssetEntity.prototype, "originalFilename", void 0);
1580
- __decorate([
1581
- Column({ type: 'varchar', nullable: true })
1582
- //#endregion
1583
- ,
1584
- __metadata("design:type", String)
1585
- ], TaonCmsContentAssetEntity.prototype, "mimeType", void 0);
1586
- __decorate([
1587
- Column({ type: 'integer', nullable: true })
1588
- //#endregion
1589
- ,
1590
- __metadata("design:type", Number)
1591
- ], TaonCmsContentAssetEntity.prototype, "size", void 0);
1592
- __decorate([
1593
- Column({ type: 'integer', nullable: true })
1594
- //#endregion
1595
- ,
1596
- __metadata("design:type", Number)
1597
- ], TaonCmsContentAssetEntity.prototype, "durationSeconds", void 0);
1598
- __decorate([
1599
- Column({ type: 'simple-json', nullable: true })
1600
- //#endregion
1601
- ,
1602
- __metadata("design:type", Object)
1603
- ], TaonCmsContentAssetEntity.prototype, "metadata", void 0);
1604
- __decorate([
1605
- Column({ type: 'datetime' })
1606
- //#endregion
1607
- ,
1608
- __metadata("design:type", Date)
1609
- ], TaonCmsContentAssetEntity.prototype, "createdAt", void 0);
1610
- TaonCmsContentAssetEntity = __decorate([
1715
+ ], TaonCmsContentTagEntity.prototype, "tagId", void 0);
1716
+ TaonCmsContentTagEntity = __decorate([
1611
1717
  TaonEntity({
1612
- className: 'TaonCmsContentAssetEntity',
1718
+ className: 'TaonCmsContentTagEntity',
1613
1719
  createTable: true,
1614
1720
  })
1615
- ], TaonCmsContentAssetEntity);
1721
+ ], TaonCmsContentTagEntity);
1616
1722
 
1617
1723
  //#endregion
1618
- let TaonCmsContentAssetRepository = class TaonCmsContentAssetRepository extends TaonBaseRepository {
1724
+ let TaonCmsContentTagRepository = class TaonCmsContentTagRepository extends TaonBaseRepository {
1619
1725
  constructor() {
1620
1726
  super(...arguments);
1621
- this.entityClassResolveFn = () => TaonCmsContentAssetEntity;
1727
+ this.entityClassResolveFn = () => TaonCmsContentTagEntity;
1622
1728
  }
1623
- /**
1624
- * TODO remove this demo example method
1625
- */
1626
- async countEntitesWithEvenId() {
1729
+ async findTagIds(contentId, manager) {
1627
1730
  //#region @websqlFunc
1628
- const result = await this.count({
1629
- where: {
1630
- id: Raw(alias => `${alias} % 2 = 0`),
1631
- },
1632
- });
1633
- return result;
1731
+ const links = await manager
1732
+ .getRepository(this.target)
1733
+ .find({ where: { contentId }, order: { tagId: 'ASC' } });
1734
+ return links.map(link => link.tagId);
1735
+ //#endregion
1736
+ }
1737
+ async replaceTags(contentId, tagIds, manager) {
1738
+ //#region @websqlFunc
1739
+ const repository = manager.getRepository(this.target);
1740
+ await repository.delete({ contentId });
1741
+ const links = [...new Set(tagIds)].map(tagId => repository.create({ contentId, tagId }));
1742
+ if (links.length) {
1743
+ await repository.save(links);
1744
+ }
1634
1745
  //#endregion
1635
1746
  }
1636
1747
  };
1637
- TaonCmsContentAssetRepository = __decorate([
1748
+ TaonCmsContentTagRepository = __decorate([
1638
1749
  TaonRepository({
1639
- className: 'TaonCmsContentAssetRepository',
1750
+ className: 'TaonCmsContentTagRepository',
1640
1751
  })
1641
- ], TaonCmsContentAssetRepository);
1752
+ ], TaonCmsContentTagRepository);
1642
1753
 
1643
- var TaonCmsContentAssetController_1;
1644
1754
  //#endregion
1645
- let TaonCmsContentAssetController = TaonCmsContentAssetController_1 = class TaonCmsContentAssetController extends TaonBaseCrudController {
1755
+ let TaonCmsContentTagController = class TaonCmsContentTagController extends TaonBaseCrudController {
1646
1756
  constructor() {
1647
1757
  super(...arguments);
1648
- this.entityClassResolveFn = () => TaonCmsContentAssetEntity;
1649
- this.taonCmsContentAssetRepository = this.injectCustomRepo(TaonCmsContentAssetRepository);
1650
- //#endregion
1651
- }
1652
- //#region methods & getters / hello world
1653
- /**
1654
- * TODO remove this demo example method
1655
- */
1656
- helloWord(yourName) {
1657
- //#region @websqlFunc
1658
- return async (req, res) => {
1659
- const numOfEntities = await this.db.count();
1660
- const numberOfEvenEntities = await this.taonCmsContentAssetRepository.countEntitesWithEvenId();
1661
- return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsContentAssetController_1)}
1662
- controller.. ${numOfEntities} entites in db..
1663
- ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)
1664
- `;
1665
- };
1666
- //#endregion
1758
+ this.entityClassResolveFn = () => TaonCmsContentTagEntity;
1759
+ this.taonCmsContentTagRepository = this.injectCustomRepo(TaonCmsContentTagRepository);
1667
1760
  }
1668
1761
  };
1669
- __decorate([
1670
- GET(),
1671
- __param(0, Query('yourName')),
1672
- __metadata("design:type", Function),
1673
- __metadata("design:paramtypes", [String]),
1674
- __metadata("design:returntype", Object)
1675
- ], TaonCmsContentAssetController.prototype, "helloWord", null);
1676
- TaonCmsContentAssetController = TaonCmsContentAssetController_1 = __decorate([
1762
+ TaonCmsContentTagController = __decorate([
1677
1763
  TaonController({
1678
- className: 'TaonCmsContentAssetController',
1679
- allowedMethods: []
1764
+ className: 'TaonCmsContentTagController',
1765
+ allowedMethods: [],
1680
1766
  })
1681
- ], TaonCmsContentAssetController);
1767
+ ], TaonCmsContentTagController);
1682
1768
 
1683
1769
  //#endregion
1684
- let TaonCmsContentAssetProvider = class TaonCmsContentAssetProvider extends TaonBaseProvider {
1685
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentAssetProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1686
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentAssetProvider }); }
1770
+ let TaonCmsContentTagProvider = class TaonCmsContentTagProvider extends TaonBaseProvider {
1771
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1772
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagProvider }); }
1687
1773
  };
1688
- TaonCmsContentAssetProvider = __decorate([
1774
+ TaonCmsContentTagProvider = __decorate([
1689
1775
  TaonProvider({
1690
- className: 'TaonCmsContentAssetProvider',
1776
+ className: 'TaonCmsContentTagProvider',
1691
1777
  })
1692
1778
  //#region @browser
1693
- ], TaonCmsContentAssetProvider);
1694
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentAssetProvider, decorators: [{
1779
+ ], TaonCmsContentTagProvider);
1780
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagProvider, decorators: [{
1695
1781
  type: Injectable
1696
1782
  }] });
1697
1783
 
1698
1784
  //#endregion
1699
- let TaonCmsContentAssetMiddleware = class TaonCmsContentAssetMiddleware extends TaonBaseMiddleware {
1785
+ let TaonCmsContentTagMiddleware = class TaonCmsContentTagMiddleware extends TaonBaseMiddleware {
1700
1786
  };
1701
- TaonCmsContentAssetMiddleware = __decorate([
1787
+ TaonCmsContentTagMiddleware = __decorate([
1702
1788
  TaonMiddleware({
1703
- className: 'TaonCmsContentAssetMiddleware',
1789
+ className: 'TaonCmsContentTagMiddleware',
1704
1790
  })
1705
- ], TaonCmsContentAssetMiddleware);
1791
+ ], TaonCmsContentTagMiddleware);
1706
1792
 
1707
1793
  //#endregion
1708
- let TaonCmsContentAssetSubscriber = class TaonCmsContentAssetSubscriber extends TaonBaseSubscriberForEntity {
1794
+ let TaonCmsContentTagSubscriber = class TaonCmsContentTagSubscriber extends TaonBaseSubscriberForEntity {
1709
1795
  constructor() {
1710
1796
  super(...arguments);
1711
- this.taonCmsContentAssetProvider = this.injectProvider(TaonCmsContentAssetProvider);
1797
+ this.taonCmsContentTagProvider = this.injectProvider(TaonCmsContentTagProvider);
1712
1798
  }
1713
1799
  listenTo() {
1714
- return TaonCmsContentAssetEntity;
1800
+ return TaonCmsContentTagEntity;
1715
1801
  }
1716
1802
  };
1717
- TaonCmsContentAssetSubscriber = __decorate([
1803
+ TaonCmsContentTagSubscriber = __decorate([
1718
1804
  TaonSubscriber({
1719
- className: 'TaonCmsContentAssetSubscriber',
1805
+ className: 'TaonCmsContentTagSubscriber',
1720
1806
  // allowedEvents: ['afterUpdate'],
1721
1807
  })
1722
- ], TaonCmsContentAssetSubscriber);
1808
+ ], TaonCmsContentTagSubscriber);
1723
1809
 
1724
1810
  //#region imports
1725
1811
  //#endregion
1726
- const TaonCmsContentAssetAbstractContext = createContext(() => ({
1727
- contextName: 'TaonCmsContentAssetAbstractContext',
1812
+ const TaonCmsContentTagAbstractContext = createContext(() => ({
1813
+ contextName: 'TaonCmsContentTagAbstractContext',
1728
1814
  abstract: true,
1729
1815
  contexts: { TaonBaseContext },
1730
- entities: { TaonCmsContentAssetEntity },
1731
- controllers: { TaonCmsContentAssetController },
1732
- repositories: { TaonCmsContentAssetRepository },
1733
- providers: { TaonCmsContentAssetProvider },
1734
- middlewares: { TaonCmsContentAssetMiddleware },
1735
- subscribers: { TaonCmsContentAssetSubscriber },
1816
+ entities: { TaonCmsContentTagEntity },
1817
+ controllers: { TaonCmsContentTagController },
1818
+ repositories: { TaonCmsContentTagRepository },
1819
+ providers: { TaonCmsContentTagProvider },
1820
+ middlewares: { TaonCmsContentTagMiddleware },
1821
+ subscribers: { TaonCmsContentTagSubscriber },
1736
1822
  }));
1737
1823
 
1738
1824
  //#endregion
1739
- let TaonCmsContentPermissionEntity = class TaonCmsContentPermissionEntity extends TaonBaseEntity {
1825
+ let TaonCmsTagEntity = class TaonCmsTagEntity extends TaonBaseAbstractEntity {
1740
1826
  };
1741
1827
  __decorate([
1742
- PrimaryGeneratedColumn(),
1743
- __metadata("design:type", Number)
1744
- ], TaonCmsContentPermissionEntity.prototype, "id", void 0);
1745
- __decorate([
1746
- Column({ type: 'integer', default: 0 }),
1747
- __metadata("design:type", Number)
1748
- ], TaonCmsContentPermissionEntity.prototype, "version", void 0);
1749
- __decorate([
1750
- Column({ type: 'integer' }),
1751
- __metadata("design:type", Number)
1752
- ], TaonCmsContentPermissionEntity.prototype, "contentId", void 0);
1753
- __decorate([
1754
- Column({ type: 'varchar' }),
1828
+ Column({ type: 'varchar', unique: true })
1829
+ //#endregion
1830
+ ,
1755
1831
  __metadata("design:type", String)
1756
- ], TaonCmsContentPermissionEntity.prototype, "type", void 0);
1757
- __decorate([
1758
- Column({ type: 'integer', nullable: true }),
1759
- __metadata("design:type", Number)
1760
- ], TaonCmsContentPermissionEntity.prototype, "permissionId", void 0);
1761
- __decorate([
1762
- Column({ type: 'integer', nullable: true }),
1763
- __metadata("design:type", Number)
1764
- ], TaonCmsContentPermissionEntity.prototype, "roleId", void 0);
1765
- __decorate([
1766
- Column({ type: 'integer', nullable: true }),
1767
- __metadata("design:type", Number)
1768
- ], TaonCmsContentPermissionEntity.prototype, "productId", void 0);
1832
+ ], TaonCmsTagEntity.prototype, "name", void 0);
1769
1833
  __decorate([
1770
- Column({ type: 'varchar', nullable: true }),
1834
+ Column({ type: 'varchar', unique: true })
1835
+ //#endregion
1836
+ ,
1771
1837
  __metadata("design:type", String)
1772
- ], TaonCmsContentPermissionEntity.prototype, "stripePriceId", void 0);
1773
- __decorate([
1774
- Column({ type: 'simple-json', nullable: true }),
1775
- __metadata("design:type", Object)
1776
- ], TaonCmsContentPermissionEntity.prototype, "config", void 0);
1838
+ ], TaonCmsTagEntity.prototype, "slug", void 0);
1777
1839
  __decorate([
1778
- Column({ type: 'datetime' }),
1779
- __metadata("design:type", Date)
1780
- ], TaonCmsContentPermissionEntity.prototype, "createdAt", void 0);
1781
- TaonCmsContentPermissionEntity = __decorate([
1840
+ Column({ type: 'varchar', nullable: true })
1841
+ //#endregion
1842
+ ,
1843
+ __metadata("design:type", String)
1844
+ ], TaonCmsTagEntity.prototype, "description", void 0);
1845
+ TaonCmsTagEntity = __decorate([
1782
1846
  TaonEntity({
1783
- className: 'TaonCmsContentPermissionEntity',
1847
+ className: 'TaonCmsTagEntity',
1784
1848
  createTable: true,
1785
1849
  })
1786
- ], TaonCmsContentPermissionEntity);
1850
+ ], TaonCmsTagEntity);
1787
1851
 
1788
1852
  //#endregion
1789
- let TaonCmsContentPermissionRepository = class TaonCmsContentPermissionRepository extends TaonBaseRepository {
1853
+ let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository {
1790
1854
  constructor() {
1791
1855
  super(...arguments);
1792
- this.entityClassResolveFn = () => TaonCmsContentPermissionEntity;
1856
+ this.entityClassResolveFn = () => TaonCmsTagEntity;
1857
+ }
1858
+ async requireTags(ids, manager) {
1859
+ //#region @websqlFunc
1860
+ for (const id of new Set(ids)) {
1861
+ const tag = await manager
1862
+ .getRepository(this.target)
1863
+ .findOneBy({ id });
1864
+ if (!tag) {
1865
+ contentError(`Tag ${id} does not exist.`, 404);
1866
+ }
1867
+ }
1868
+ //#endregion
1793
1869
  }
1794
1870
  /**
1795
1871
  * TODO remove this demo example method
@@ -1805,19 +1881,19 @@ let TaonCmsContentPermissionRepository = class TaonCmsContentPermissionRepositor
1805
1881
  //#endregion
1806
1882
  }
1807
1883
  };
1808
- TaonCmsContentPermissionRepository = __decorate([
1884
+ TaonCmsTagRepository = __decorate([
1809
1885
  TaonRepository({
1810
- className: 'TaonCmsContentPermissionRepository',
1886
+ className: 'TaonCmsTagRepository',
1811
1887
  })
1812
- ], TaonCmsContentPermissionRepository);
1888
+ ], TaonCmsTagRepository);
1813
1889
 
1814
- var TaonCmsContentPermissionController_1;
1890
+ var TaonCmsTagController_1;
1815
1891
  //#endregion
1816
- let TaonCmsContentPermissionController = TaonCmsContentPermissionController_1 = class TaonCmsContentPermissionController extends TaonBaseCrudController {
1892
+ let TaonCmsTagController = TaonCmsTagController_1 = class TaonCmsTagController extends TaonBaseCrudController {
1817
1893
  constructor() {
1818
1894
  super(...arguments);
1819
- this.entityClassResolveFn = () => TaonCmsContentPermissionEntity;
1820
- this.taonCmsContentPermissionRepository = this.injectCustomRepo(TaonCmsContentPermissionRepository);
1895
+ this.entityClassResolveFn = () => TaonCmsTagEntity;
1896
+ this.taonCmsTagRepository = this.injectCustomRepo(TaonCmsTagRepository);
1821
1897
  //#endregion
1822
1898
  }
1823
1899
  //#region methods & getters / hello world
@@ -1828,8 +1904,8 @@ let TaonCmsContentPermissionController = TaonCmsContentPermissionController_1 =
1828
1904
  //#region @websqlFunc
1829
1905
  return async (req, res) => {
1830
1906
  const numOfEntities = await this.db.count();
1831
- const numberOfEvenEntities = await this.taonCmsContentPermissionRepository.countEntitesWithEvenId();
1832
- return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsContentPermissionController_1)}
1907
+ const numberOfEvenEntities = await this.taonCmsTagRepository.countEntitesWithEvenId();
1908
+ return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsTagController_1)}
1833
1909
  controller.. ${numOfEntities} entites in db..
1834
1910
  ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)
1835
1911
  `;
@@ -1843,132 +1919,532 @@ __decorate([
1843
1919
  __metadata("design:type", Function),
1844
1920
  __metadata("design:paramtypes", [String]),
1845
1921
  __metadata("design:returntype", Object)
1846
- ], TaonCmsContentPermissionController.prototype, "helloWord", null);
1847
- TaonCmsContentPermissionController = TaonCmsContentPermissionController_1 = __decorate([
1922
+ ], TaonCmsTagController.prototype, "helloWord", null);
1923
+ TaonCmsTagController = TaonCmsTagController_1 = __decorate([
1848
1924
  TaonController({
1849
- className: 'TaonCmsContentPermissionController',
1925
+ className: 'TaonCmsTagController',
1850
1926
  allowedMethods: []
1851
1927
  })
1852
- ], TaonCmsContentPermissionController);
1928
+ ], TaonCmsTagController);
1853
1929
 
1854
1930
  //#endregion
1855
- let TaonCmsContentPermissionProvider = class TaonCmsContentPermissionProvider extends TaonBaseProvider {
1856
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentPermissionProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1857
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentPermissionProvider }); }
1931
+ let TaonCmsTagProvider = class TaonCmsTagProvider extends TaonBaseProvider {
1932
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1933
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagProvider }); }
1858
1934
  };
1859
- TaonCmsContentPermissionProvider = __decorate([
1935
+ TaonCmsTagProvider = __decorate([
1860
1936
  TaonProvider({
1861
- className: 'TaonCmsContentPermissionProvider',
1937
+ className: 'TaonCmsTagProvider',
1862
1938
  })
1863
1939
  //#region @browser
1864
- ], TaonCmsContentPermissionProvider);
1865
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentPermissionProvider, decorators: [{
1940
+ ], TaonCmsTagProvider);
1941
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagProvider, decorators: [{
1866
1942
  type: Injectable
1867
1943
  }] });
1868
1944
 
1869
1945
  //#endregion
1870
- let TaonCmsContentPermissionMiddleware = class TaonCmsContentPermissionMiddleware extends TaonBaseMiddleware {
1946
+ let TaonCmsTagMiddleware = class TaonCmsTagMiddleware extends TaonBaseMiddleware {
1871
1947
  };
1872
- TaonCmsContentPermissionMiddleware = __decorate([
1948
+ TaonCmsTagMiddleware = __decorate([
1873
1949
  TaonMiddleware({
1874
- className: 'TaonCmsContentPermissionMiddleware',
1950
+ className: 'TaonCmsTagMiddleware',
1875
1951
  })
1876
- ], TaonCmsContentPermissionMiddleware);
1952
+ ], TaonCmsTagMiddleware);
1877
1953
 
1878
1954
  //#endregion
1879
- let TaonCmsContentPermissionSubscriber = class TaonCmsContentPermissionSubscriber extends TaonBaseSubscriberForEntity {
1955
+ let TaonCmsTagSubscriber = class TaonCmsTagSubscriber extends TaonBaseSubscriberForEntity {
1880
1956
  constructor() {
1881
1957
  super(...arguments);
1882
- this.taonCmsContentPermissionProvider = this.injectProvider(TaonCmsContentPermissionProvider);
1958
+ this.taonCmsTagProvider = this.injectProvider(TaonCmsTagProvider);
1883
1959
  }
1884
1960
  listenTo() {
1885
- return TaonCmsContentPermissionEntity;
1961
+ return TaonCmsTagEntity;
1886
1962
  }
1887
1963
  };
1888
- TaonCmsContentPermissionSubscriber = __decorate([
1964
+ TaonCmsTagSubscriber = __decorate([
1889
1965
  TaonSubscriber({
1890
- className: 'TaonCmsContentPermissionSubscriber',
1966
+ className: 'TaonCmsTagSubscriber',
1891
1967
  // allowedEvents: ['afterUpdate'],
1892
1968
  })
1893
- ], TaonCmsContentPermissionSubscriber);
1969
+ ], TaonCmsTagSubscriber);
1894
1970
 
1895
1971
  //#region imports
1896
1972
  //#endregion
1897
- const TaonCmsContentPermissionAbstractContext = createContext(() => ({
1898
- contextName: 'TaonCmsContentPermissionAbstractContext',
1973
+ const TaonCmsTagAbstractContext = createContext(() => ({
1974
+ contextName: 'TaonCmsTagAbstractContext',
1899
1975
  abstract: true,
1900
1976
  contexts: { TaonBaseContext },
1901
- entities: { TaonCmsContentPermissionEntity },
1902
- controllers: { TaonCmsContentPermissionController },
1903
- repositories: { TaonCmsContentPermissionRepository },
1904
- providers: { TaonCmsContentPermissionProvider },
1905
- middlewares: { TaonCmsContentPermissionMiddleware },
1906
- subscribers: { TaonCmsContentPermissionSubscriber },
1977
+ entities: { TaonCmsTagEntity },
1978
+ controllers: { TaonCmsTagController },
1979
+ repositories: { TaonCmsTagRepository },
1980
+ providers: { TaonCmsTagProvider },
1981
+ middlewares: { TaonCmsTagMiddleware },
1982
+ subscribers: { TaonCmsTagSubscriber },
1907
1983
  }));
1908
1984
 
1909
1985
  //#endregion
1910
- let TaonCmsContentRevisionEntity = class TaonCmsContentRevisionEntity extends TaonBaseEntity {
1986
+ let TaonCmsContentEntity = class TaonCmsContentEntity extends TaonBaseEntity {
1987
+ constructor() {
1988
+ super(...arguments);
1989
+ //#region @websql
1990
+ this.type = TaonCmsContentType.Normal;
1991
+ //#region @websql
1992
+ this.videoKey = null;
1993
+ //#region @websql
1994
+ this.audioKey = null;
1995
+ //#region @websql
1996
+ this.attachmentKey = null;
1997
+ }
1911
1998
  };
1912
1999
  __decorate([
1913
2000
  PrimaryGeneratedColumn()
1914
2001
  //#endregion
1915
2002
  ,
1916
2003
  __metadata("design:type", Number)
1917
- ], TaonCmsContentRevisionEntity.prototype, "id", void 0);
2004
+ ], TaonCmsContentEntity.prototype, "id", void 0);
1918
2005
  __decorate([
1919
2006
  Column({ type: 'integer', default: 0 })
1920
2007
  //#endregion
1921
2008
  ,
1922
2009
  __metadata("design:type", Number)
1923
- ], TaonCmsContentRevisionEntity.prototype, "version", void 0);
2010
+ ], TaonCmsContentEntity.prototype, "version", void 0);
1924
2011
  __decorate([
1925
- Column({ type: 'integer' })
2012
+ Column({ type: 'varchar', default: TaonCmsContentType.Normal })
1926
2013
  //#endregion
1927
2014
  ,
1928
- __metadata("design:type", Number)
1929
- ], TaonCmsContentRevisionEntity.prototype, "contentId", void 0);
2015
+ __metadata("design:type", String)
2016
+ ], TaonCmsContentEntity.prototype, "type", void 0);
1930
2017
  __decorate([
1931
- Column({ type: 'integer' })
2018
+ Column({ type: 'varchar' })
1932
2019
  //#endregion
1933
2020
  ,
1934
- __metadata("design:type", Number)
1935
- ], TaonCmsContentRevisionEntity.prototype, "revisionNumber", void 0);
2021
+ __metadata("design:type", String)
2022
+ ], TaonCmsContentEntity.prototype, "title", void 0);
1936
2023
  __decorate([
1937
- Column({ type: 'varchar' })
2024
+ Column({ type: 'varchar', unique: true })
1938
2025
  //#endregion
1939
2026
  ,
1940
2027
  __metadata("design:type", String)
1941
- ], TaonCmsContentRevisionEntity.prototype, "title", void 0);
2028
+ ], TaonCmsContentEntity.prototype, "slug", void 0);
2029
+ __decorate([
2030
+ ManyToMany(() => TaonCmsContentEntity),
2031
+ JoinTable({
2032
+ name: 'taon_cms_related_posts',
2033
+ joinColumn: { name: 'contentId', referencedColumnName: 'id' },
2034
+ inverseJoinColumn: { name: 'relatedPostId', referencedColumnName: 'id' },
2035
+ })
2036
+ //#endregion
2037
+ ,
2038
+ __metadata("design:type", Array)
2039
+ ], TaonCmsContentEntity.prototype, "relatedPosts", void 0);
2040
+ __decorate([
2041
+ ManyToMany(() => TaonPermissionEntity),
2042
+ JoinTable({
2043
+ name: 'taon_cms_content_permissions',
2044
+ joinColumn: { name: 'contentId', referencedColumnName: 'id' },
2045
+ inverseJoinColumn: { name: 'permissionId', referencedColumnName: 'id' },
2046
+ })
2047
+ //#endregion
2048
+ ,
2049
+ __metadata("design:type", Array)
2050
+ ], TaonCmsContentEntity.prototype, "permissions", void 0);
1942
2051
  __decorate([
1943
2052
  Column({ type: 'text', nullable: true })
1944
2053
  //#endregion
1945
2054
  ,
1946
2055
  __metadata("design:type", String)
1947
- ], TaonCmsContentRevisionEntity.prototype, "body", void 0);
2056
+ ], TaonCmsContentEntity.prototype, "excerpt", void 0);
2057
+ __decorate([
2058
+ Column({ type: 'text', nullable: true })
2059
+ //#endregion
2060
+ ,
2061
+ __metadata("design:type", String)
2062
+ ], TaonCmsContentEntity.prototype, "body", void 0);
2063
+ __decorate([
2064
+ Column({ type: 'varchar', nullable: true })
2065
+ //#endregion
2066
+ ,
2067
+ __metadata("design:type", String)
2068
+ ], TaonCmsContentEntity.prototype, "videoKey", void 0);
2069
+ __decorate([
2070
+ Column({ type: 'varchar', nullable: true })
2071
+ //#endregion
2072
+ ,
2073
+ __metadata("design:type", String)
2074
+ ], TaonCmsContentEntity.prototype, "audioKey", void 0);
2075
+ __decorate([
2076
+ Column({ type: 'varchar', nullable: true })
2077
+ //#endregion
2078
+ ,
2079
+ __metadata("design:type", String)
2080
+ ], TaonCmsContentEntity.prototype, "attachmentKey", void 0);
1948
2081
  __decorate([
1949
2082
  Column({ type: 'integer', nullable: true })
1950
2083
  //#endregion
1951
2084
  ,
1952
2085
  __metadata("design:type", Number)
1953
- ], TaonCmsContentRevisionEntity.prototype, "createdByUserId", void 0);
2086
+ ], TaonCmsContentEntity.prototype, "categoryId", void 0);
2087
+ __decorate([
2088
+ Column({ type: 'integer', nullable: true })
2089
+ //#endregion
2090
+ ,
2091
+ __metadata("design:type", Number)
2092
+ ], TaonCmsContentEntity.prototype, "authorUserId", void 0);
2093
+ __decorate([
2094
+ Column({ type: 'varchar', default: 'draft' })
2095
+ //#endregion
2096
+ ,
2097
+ __metadata("design:type", String)
2098
+ ], TaonCmsContentEntity.prototype, "status", void 0);
2099
+ __decorate([
2100
+ Column({ type: 'datetime', nullable: true })
2101
+ //#endregion
2102
+ ,
2103
+ __metadata("design:type", Date)
2104
+ ], TaonCmsContentEntity.prototype, "publishedAt", void 0);
1954
2105
  __decorate([
1955
2106
  Column({ type: 'datetime' })
1956
2107
  //#endregion
1957
2108
  ,
1958
2109
  __metadata("design:type", Date)
1959
- ], TaonCmsContentRevisionEntity.prototype, "createdAt", void 0);
1960
- TaonCmsContentRevisionEntity = __decorate([
2110
+ ], TaonCmsContentEntity.prototype, "createdAt", void 0);
2111
+ __decorate([
2112
+ Column({ type: 'datetime' })
2113
+ //#endregion
2114
+ ,
2115
+ __metadata("design:type", Date)
2116
+ ], TaonCmsContentEntity.prototype, "updatedAt", void 0);
2117
+ TaonCmsContentEntity = __decorate([
1961
2118
  TaonEntity({
1962
- className: 'TaonCmsContentRevisionEntity',
2119
+ className: 'TaonCmsContentEntity',
1963
2120
  createTable: true,
1964
2121
  })
1965
- ], TaonCmsContentRevisionEntity);
2122
+ ], TaonCmsContentEntity);
1966
2123
 
1967
2124
  //#endregion
1968
- let TaonCmsContentRevisionRepository = class TaonCmsContentRevisionRepository extends TaonBaseRepository {
2125
+ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRepository {
1969
2126
  constructor() {
1970
2127
  super(...arguments);
1971
- this.entityClassResolveFn = () => TaonCmsContentRevisionEntity;
2128
+ this.entityClassResolveFn = () => TaonCmsContentEntity;
2129
+ this.taonCmsContentRevisionRepository = this.injectCustomRepo(TaonCmsContentRevisionRepository);
2130
+ this.taonCmsContentTagRepository = this.injectCustomRepo(TaonCmsContentTagRepository);
2131
+ this.taonCmsCategoryRepository = this.injectCustomRepo(TaonCmsCategoryRepository);
2132
+ this.tags = this.injectCustomRepo(TaonCmsTagRepository);
2133
+ }
2134
+ async createContent(input) {
2135
+ //#region @websqlFunc
2136
+ validateContentInput(input, true);
2137
+ return this.connection.transaction(async (manager) => {
2138
+ const fields = this.contentFields(input);
2139
+ const tagIds = [...new Set(input.tagIds ?? [])];
2140
+ const relatedPostIds = [...new Set(input.relatedPostIds ?? [])];
2141
+ const permissionIds = [...new Set(input.permissionIds ?? [])];
2142
+ await this.validateReferences(fields, tagIds, permissionIds, manager);
2143
+ await this.requireAvailableSlug(fields.slug, manager);
2144
+ const repository = manager.getRepository(this.target);
2145
+ const now = new Date();
2146
+ const content = await repository.save(repository.create({
2147
+ ...fields,
2148
+ version: 1,
2149
+ createdAt: now,
2150
+ updatedAt: now,
2151
+ }));
2152
+ await this.taonCmsContentTagRepository.replaceTags(content.id, tagIds, manager);
2153
+ await this.replaceRelatedPosts(content.id, relatedPostIds, [], manager);
2154
+ await this.replacePermissions(content.id, permissionIds, [], manager);
2155
+ await this.taonCmsContentRevisionRepository.recordContent(content, { ...fields, tagIds, relatedPostIds, permissionIds }, manager);
2156
+ return this.requireContent(content.id, manager);
2157
+ });
2158
+ //#endregion
2159
+ }
2160
+ async updateContent(id, input) {
2161
+ //#region @websqlFunc
2162
+ requireContentId(id);
2163
+ validateContentInput(input);
2164
+ requireContentVersion(input.expectedVersion);
2165
+ return this.connection.transaction(async (manager) => {
2166
+ const current = await this.requireContent(id, manager);
2167
+ const snapshot = await this.snapshotOf(current, manager);
2168
+ const fields = this.contentFields(input, snapshot);
2169
+ const tagIds = input.tagIds === undefined
2170
+ ? snapshot.tagIds
2171
+ : [...new Set(input.tagIds)];
2172
+ const relatedPostIds = input.relatedPostIds === undefined
2173
+ ? snapshot.relatedPostIds
2174
+ : [...new Set(input.relatedPostIds)];
2175
+ const permissionIds = input.permissionIds === undefined
2176
+ ? snapshot.permissionIds
2177
+ : [...new Set(input.permissionIds)];
2178
+ return this.commitUpdate(current, input.expectedVersion, { ...fields, tagIds, relatedPostIds, permissionIds }, manager);
2179
+ });
2180
+ //#endregion
2181
+ }
2182
+ async archiveContent(id, expectedVersion) {
2183
+ //#region @websqlFunc
2184
+ return this.updateContent(id, { status: 'archived', expectedVersion });
2185
+ //#endregion
2186
+ }
2187
+ async restoreContent(id, input) {
2188
+ //#region @websqlFunc
2189
+ requireContentId(id);
2190
+ if (!input || typeof input !== 'object') {
2191
+ contentError('Restore input must be an object.');
2192
+ }
2193
+ requireContentVersion(input.revisionNumber, 'revisionNumber');
2194
+ requireContentVersion(input.expectedVersion);
2195
+ return this.connection.transaction(async (manager) => {
2196
+ const current = await this.requireContent(id, manager);
2197
+ const revision = await this.taonCmsContentRevisionRepository.requireRevision(id, input.revisionNumber, manager);
2198
+ if (!revision.snapshot) {
2199
+ contentError('This legacy revision has no complete snapshot and cannot be restored.', 409);
2200
+ }
2201
+ const storedSnapshot = revision.snapshot;
2202
+ const snapshotFields = [
2203
+ 'type',
2204
+ 'title',
2205
+ 'slug',
2206
+ 'body',
2207
+ 'excerpt',
2208
+ 'categoryId',
2209
+ 'authorUserId',
2210
+ 'status',
2211
+ 'publishedAt',
2212
+ 'tagIds',
2213
+ ];
2214
+ if (snapshotFields.some(field => storedSnapshot[field] === undefined)) {
2215
+ contentError('This revision has an incomplete snapshot and cannot be restored.', 409);
2216
+ }
2217
+ validateContentInput(revision.snapshot, true);
2218
+ const snapshot = {
2219
+ // Older complete snapshots predate primary media; preserve those keys.
2220
+ ...this.contentFields(revision.snapshot, await this.snapshotOf(current, manager)),
2221
+ tagIds: revision.snapshot.tagIds,
2222
+ relatedPostIds: revision.snapshot.relatedPostIds ?? [],
2223
+ permissionIds: revision.snapshot.permissionIds ?? [],
2224
+ };
2225
+ return this.commitUpdate(current, input.expectedVersion, snapshot, manager);
2226
+ });
2227
+ //#endregion
2228
+ }
2229
+ async listRevisions(id) {
2230
+ //#region @websqlFunc
2231
+ requireContentId(id);
2232
+ return this.connection.transaction(async (manager) => {
2233
+ await this.requireContent(id, manager);
2234
+ return this.taonCmsContentRevisionRepository.listForContent(id, manager);
2235
+ });
2236
+ //#endregion
2237
+ }
2238
+ async listRelatedPosts(id) {
2239
+ //#region @websqlFunc
2240
+ requireContentId(id);
2241
+ return this.connection.transaction(async (manager) => (await this.requireContent(id, manager)).relatedPosts);
2242
+ //#endregion
2243
+ }
2244
+ async listPermissions(id) {
2245
+ //#region @websqlFunc
2246
+ requireContentId(id);
2247
+ return this.connection.transaction(async (manager) => (await this.requireContent(id, manager)).permissions);
2248
+ //#endregion
2249
+ }
2250
+ async addRelatedPost(id, relatedPostId, expectedVersion) {
2251
+ //#region @websqlFunc
2252
+ return this.changeRelatedPost(id, relatedPostId, expectedVersion, true);
2253
+ //#endregion
2254
+ }
2255
+ async deleteRelatedPost(id, relatedPostId, expectedVersion) {
2256
+ //#region @websqlFunc
2257
+ return this.changeRelatedPost(id, relatedPostId, expectedVersion, false);
2258
+ //#endregion
2259
+ }
2260
+ async changeRelatedPost(id, relatedPostId, expectedVersion, adding) {
2261
+ //#region @websqlFunc
2262
+ requireContentId(id);
2263
+ requireContentId(relatedPostId, 'relatedPostId');
2264
+ requireContentVersion(expectedVersion);
2265
+ if (id === relatedPostId) {
2266
+ contentError('A post cannot relate to itself.');
2267
+ }
2268
+ return this.connection.transaction(async (manager) => {
2269
+ const current = await this.requireContent(id, manager);
2270
+ await this.requireContent(relatedPostId, manager);
2271
+ const snapshot = await this.snapshotOf(current, manager);
2272
+ const ids = snapshot.relatedPostIds ?? [];
2273
+ snapshot.relatedPostIds = adding
2274
+ ? [...new Set([...ids, relatedPostId])]
2275
+ : ids.filter(postId => postId !== relatedPostId);
2276
+ return this.commitUpdate(current, expectedVersion, snapshot, manager);
2277
+ });
2278
+ //#endregion
2279
+ }
2280
+ async requireContent(id, manager) {
2281
+ //#region @websqlFunc
2282
+ const content = await manager
2283
+ .getRepository(this.target)
2284
+ .findOne({
2285
+ where: { id },
2286
+ relations: { relatedPosts: true, permissions: true },
2287
+ });
2288
+ if (!content) {
2289
+ contentError(`Content ${id} does not exist.`, 404);
2290
+ }
2291
+ return content;
2292
+ //#endregion
2293
+ }
2294
+ contentFields(input, current) {
2295
+ const type = input.type ?? current?.type ?? TaonCmsContentType.Normal;
2296
+ const title = input.title ?? current?.title;
2297
+ const slug = input.slug ?? current?.slug;
2298
+ if (title === undefined || slug === undefined) {
2299
+ contentError('title and slug are required.');
2300
+ }
2301
+ const publishedAt = input.publishedAt === undefined
2302
+ ? (current?.publishedAt ?? null)
2303
+ : input.publishedAt;
2304
+ return {
2305
+ type,
2306
+ title,
2307
+ slug,
2308
+ body: input.body === undefined ? (current?.body ?? null) : input.body,
2309
+ videoKey: input.videoKey === undefined ? (current?.videoKey ?? null) : input.videoKey,
2310
+ audioKey: input.audioKey === undefined ? (current?.audioKey ?? null) : input.audioKey,
2311
+ attachmentKey: input.attachmentKey === undefined
2312
+ ? (current?.attachmentKey ?? null)
2313
+ : input.attachmentKey,
2314
+ excerpt: input.excerpt === undefined
2315
+ ? (current?.excerpt ?? null)
2316
+ : input.excerpt,
2317
+ categoryId: input.categoryId === undefined
2318
+ ? (current?.categoryId ?? null)
2319
+ : input.categoryId,
2320
+ authorUserId: input.authorUserId === undefined
2321
+ ? (current?.authorUserId ?? null)
2322
+ : input.authorUserId,
2323
+ status: input.status ?? current?.status ?? 'draft',
2324
+ publishedAt: publishedAt === null ? null : new Date(publishedAt),
2325
+ };
2326
+ }
2327
+ async snapshotOf(content, manager) {
2328
+ //#region @websqlFunc
2329
+ return {
2330
+ ...this.contentFields({
2331
+ ...content,
2332
+ status: this.contentStatus(content.status),
2333
+ }),
2334
+ tagIds: await this.taonCmsContentTagRepository.findTagIds(content.id, manager),
2335
+ relatedPostIds: content.relatedPosts.map(post => post.id),
2336
+ permissionIds: content.permissions.map(permission => permission.id),
2337
+ };
2338
+ //#endregion
2339
+ }
2340
+ contentStatus(status) {
2341
+ if (status !== 'draft' && status !== 'published' && status !== 'archived') {
2342
+ contentError(`Unsupported stored content status: ${status}.`, 409);
2343
+ }
2344
+ return status;
2345
+ }
2346
+ async validateReferences(fields, tagIds, permissionIds, manager) {
2347
+ //#region @websqlFunc
2348
+ if (fields.categoryId !== null) {
2349
+ await this.taonCmsCategoryRepository.requireCategory(fields.categoryId, manager);
2350
+ }
2351
+ await this.tags.requireTags(tagIds, manager);
2352
+ await this.requirePermissions(permissionIds, manager);
2353
+ //#endregion
2354
+ }
2355
+ async requirePermissions(permissionIds, manager) {
2356
+ //#region @websqlFunc
2357
+ if (!permissionIds.length) {
2358
+ return;
2359
+ }
2360
+ const permissions = await manager
2361
+ .getRepository(TaonPermissionEntity)
2362
+ .findBy({ id: In(permissionIds) });
2363
+ const foundIds = new Set(permissions.map(permission => permission.id));
2364
+ const missingId = permissionIds.find(id => !foundIds.has(id));
2365
+ if (missingId !== undefined) {
2366
+ contentError(`Permission ${missingId} does not exist.`, 404);
2367
+ }
2368
+ //#endregion
2369
+ }
2370
+ async requireAvailableSlug(slug, manager, contentId) {
2371
+ //#region @websqlFunc
2372
+ const existing = await manager
2373
+ .getRepository(this.target)
2374
+ .findOneBy({ slug });
2375
+ if (existing && existing.id !== contentId) {
2376
+ contentError(`Slug "${slug}" is already in use.`, 409);
2377
+ }
2378
+ //#endregion
2379
+ }
2380
+ async replaceRelatedPosts(id, relatedPostIds, previousIds, manager) {
2381
+ //#region @websqlFunc
2382
+ if (relatedPostIds.includes(id)) {
2383
+ contentError('A post cannot relate to itself.');
2384
+ }
2385
+ const repository = manager.getRepository(this.target);
2386
+ if (relatedPostIds.length) {
2387
+ const posts = await repository.findBy({ id: In(relatedPostIds) });
2388
+ const foundIds = new Set(posts.map(post => post.id));
2389
+ const missingId = relatedPostIds.find(postId => !foundIds.has(postId));
2390
+ if (missingId !== undefined) {
2391
+ contentError(`Content ${missingId} does not exist.`, 404);
2392
+ }
2393
+ }
2394
+ const added = relatedPostIds.filter(postId => !previousIds.includes(postId));
2395
+ const removed = previousIds.filter(postId => !relatedPostIds.includes(postId));
2396
+ if (added.length || removed.length) {
2397
+ await repository.createQueryBuilder()
2398
+ .relation('relatedPosts')
2399
+ .of(id)
2400
+ .addAndRemove(added, removed);
2401
+ }
2402
+ //#endregion
2403
+ }
2404
+ async replacePermissions(id, permissionIds, previousIds, manager) {
2405
+ //#region @websqlFunc
2406
+ const added = permissionIds.filter(permissionId => !previousIds.includes(permissionId));
2407
+ const removed = previousIds.filter(permissionId => !permissionIds.includes(permissionId));
2408
+ if (added.length || removed.length) {
2409
+ await manager
2410
+ .getRepository(this.target)
2411
+ .createQueryBuilder()
2412
+ .relation('permissions')
2413
+ .of(id)
2414
+ .addAndRemove(added, removed);
2415
+ }
2416
+ //#endregion
2417
+ }
2418
+ async commitUpdate(current, expectedVersion, snapshot, manager) {
2419
+ //#region @websqlFunc
2420
+ if (current.version !== expectedVersion) {
2421
+ contentError('Content has changed. Reload it before editing.', 409);
2422
+ }
2423
+ await this.validateReferences(snapshot, snapshot.tagIds, snapshot.permissionIds, manager);
2424
+ await this.requireAvailableSlug(snapshot.slug, manager, current.id);
2425
+ // Preserve the first pre-API version before replacing it.
2426
+ const history = await this.taonCmsContentRevisionRepository.listForContent(current.id, manager);
2427
+ if (!history.some(revision => revision.revisionNumber === current.version)) {
2428
+ await this.taonCmsContentRevisionRepository.recordContent(current, await this.snapshotOf(current, manager), manager);
2429
+ }
2430
+ const fields = this.contentFields(snapshot);
2431
+ const repository = manager.getRepository(this.target);
2432
+ const result = await repository.update({ id: current.id, version: expectedVersion }, { ...fields, version: expectedVersion + 1, updatedAt: new Date() });
2433
+ if (result.affected !== 1) {
2434
+ contentError('Content has changed. Reload it before editing.', 409);
2435
+ }
2436
+ await this.taonCmsContentTagRepository.replaceTags(current.id, snapshot.tagIds, manager);
2437
+ await this.replaceRelatedPosts(current.id, [...new Set(snapshot.relatedPostIds ?? [])], current.relatedPosts.map(post => post.id), manager);
2438
+ await this.replacePermissions(current.id, [...new Set(snapshot.permissionIds ?? [])], current.permissions.map(permission => permission.id), manager);
2439
+ const updated = await this.requireContent(current.id, manager);
2440
+ await this.taonCmsContentRevisionRepository.recordContent(updated, {
2441
+ ...fields,
2442
+ tagIds: snapshot.tagIds,
2443
+ relatedPostIds: updated.relatedPosts.map(post => post.id),
2444
+ permissionIds: updated.permissions.map(permission => permission.id),
2445
+ }, manager);
2446
+ return updated;
2447
+ //#endregion
1972
2448
  }
1973
2449
  /**
1974
2450
  * TODO remove this demo example method
@@ -1984,134 +2460,337 @@ let TaonCmsContentRevisionRepository = class TaonCmsContentRevisionRepository ex
1984
2460
  //#endregion
1985
2461
  }
1986
2462
  };
1987
- TaonCmsContentRevisionRepository = __decorate([
2463
+ TaonCmsContentRepository = __decorate([
1988
2464
  TaonRepository({
1989
- className: 'TaonCmsContentRevisionRepository',
2465
+ className: 'TaonCmsContentRepository',
1990
2466
  })
1991
- ], TaonCmsContentRevisionRepository);
2467
+ ], TaonCmsContentRepository);
1992
2468
 
1993
- var TaonCmsContentRevisionController_1;
1994
2469
  //#endregion
1995
- let TaonCmsContentRevisionController = TaonCmsContentRevisionController_1 = class TaonCmsContentRevisionController extends TaonBaseCrudController {
2470
+ let TaonCmsContentController = class TaonCmsContentController extends TaonBaseCrudController {
1996
2471
  constructor() {
1997
2472
  super(...arguments);
1998
- this.entityClassResolveFn = () => TaonCmsContentRevisionEntity;
1999
- this.taonCmsContentRevisionRepository = this.injectCustomRepo(TaonCmsContentRevisionRepository);
2473
+ this.entityClassResolveFn = () => TaonCmsContentEntity;
2474
+ this.taonCmsContentRepository = this.injectCustomRepo(TaonCmsContentRepository);
2475
+ }
2476
+ createContent(input) {
2477
+ //#region @websqlFunc
2478
+ return async () => this.taonCmsContentRepository.createContent(input);
2000
2479
  //#endregion
2001
2480
  }
2002
- //#region methods & getters / hello world
2003
- /**
2004
- * TODO remove this demo example method
2005
- */
2006
- helloWord(yourName) {
2481
+ updateContent(id, input) {
2007
2482
  //#region @websqlFunc
2008
- return async (req, res) => {
2009
- const numOfEntities = await this.db.count();
2010
- const numberOfEvenEntities = await this.taonCmsContentRevisionRepository.countEntitesWithEvenId();
2011
- return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsContentRevisionController_1)}
2012
- controller.. ${numOfEntities} entites in db..
2013
- ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)
2014
- `;
2015
- };
2483
+ return async () => this.taonCmsContentRepository.updateContent(id, input);
2484
+ //#endregion
2485
+ }
2486
+ deleteContent(id, expectedVersion) {
2487
+ //#region @websqlFunc
2488
+ return async () => this.taonCmsContentRepository.archiveContent(id, expectedVersion);
2489
+ //#endregion
2490
+ }
2491
+ restoreContent(id, input) {
2492
+ //#region @websqlFunc
2493
+ return async () => this.taonCmsContentRepository.restoreContent(id, input);
2494
+ //#endregion
2495
+ }
2496
+ listRelatedPosts(id) {
2497
+ //#region @websqlFunc
2498
+ return async () => this.taonCmsContentRepository.listRelatedPosts(id);
2499
+ //#endregion
2500
+ }
2501
+ listPermissions(id) {
2502
+ //#region @websqlFunc
2503
+ return async () => this.taonCmsContentRepository.listPermissions(id);
2504
+ //#endregion
2505
+ }
2506
+ addRelatedPost(id, relatedPostId, expectedVersion) {
2507
+ //#region @websqlFunc
2508
+ return async () => this.taonCmsContentRepository.addRelatedPost(id, relatedPostId, expectedVersion);
2509
+ //#endregion
2510
+ }
2511
+ deleteRelatedPost(id, relatedPostId, expectedVersion) {
2512
+ //#region @websqlFunc
2513
+ return async () => this.taonCmsContentRepository.deleteRelatedPost(id, relatedPostId, expectedVersion);
2514
+ //#endregion
2515
+ }
2516
+ listRevisions(id) {
2517
+ //#region @websqlFunc
2518
+ return async () => this.taonCmsContentRepository.listRevisions(id);
2016
2519
  //#endregion
2017
2520
  }
2018
2521
  };
2522
+ __decorate([
2523
+ POST(),
2524
+ __param(0, Body()),
2525
+ __metadata("design:type", Function),
2526
+ __metadata("design:paramtypes", [Object]),
2527
+ __metadata("design:returntype", Object)
2528
+ ], TaonCmsContentController.prototype, "createContent", null);
2529
+ __decorate([
2530
+ PUT(),
2531
+ __param(0, Query('id')),
2532
+ __param(1, Body()),
2533
+ __metadata("design:type", Function),
2534
+ __metadata("design:paramtypes", [Number, Object]),
2535
+ __metadata("design:returntype", Object)
2536
+ ], TaonCmsContentController.prototype, "updateContent", null);
2537
+ __decorate([
2538
+ DELETE(),
2539
+ __param(0, Query('id')),
2540
+ __param(1, Query('expectedVersion')),
2541
+ __metadata("design:type", Function),
2542
+ __metadata("design:paramtypes", [Number, Number]),
2543
+ __metadata("design:returntype", Object)
2544
+ ], TaonCmsContentController.prototype, "deleteContent", null);
2545
+ __decorate([
2546
+ POST(),
2547
+ __param(0, Query('id')),
2548
+ __param(1, Body()),
2549
+ __metadata("design:type", Function),
2550
+ __metadata("design:paramtypes", [Number, Object]),
2551
+ __metadata("design:returntype", Object)
2552
+ ], TaonCmsContentController.prototype, "restoreContent", null);
2019
2553
  __decorate([
2020
2554
  GET(),
2021
- __param(0, Query('yourName')),
2555
+ __param(0, Query('id')),
2022
2556
  __metadata("design:type", Function),
2023
- __metadata("design:paramtypes", [String]),
2557
+ __metadata("design:paramtypes", [Number]),
2558
+ __metadata("design:returntype", Object)
2559
+ ], TaonCmsContentController.prototype, "listRelatedPosts", null);
2560
+ __decorate([
2561
+ GET(),
2562
+ __param(0, Query('id')),
2563
+ __metadata("design:type", Function),
2564
+ __metadata("design:paramtypes", [Number]),
2565
+ __metadata("design:returntype", Object)
2566
+ ], TaonCmsContentController.prototype, "listPermissions", null);
2567
+ __decorate([
2568
+ POST(),
2569
+ __param(0, Query('id')),
2570
+ __param(1, Query('relatedPostId')),
2571
+ __param(2, Query('expectedVersion')),
2572
+ __metadata("design:type", Function),
2573
+ __metadata("design:paramtypes", [Number, Number, Number]),
2574
+ __metadata("design:returntype", Object)
2575
+ ], TaonCmsContentController.prototype, "addRelatedPost", null);
2576
+ __decorate([
2577
+ DELETE(),
2578
+ __param(0, Query('id')),
2579
+ __param(1, Query('relatedPostId')),
2580
+ __param(2, Query('expectedVersion')),
2581
+ __metadata("design:type", Function),
2582
+ __metadata("design:paramtypes", [Number, Number, Number]),
2583
+ __metadata("design:returntype", Object)
2584
+ ], TaonCmsContentController.prototype, "deleteRelatedPost", null);
2585
+ __decorate([
2586
+ GET(),
2587
+ __param(0, Query('id')),
2588
+ __metadata("design:type", Function),
2589
+ __metadata("design:paramtypes", [Number]),
2024
2590
  __metadata("design:returntype", Object)
2025
- ], TaonCmsContentRevisionController.prototype, "helloWord", null);
2026
- TaonCmsContentRevisionController = TaonCmsContentRevisionController_1 = __decorate([
2591
+ ], TaonCmsContentController.prototype, "listRevisions", null);
2592
+ TaonCmsContentController = __decorate([
2027
2593
  TaonController({
2028
- className: 'TaonCmsContentRevisionController',
2029
- allowedMethods: []
2594
+ className: 'TaonCmsContentController',
2595
+ allowedMethods: [
2596
+ 'getAll',
2597
+ 'getBy',
2598
+ 'createContent',
2599
+ 'updateContent',
2600
+ 'deleteContent',
2601
+ 'restoreContent',
2602
+ 'listRevisions',
2603
+ 'listRelatedPosts',
2604
+ 'listPermissions',
2605
+ 'addRelatedPost',
2606
+ 'deleteRelatedPost',
2607
+ 'paginationQuery'
2608
+ ],
2030
2609
  })
2031
- ], TaonCmsContentRevisionController);
2610
+ ], TaonCmsContentController);
2032
2611
 
2033
2612
  //#endregion
2034
- let TaonCmsContentRevisionProvider = class TaonCmsContentRevisionProvider extends TaonBaseProvider {
2035
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2036
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionProvider }); }
2613
+ let TaonCmsContentMiddleware = class TaonCmsContentMiddleware extends TaonBaseMiddleware {
2037
2614
  };
2038
- TaonCmsContentRevisionProvider = __decorate([
2039
- TaonProvider({
2040
- className: 'TaonCmsContentRevisionProvider',
2615
+ TaonCmsContentMiddleware = __decorate([
2616
+ TaonMiddleware({
2617
+ className: 'TaonCmsContentMiddleware',
2041
2618
  })
2042
- //#region @browser
2043
- ], TaonCmsContentRevisionProvider);
2044
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionProvider, decorators: [{
2045
- type: Injectable
2046
- }] });
2619
+ ], TaonCmsContentMiddleware);
2047
2620
 
2048
2621
  //#endregion
2049
- let TaonCmsContentRevisionMiddleware = class TaonCmsContentRevisionMiddleware extends TaonBaseMiddleware {
2622
+ let TaonCmsContentProvider = class TaonCmsContentProvider extends TaonBaseProvider {
2623
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2624
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentProvider }); }
2050
2625
  };
2051
- TaonCmsContentRevisionMiddleware = __decorate([
2052
- TaonMiddleware({
2053
- className: 'TaonCmsContentRevisionMiddleware',
2626
+ TaonCmsContentProvider = __decorate([
2627
+ TaonProvider({
2628
+ className: 'TaonCmsContentProvider',
2054
2629
  })
2055
- ], TaonCmsContentRevisionMiddleware);
2630
+ //#region @browser
2631
+ ], TaonCmsContentProvider);
2632
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentProvider, decorators: [{
2633
+ type: Injectable
2634
+ }] });
2056
2635
 
2057
2636
  //#endregion
2058
- let TaonCmsContentRevisionSubscriber = class TaonCmsContentRevisionSubscriber extends TaonBaseSubscriberForEntity {
2637
+ let TaonCmsContentSubscriber = class TaonCmsContentSubscriber extends TaonBaseSubscriberForEntity {
2059
2638
  constructor() {
2060
2639
  super(...arguments);
2061
- this.taonCmsContentRevisionProvider = this.injectProvider(TaonCmsContentRevisionProvider);
2640
+ this.taonCmsContentProvider = this.injectProvider(TaonCmsContentProvider);
2062
2641
  }
2063
2642
  listenTo() {
2064
- return TaonCmsContentRevisionEntity;
2643
+ return TaonCmsContentEntity;
2065
2644
  }
2066
2645
  };
2067
- TaonCmsContentRevisionSubscriber = __decorate([
2646
+ TaonCmsContentSubscriber = __decorate([
2068
2647
  TaonSubscriber({
2069
- className: 'TaonCmsContentRevisionSubscriber',
2648
+ className: 'TaonCmsContentSubscriber',
2070
2649
  // allowedEvents: ['afterUpdate'],
2071
2650
  })
2072
- ], TaonCmsContentRevisionSubscriber);
2651
+ ], TaonCmsContentSubscriber);
2652
+
2653
+ //#endregion
2654
+ let TaonCmsContentStorageController = class TaonCmsContentStorageController extends TaonBaseStorageController {
2655
+ async handleUploadFiles(files, queryParams, req, res) {
2656
+ /* */
2657
+ /* */
2658
+ /* */
2659
+ /* */
2660
+ /* */
2661
+ /* */
2662
+ /* */
2663
+ /* */
2664
+ return (void 0);
2665
+ }
2666
+ afterFileUploadHook() { }
2667
+ buildStorageDownloadUrl() {
2668
+ throw new Error('Use the download endpoint for CMS media.');
2669
+ }
2670
+ async createStorageDownloadToken() {
2671
+ throw new Error('CMS media download tokens are not enabled.');
2672
+ }
2673
+ };
2674
+ TaonCmsContentStorageController = __decorate([
2675
+ TaonController({
2676
+ className: 'TaonCmsContentStorageController',
2677
+ allowedMethods: ['exists', 'download', 'getMetadata', 'uploadFormDataToServer'],
2678
+ })
2679
+ ], TaonCmsContentStorageController);
2073
2680
 
2074
2681
  //#region imports
2075
2682
  //#endregion
2076
- const TaonCmsContentRevisionAbstractContext = createContext(() => ({
2077
- contextName: 'TaonCmsContentRevisionAbstractContext',
2683
+ const TaonCmsContentAbstractContext = createContext(() => ({
2684
+ contextName: 'TaonCmsContentAbstractContext',
2078
2685
  abstract: true,
2079
- contexts: { TaonBaseContext },
2080
- entities: { TaonCmsContentRevisionEntity },
2081
- controllers: { TaonCmsContentRevisionController },
2082
- repositories: { TaonCmsContentRevisionRepository },
2083
- providers: { TaonCmsContentRevisionProvider },
2084
- middlewares: { TaonCmsContentRevisionMiddleware },
2085
- subscribers: { TaonCmsContentRevisionSubscriber },
2686
+ contexts: {
2687
+ TaonBaseContext,
2688
+ TaonCmsCategoryAbstractContext,
2689
+ TaonCmsTagAbstractContext,
2690
+ TaonCmsContentTagAbstractContext,
2691
+ TaonCmsContentRevisionAbstractContext,
2692
+ },
2693
+ entities: { TaonCmsContentEntity },
2694
+ controllers: { TaonCmsContentController, TaonCmsContentStorageController },
2695
+ repositories: { TaonCmsContentRepository },
2696
+ providers: { TaonCmsContentProvider },
2697
+ middlewares: { TaonCmsContentMiddleware },
2698
+ subscribers: { TaonCmsContentSubscriber },
2086
2699
  }));
2087
2700
 
2088
2701
  //#endregion
2089
- let TaonCmsContentTagEntity = class TaonCmsContentTagEntity extends TaonBaseAbstractEntity {
2702
+ let TaonCmsContentAssetEntity = class TaonCmsContentAssetEntity extends TaonBaseEntity {
2090
2703
  };
2091
2704
  __decorate([
2092
- Column({ type: 'integer' })
2705
+ PrimaryGeneratedColumn()
2706
+ //#endregion
2707
+ ,
2708
+ __metadata("design:type", Number)
2709
+ ], TaonCmsContentAssetEntity.prototype, "id", void 0);
2710
+ __decorate([
2711
+ Column({ type: 'integer', default: 0 })
2712
+ //#endregion
2713
+ ,
2714
+ __metadata("design:type", Number)
2715
+ ], TaonCmsContentAssetEntity.prototype, "version", void 0);
2716
+ __decorate([
2717
+ Column({ type: 'integer', nullable: true })
2718
+ //#endregion
2719
+ ,
2720
+ __metadata("design:type", Number)
2721
+ ], TaonCmsContentAssetEntity.prototype, "contentId", void 0);
2722
+ __decorate([
2723
+ Column({ type: 'varchar' })
2724
+ //#endregion
2725
+ ,
2726
+ __metadata("design:type", String)
2727
+ ], TaonCmsContentAssetEntity.prototype, "type", void 0);
2728
+ __decorate([
2729
+ Column({ type: 'varchar' })
2730
+ //#endregion
2731
+ ,
2732
+ __metadata("design:type", String)
2733
+ ], TaonCmsContentAssetEntity.prototype, "storageProvider", void 0);
2734
+ __decorate([
2735
+ Column({ type: 'varchar', nullable: true })
2736
+ //#endregion
2737
+ ,
2738
+ __metadata("design:type", String)
2739
+ ], TaonCmsContentAssetEntity.prototype, "bucket", void 0);
2740
+ __decorate([
2741
+ Column({ type: 'varchar' })
2742
+ //#endregion
2743
+ ,
2744
+ __metadata("design:type", String)
2745
+ ], TaonCmsContentAssetEntity.prototype, "key", void 0);
2746
+ __decorate([
2747
+ Column({ type: 'varchar', nullable: true })
2748
+ //#endregion
2749
+ ,
2750
+ __metadata("design:type", String)
2751
+ ], TaonCmsContentAssetEntity.prototype, "originalFilename", void 0);
2752
+ __decorate([
2753
+ Column({ type: 'varchar', nullable: true })
2754
+ //#endregion
2755
+ ,
2756
+ __metadata("design:type", String)
2757
+ ], TaonCmsContentAssetEntity.prototype, "mimeType", void 0);
2758
+ __decorate([
2759
+ Column({ type: 'integer', nullable: true })
2093
2760
  //#endregion
2094
2761
  ,
2095
2762
  __metadata("design:type", Number)
2096
- ], TaonCmsContentTagEntity.prototype, "contentId", void 0);
2763
+ ], TaonCmsContentAssetEntity.prototype, "size", void 0);
2097
2764
  __decorate([
2098
- Column({ type: 'integer' })
2765
+ Column({ type: 'integer', nullable: true })
2099
2766
  //#endregion
2100
2767
  ,
2101
2768
  __metadata("design:type", Number)
2102
- ], TaonCmsContentTagEntity.prototype, "tagId", void 0);
2103
- TaonCmsContentTagEntity = __decorate([
2769
+ ], TaonCmsContentAssetEntity.prototype, "durationSeconds", void 0);
2770
+ __decorate([
2771
+ Column({ type: 'simple-json', nullable: true })
2772
+ //#endregion
2773
+ ,
2774
+ __metadata("design:type", Object)
2775
+ ], TaonCmsContentAssetEntity.prototype, "metadata", void 0);
2776
+ __decorate([
2777
+ Column({ type: 'datetime' })
2778
+ //#endregion
2779
+ ,
2780
+ __metadata("design:type", Date)
2781
+ ], TaonCmsContentAssetEntity.prototype, "createdAt", void 0);
2782
+ TaonCmsContentAssetEntity = __decorate([
2104
2783
  TaonEntity({
2105
- className: 'TaonCmsContentTagEntity',
2784
+ className: 'TaonCmsContentAssetEntity',
2106
2785
  createTable: true,
2107
2786
  })
2108
- ], TaonCmsContentTagEntity);
2787
+ ], TaonCmsContentAssetEntity);
2109
2788
 
2110
2789
  //#endregion
2111
- let TaonCmsContentTagRepository = class TaonCmsContentTagRepository extends TaonBaseRepository {
2790
+ let TaonCmsContentAssetRepository = class TaonCmsContentAssetRepository extends TaonBaseRepository {
2112
2791
  constructor() {
2113
2792
  super(...arguments);
2114
- this.entityClassResolveFn = () => TaonCmsContentTagEntity;
2793
+ this.entityClassResolveFn = () => TaonCmsContentAssetEntity;
2115
2794
  }
2116
2795
  /**
2117
2796
  * TODO remove this demo example method
@@ -2127,19 +2806,19 @@ let TaonCmsContentTagRepository = class TaonCmsContentTagRepository extends Taon
2127
2806
  //#endregion
2128
2807
  }
2129
2808
  };
2130
- TaonCmsContentTagRepository = __decorate([
2809
+ TaonCmsContentAssetRepository = __decorate([
2131
2810
  TaonRepository({
2132
- className: 'TaonCmsContentTagRepository',
2811
+ className: 'TaonCmsContentAssetRepository',
2133
2812
  })
2134
- ], TaonCmsContentTagRepository);
2813
+ ], TaonCmsContentAssetRepository);
2135
2814
 
2136
- var TaonCmsContentTagController_1;
2815
+ var TaonCmsContentAssetController_1;
2137
2816
  //#endregion
2138
- let TaonCmsContentTagController = TaonCmsContentTagController_1 = class TaonCmsContentTagController extends TaonBaseCrudController {
2817
+ let TaonCmsContentAssetController = TaonCmsContentAssetController_1 = class TaonCmsContentAssetController extends TaonBaseCrudController {
2139
2818
  constructor() {
2140
2819
  super(...arguments);
2141
- this.entityClassResolveFn = () => TaonCmsContentTagEntity;
2142
- this.taonCmsContentTagRepository = this.injectCustomRepo(TaonCmsContentTagRepository);
2820
+ this.entityClassResolveFn = () => TaonCmsContentAssetEntity;
2821
+ this.taonCmsContentAssetRepository = this.injectCustomRepo(TaonCmsContentAssetRepository);
2143
2822
  //#endregion
2144
2823
  }
2145
2824
  //#region methods & getters / hello world
@@ -2150,8 +2829,8 @@ let TaonCmsContentTagController = TaonCmsContentTagController_1 = class TaonCmsC
2150
2829
  //#region @websqlFunc
2151
2830
  return async (req, res) => {
2152
2831
  const numOfEntities = await this.db.count();
2153
- const numberOfEvenEntities = await this.taonCmsContentTagRepository.countEntitesWithEvenId();
2154
- return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsContentTagController_1)}
2832
+ const numberOfEvenEntities = await this.taonCmsContentAssetRepository.countEntitesWithEvenId();
2833
+ return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsContentAssetController_1)}
2155
2834
  controller.. ${numOfEntities} entites in db..
2156
2835
  ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)
2157
2836
  `;
@@ -2165,102 +2844,124 @@ __decorate([
2165
2844
  __metadata("design:type", Function),
2166
2845
  __metadata("design:paramtypes", [String]),
2167
2846
  __metadata("design:returntype", Object)
2168
- ], TaonCmsContentTagController.prototype, "helloWord", null);
2169
- TaonCmsContentTagController = TaonCmsContentTagController_1 = __decorate([
2847
+ ], TaonCmsContentAssetController.prototype, "helloWord", null);
2848
+ TaonCmsContentAssetController = TaonCmsContentAssetController_1 = __decorate([
2170
2849
  TaonController({
2171
- className: 'TaonCmsContentTagController',
2850
+ className: 'TaonCmsContentAssetController',
2172
2851
  allowedMethods: []
2173
2852
  })
2174
- ], TaonCmsContentTagController);
2853
+ ], TaonCmsContentAssetController);
2175
2854
 
2176
2855
  //#endregion
2177
- let TaonCmsContentTagProvider = class TaonCmsContentTagProvider extends TaonBaseProvider {
2178
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2179
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagProvider }); }
2856
+ let TaonCmsContentAssetProvider = class TaonCmsContentAssetProvider extends TaonBaseProvider {
2857
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentAssetProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2858
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentAssetProvider }); }
2180
2859
  };
2181
- TaonCmsContentTagProvider = __decorate([
2860
+ TaonCmsContentAssetProvider = __decorate([
2182
2861
  TaonProvider({
2183
- className: 'TaonCmsContentTagProvider',
2862
+ className: 'TaonCmsContentAssetProvider',
2184
2863
  })
2185
2864
  //#region @browser
2186
- ], TaonCmsContentTagProvider);
2187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagProvider, decorators: [{
2865
+ ], TaonCmsContentAssetProvider);
2866
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentAssetProvider, decorators: [{
2188
2867
  type: Injectable
2189
2868
  }] });
2190
2869
 
2191
2870
  //#endregion
2192
- let TaonCmsContentTagMiddleware = class TaonCmsContentTagMiddleware extends TaonBaseMiddleware {
2871
+ let TaonCmsContentAssetMiddleware = class TaonCmsContentAssetMiddleware extends TaonBaseMiddleware {
2193
2872
  };
2194
- TaonCmsContentTagMiddleware = __decorate([
2873
+ TaonCmsContentAssetMiddleware = __decorate([
2195
2874
  TaonMiddleware({
2196
- className: 'TaonCmsContentTagMiddleware',
2875
+ className: 'TaonCmsContentAssetMiddleware',
2197
2876
  })
2198
- ], TaonCmsContentTagMiddleware);
2877
+ ], TaonCmsContentAssetMiddleware);
2199
2878
 
2200
2879
  //#endregion
2201
- let TaonCmsContentTagSubscriber = class TaonCmsContentTagSubscriber extends TaonBaseSubscriberForEntity {
2880
+ let TaonCmsContentAssetSubscriber = class TaonCmsContentAssetSubscriber extends TaonBaseSubscriberForEntity {
2202
2881
  constructor() {
2203
2882
  super(...arguments);
2204
- this.taonCmsContentTagProvider = this.injectProvider(TaonCmsContentTagProvider);
2883
+ this.taonCmsContentAssetProvider = this.injectProvider(TaonCmsContentAssetProvider);
2205
2884
  }
2206
2885
  listenTo() {
2207
- return TaonCmsContentTagEntity;
2886
+ return TaonCmsContentAssetEntity;
2208
2887
  }
2209
2888
  };
2210
- TaonCmsContentTagSubscriber = __decorate([
2889
+ TaonCmsContentAssetSubscriber = __decorate([
2211
2890
  TaonSubscriber({
2212
- className: 'TaonCmsContentTagSubscriber',
2891
+ className: 'TaonCmsContentAssetSubscriber',
2213
2892
  // allowedEvents: ['afterUpdate'],
2214
2893
  })
2215
- ], TaonCmsContentTagSubscriber);
2894
+ ], TaonCmsContentAssetSubscriber);
2216
2895
 
2217
2896
  //#region imports
2218
2897
  //#endregion
2219
- const TaonCmsContentTagAbstractContext = createContext(() => ({
2220
- contextName: 'TaonCmsContentTagAbstractContext',
2898
+ const TaonCmsContentAssetAbstractContext = createContext(() => ({
2899
+ contextName: 'TaonCmsContentAssetAbstractContext',
2221
2900
  abstract: true,
2222
2901
  contexts: { TaonBaseContext },
2223
- entities: { TaonCmsContentTagEntity },
2224
- controllers: { TaonCmsContentTagController },
2225
- repositories: { TaonCmsContentTagRepository },
2226
- providers: { TaonCmsContentTagProvider },
2227
- middlewares: { TaonCmsContentTagMiddleware },
2228
- subscribers: { TaonCmsContentTagSubscriber },
2902
+ entities: { TaonCmsContentAssetEntity },
2903
+ controllers: { TaonCmsContentAssetController },
2904
+ repositories: { TaonCmsContentAssetRepository },
2905
+ providers: { TaonCmsContentAssetProvider },
2906
+ middlewares: { TaonCmsContentAssetMiddleware },
2907
+ subscribers: { TaonCmsContentAssetSubscriber },
2229
2908
  }));
2230
2909
 
2231
2910
  //#endregion
2232
- let TaonCmsTagEntity = class TaonCmsTagEntity extends TaonBaseAbstractEntity {
2911
+ let TaonCmsContentPermissionEntity = class TaonCmsContentPermissionEntity extends TaonBaseEntity {
2233
2912
  };
2234
2913
  __decorate([
2235
- Column({ type: 'varchar', unique: true })
2236
- //#endregion
2237
- ,
2238
- __metadata("design:type", String)
2239
- ], TaonCmsTagEntity.prototype, "name", void 0);
2914
+ PrimaryGeneratedColumn(),
2915
+ __metadata("design:type", Number)
2916
+ ], TaonCmsContentPermissionEntity.prototype, "id", void 0);
2240
2917
  __decorate([
2241
- Column({ type: 'varchar', unique: true })
2242
- //#endregion
2243
- ,
2918
+ Column({ type: 'integer', default: 0 }),
2919
+ __metadata("design:type", Number)
2920
+ ], TaonCmsContentPermissionEntity.prototype, "version", void 0);
2921
+ __decorate([
2922
+ Column({ type: 'integer' }),
2923
+ __metadata("design:type", Number)
2924
+ ], TaonCmsContentPermissionEntity.prototype, "contentId", void 0);
2925
+ __decorate([
2926
+ Column({ type: 'varchar' }),
2244
2927
  __metadata("design:type", String)
2245
- ], TaonCmsTagEntity.prototype, "slug", void 0);
2928
+ ], TaonCmsContentPermissionEntity.prototype, "type", void 0);
2246
2929
  __decorate([
2247
- Column({ type: 'varchar', nullable: true })
2248
- //#endregion
2249
- ,
2930
+ Column({ type: 'integer', nullable: true }),
2931
+ __metadata("design:type", Number)
2932
+ ], TaonCmsContentPermissionEntity.prototype, "permissionId", void 0);
2933
+ __decorate([
2934
+ Column({ type: 'integer', nullable: true }),
2935
+ __metadata("design:type", Number)
2936
+ ], TaonCmsContentPermissionEntity.prototype, "roleId", void 0);
2937
+ __decorate([
2938
+ Column({ type: 'integer', nullable: true }),
2939
+ __metadata("design:type", Number)
2940
+ ], TaonCmsContentPermissionEntity.prototype, "productId", void 0);
2941
+ __decorate([
2942
+ Column({ type: 'varchar', nullable: true }),
2250
2943
  __metadata("design:type", String)
2251
- ], TaonCmsTagEntity.prototype, "description", void 0);
2252
- TaonCmsTagEntity = __decorate([
2944
+ ], TaonCmsContentPermissionEntity.prototype, "stripePriceId", void 0);
2945
+ __decorate([
2946
+ Column({ type: 'simple-json', nullable: true }),
2947
+ __metadata("design:type", Object)
2948
+ ], TaonCmsContentPermissionEntity.prototype, "config", void 0);
2949
+ __decorate([
2950
+ Column({ type: 'datetime' }),
2951
+ __metadata("design:type", Date)
2952
+ ], TaonCmsContentPermissionEntity.prototype, "createdAt", void 0);
2953
+ TaonCmsContentPermissionEntity = __decorate([
2253
2954
  TaonEntity({
2254
- className: 'TaonCmsTagEntity',
2955
+ className: 'TaonCmsContentPermissionEntity',
2255
2956
  createTable: true,
2256
2957
  })
2257
- ], TaonCmsTagEntity);
2958
+ ], TaonCmsContentPermissionEntity);
2258
2959
 
2259
2960
  //#endregion
2260
- let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository {
2961
+ let TaonCmsContentPermissionRepository = class TaonCmsContentPermissionRepository extends TaonBaseRepository {
2261
2962
  constructor() {
2262
2963
  super(...arguments);
2263
- this.entityClassResolveFn = () => TaonCmsTagEntity;
2964
+ this.entityClassResolveFn = () => TaonCmsContentPermissionEntity;
2264
2965
  }
2265
2966
  /**
2266
2967
  * TODO remove this demo example method
@@ -2276,19 +2977,19 @@ let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository
2276
2977
  //#endregion
2277
2978
  }
2278
2979
  };
2279
- TaonCmsTagRepository = __decorate([
2980
+ TaonCmsContentPermissionRepository = __decorate([
2280
2981
  TaonRepository({
2281
- className: 'TaonCmsTagRepository',
2982
+ className: 'TaonCmsContentPermissionRepository',
2282
2983
  })
2283
- ], TaonCmsTagRepository);
2984
+ ], TaonCmsContentPermissionRepository);
2284
2985
 
2285
- var TaonCmsTagController_1;
2986
+ var TaonCmsContentPermissionController_1;
2286
2987
  //#endregion
2287
- let TaonCmsTagController = TaonCmsTagController_1 = class TaonCmsTagController extends TaonBaseCrudController {
2988
+ let TaonCmsContentPermissionController = TaonCmsContentPermissionController_1 = class TaonCmsContentPermissionController extends TaonBaseCrudController {
2288
2989
  constructor() {
2289
2990
  super(...arguments);
2290
- this.entityClassResolveFn = () => TaonCmsTagEntity;
2291
- this.taonCmsTagRepository = this.injectCustomRepo(TaonCmsTagRepository);
2991
+ this.entityClassResolveFn = () => TaonCmsContentPermissionEntity;
2992
+ this.taonCmsContentPermissionRepository = this.injectCustomRepo(TaonCmsContentPermissionRepository);
2292
2993
  //#endregion
2293
2994
  }
2294
2995
  //#region methods & getters / hello world
@@ -2299,8 +3000,8 @@ let TaonCmsTagController = TaonCmsTagController_1 = class TaonCmsTagController e
2299
3000
  //#region @websqlFunc
2300
3001
  return async (req, res) => {
2301
3002
  const numOfEntities = await this.db.count();
2302
- const numberOfEvenEntities = await this.taonCmsTagRepository.countEntitesWithEvenId();
2303
- return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsTagController_1)}
3003
+ const numberOfEvenEntities = await this.taonCmsContentPermissionRepository.countEntitesWithEvenId();
3004
+ return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonCmsContentPermissionController_1)}
2304
3005
  controller.. ${numOfEntities} entites in db..
2305
3006
  ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)
2306
3007
  `;
@@ -2314,67 +3015,67 @@ __decorate([
2314
3015
  __metadata("design:type", Function),
2315
3016
  __metadata("design:paramtypes", [String]),
2316
3017
  __metadata("design:returntype", Object)
2317
- ], TaonCmsTagController.prototype, "helloWord", null);
2318
- TaonCmsTagController = TaonCmsTagController_1 = __decorate([
3018
+ ], TaonCmsContentPermissionController.prototype, "helloWord", null);
3019
+ TaonCmsContentPermissionController = TaonCmsContentPermissionController_1 = __decorate([
2319
3020
  TaonController({
2320
- className: 'TaonCmsTagController',
3021
+ className: 'TaonCmsContentPermissionController',
2321
3022
  allowedMethods: []
2322
3023
  })
2323
- ], TaonCmsTagController);
3024
+ ], TaonCmsContentPermissionController);
2324
3025
 
2325
3026
  //#endregion
2326
- let TaonCmsTagProvider = class TaonCmsTagProvider extends TaonBaseProvider {
2327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2328
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagProvider }); }
3027
+ let TaonCmsContentPermissionProvider = class TaonCmsContentPermissionProvider extends TaonBaseProvider {
3028
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentPermissionProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3029
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentPermissionProvider }); }
2329
3030
  };
2330
- TaonCmsTagProvider = __decorate([
3031
+ TaonCmsContentPermissionProvider = __decorate([
2331
3032
  TaonProvider({
2332
- className: 'TaonCmsTagProvider',
3033
+ className: 'TaonCmsContentPermissionProvider',
2333
3034
  })
2334
3035
  //#region @browser
2335
- ], TaonCmsTagProvider);
2336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagProvider, decorators: [{
3036
+ ], TaonCmsContentPermissionProvider);
3037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentPermissionProvider, decorators: [{
2337
3038
  type: Injectable
2338
3039
  }] });
2339
3040
 
2340
3041
  //#endregion
2341
- let TaonCmsTagMiddleware = class TaonCmsTagMiddleware extends TaonBaseMiddleware {
3042
+ let TaonCmsContentPermissionMiddleware = class TaonCmsContentPermissionMiddleware extends TaonBaseMiddleware {
2342
3043
  };
2343
- TaonCmsTagMiddleware = __decorate([
3044
+ TaonCmsContentPermissionMiddleware = __decorate([
2344
3045
  TaonMiddleware({
2345
- className: 'TaonCmsTagMiddleware',
3046
+ className: 'TaonCmsContentPermissionMiddleware',
2346
3047
  })
2347
- ], TaonCmsTagMiddleware);
3048
+ ], TaonCmsContentPermissionMiddleware);
2348
3049
 
2349
3050
  //#endregion
2350
- let TaonCmsTagSubscriber = class TaonCmsTagSubscriber extends TaonBaseSubscriberForEntity {
3051
+ let TaonCmsContentPermissionSubscriber = class TaonCmsContentPermissionSubscriber extends TaonBaseSubscriberForEntity {
2351
3052
  constructor() {
2352
3053
  super(...arguments);
2353
- this.taonCmsTagProvider = this.injectProvider(TaonCmsTagProvider);
3054
+ this.taonCmsContentPermissionProvider = this.injectProvider(TaonCmsContentPermissionProvider);
2354
3055
  }
2355
3056
  listenTo() {
2356
- return TaonCmsTagEntity;
3057
+ return TaonCmsContentPermissionEntity;
2357
3058
  }
2358
3059
  };
2359
- TaonCmsTagSubscriber = __decorate([
3060
+ TaonCmsContentPermissionSubscriber = __decorate([
2360
3061
  TaonSubscriber({
2361
- className: 'TaonCmsTagSubscriber',
3062
+ className: 'TaonCmsContentPermissionSubscriber',
2362
3063
  // allowedEvents: ['afterUpdate'],
2363
3064
  })
2364
- ], TaonCmsTagSubscriber);
3065
+ ], TaonCmsContentPermissionSubscriber);
2365
3066
 
2366
3067
  //#region imports
2367
3068
  //#endregion
2368
- const TaonCmsTagAbstractContext = createContext(() => ({
2369
- contextName: 'TaonCmsTagAbstractContext',
3069
+ const TaonCmsContentPermissionAbstractContext = createContext(() => ({
3070
+ contextName: 'TaonCmsContentPermissionAbstractContext',
2370
3071
  abstract: true,
2371
3072
  contexts: { TaonBaseContext },
2372
- entities: { TaonCmsTagEntity },
2373
- controllers: { TaonCmsTagController },
2374
- repositories: { TaonCmsTagRepository },
2375
- providers: { TaonCmsTagProvider },
2376
- middlewares: { TaonCmsTagMiddleware },
2377
- subscribers: { TaonCmsTagSubscriber },
3073
+ entities: { TaonCmsContentPermissionEntity },
3074
+ controllers: { TaonCmsContentPermissionController },
3075
+ repositories: { TaonCmsContentPermissionRepository },
3076
+ providers: { TaonCmsContentPermissionProvider },
3077
+ middlewares: { TaonCmsContentPermissionMiddleware },
3078
+ subscribers: { TaonCmsContentPermissionSubscriber },
2378
3079
  }));
2379
3080
 
2380
3081
  // THIS FILE IS GENERATED - DO NOT MODIFY
@@ -2390,22 +3091,79 @@ const TaonCmsAbstractContext = createContext(() => ({
2390
3091
  TaonCmsContentRevisionAbstractContext,
2391
3092
  TaonCmsContentTagAbstractContext,
2392
3093
  TaonCmsTagAbstractContext,
3094
+ TaonSessionAbstractContext,
3095
+ },
3096
+ }));
3097
+ // THIS FILE IS GENERATED - DO NOT MODIFY
3098
+
3099
+ ;
3100
+ // THIS FILE IS GENERATED - DO NOT MODIFY
3101
+
3102
+ class TaonCmsAssetsBackofficeComponent {
3103
+ constructor() {
3104
+ this.assets = [
3105
+ { id: 1, name: 'Sample image.jpg' },
3106
+ { id: 2, name: 'Sample document.pdf' },
3107
+ ];
3108
+ this.columns = [
3109
+ { header: 'ID', field: 'id', sortable: true },
3110
+ { header: 'Asset Name', field: 'name', sortable: true },
3111
+ ];
3112
+ }
3113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: TaonCmsAssetsBackofficeComponent, isStandalone: true, selector: "taon-cms-assets-backoffice", ngImport: i0, template: `
3115
+ <h1>CMS assets</h1>
3116
+ <mtx-grid [data]="assets" [columns]="columns"></mtx-grid>
3117
+ `, isInline: true, dependencies: [{ kind: "component", type: MtxGrid, selector: "mtx-grid", inputs: ["displayedColumns", "columns", "data", "length", "loading", "trackBy", "columnResizable", "emptyValuePlaceholder", "pageOnFront", "showPaginator", "pageDisabled", "showFirstLastButtons", "pageIndex", "pageSize", "pageSizeOptions", "hidePageSize", "paginationTemplate", "sortOnFront", "sortActive", "sortDirection", "sortDisableClear", "sortDisabled", "sortStart", "rowHover", "rowStriped", "expandable", "expansionTemplate", "multiSelectable", "multiSelectionWithClick", "rowSelectable", "hideRowSelectionCheckbox", "disableRowClickSelection", "rowSelectionFormatter", "rowClassFormatter", "rowSelected", "cellSelectable", "showToolbar", "toolbarTitle", "toolbarTemplate", "columnHideable", "columnHideableChecked", "columnSortable", "columnPinnable", "columnPinOptions", "showColumnMenuButton", "columnMenuButtonText", "columnMenuButtonType", "columnMenuButtonColor", "columnMenuButtonClass", "columnMenuButtonIcon", "columnMenuButtonFontIcon", "columnMenuButtonSvgIcon", "showColumnMenuHeader", "columnMenuHeaderText", "columnMenuHeaderTemplate", "showColumnMenuFooter", "columnMenuFooterText", "columnMenuFooterTemplate", "noResultText", "noResultTemplate", "headerTemplate", "headerExtraTemplate", "cellTemplate", "useContentRowTemplate", "useContentHeaderRowTemplate", "useContentFooterRowTemplate", "showSummary", "summaryTemplate", "showSidebar", "sidebarTemplate", "showStatusbar", "statusbarTemplate"], outputs: ["page", "sortChange", "rowClick", "rowContextMenu", "expansionChange", "rowSelectedChange", "cellSelectedChange", "columnChange"], exportAs: ["mtxGrid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3118
+ }
3119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, decorators: [{
3120
+ type: Component,
3121
+ args: [{
3122
+ selector: 'taon-cms-assets-backoffice',
3123
+ changeDetection: ChangeDetectionStrategy.OnPush,
3124
+ imports: [MtxGrid],
3125
+ template: `
3126
+ <h1>CMS assets</h1>
3127
+ <mtx-grid [data]="assets" [columns]="columns"></mtx-grid>
3128
+ `,
3129
+ }]
3130
+ }] });
3131
+
3132
+ var taonCmsAssetsBackoffice_component = /*#__PURE__*/Object.freeze({
3133
+ __proto__: null,
3134
+ TaonCmsAssetsBackofficeComponent: TaonCmsAssetsBackofficeComponent
3135
+ });
3136
+
3137
+ const TaonCmsAssetsBackofficeRoutes = [
3138
+ {
3139
+ path: '',
3140
+ loadComponent: () => Promise.resolve().then(function () { return taonCmsAssetsBackoffice_component; }).then(m => m.TaonCmsAssetsBackofficeComponent),
2393
3141
  },
2394
- }));
2395
- // THIS FILE IS GENERATED - DO NOT MODIFY
3142
+ ];
2396
3143
 
2397
- ;
2398
- // THIS FILE IS GENERATED - DO NOT MODIFY
3144
+ var taonCmsAssetsBackoffice_routes = /*#__PURE__*/Object.freeze({
3145
+ __proto__: null,
3146
+ TaonCmsAssetsBackofficeRoutes: TaonCmsAssetsBackofficeRoutes
3147
+ });
2399
3148
 
2400
3149
  //#region imports
2401
3150
  //#endregion
2402
3151
  class TaonCmsBackofficeComponent {
3152
+ constructor() {
3153
+ this.componentLoaded = false;
3154
+ }
3155
+ onRouteActivate(component) {
3156
+ this.componentLoaded = !!component;
3157
+ }
3158
+ onRouteDeactivate(component) {
3159
+ this.componentLoaded = false;
3160
+ }
2403
3161
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2404
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: TaonCmsBackofficeComponent, isStandalone: true, selector: "app-taon-cms-backoffice", ngImport: i0, template: "<router-outlet></router-outlet>\n<p>\n taon-cms-backoffice works!\n</p>", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsBackofficeComponent, isStandalone: true, selector: "app-taon-cms-backoffice", ngImport: i0, template: "@if (!componentLoaded) {\n <code>\n In CMS you can manage content and settings for your website.\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2405
3163
  }
2406
3164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsBackofficeComponent, decorators: [{
2407
3165
  type: Component,
2408
- args: [{ selector: 'app-taon-cms-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, RouterOutlet], template: "<router-outlet></router-outlet>\n<p>\n taon-cms-backoffice works!\n</p>", styles: [":host{display:block}\n"] }]
3166
+ args: [{ selector: 'app-taon-cms-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, RouterOutlet], template: "@if (!componentLoaded) {\n <code>\n In CMS you can manage content and settings for your website.\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n", styles: [":host{display:block}\n"] }]
2409
3167
  }] });
2410
3168
 
2411
3169
  var taonCmsBackoffice_component = /*#__PURE__*/Object.freeze({
@@ -2419,14 +3177,28 @@ const TaonCmsBackofficeRoutes = [
2419
3177
  path: '',
2420
3178
  loadComponent: () => Promise.resolve().then(function () { return taonCmsBackoffice_component; }).then(m => m.TaonCmsBackofficeComponent),
2421
3179
  children: [
2422
- // adminLazyRoute({
2423
- // path: 'dashboard',
2424
- // menuItem: 'Dashboard',
2425
- // icon: 'dashboard',
2426
- // expandable: false,
2427
- // loader: () =>
2428
- // import('./anothermodule.routes').then(m => m.DashboardRoutes),
2429
- // }),
3180
+ adminLazyRoute({
3181
+ path: 'posts',
3182
+ menuItem: 'Posts',
3183
+ expandable: true,
3184
+ icon: 'edit',
3185
+ loader: () => Promise.resolve().then(function () { return index$1; }).then(m => m.TaonCmsPostsBackofficeRoutes),
3186
+ }),
3187
+ adminLazyRoute({
3188
+ path: 'assets',
3189
+ menuItem: 'Assets',
3190
+ expandable: false,
3191
+ icon: 'perm_media',
3192
+ loader: () => Promise.resolve().then(function () { return taonCmsAssetsBackoffice_routes; }).then(m => m.TaonCmsAssetsBackofficeRoutes),
3193
+ }),
3194
+ // adminLazyRoute({
3195
+ // path: 'dashboard',
3196
+ // menuItem: 'Dashboard',
3197
+ // icon: 'dashboard',
3198
+ // expandable: false,
3199
+ // loader: () =>
3200
+ // import('./anothermodule.routes').then(m => m.DashboardRoutes),
3201
+ // }),
2430
3202
  ],
2431
3203
  },
2432
3204
  ];
@@ -2445,9 +3217,6 @@ class TaonCmsCategoryApiService extends TaonBaseAngularService {
2445
3217
  get allMyEntities$() {
2446
3218
  return this.taonCmsCategoryController.getAll().request().observable.pipe(map(res => res.body?.json));
2447
3219
  }
2448
- helloWorld(user) {
2449
- return this.taonCmsCategoryController.helloWord(user).request().observable.pipe(map(res => res.responseText));
2450
- }
2451
3220
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCategoryApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2452
3221
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCategoryApiService }); }
2453
3222
  }
@@ -2513,17 +3282,63 @@ var TaonCmsCommentUtils;
2513
3282
  TaonCmsCommentUtils.isActive = isActive;
2514
3283
  })(TaonCmsCommentUtils || (TaonCmsCommentUtils = {}));
2515
3284
 
3285
+ //#region imports
3286
+ //#endregion
2516
3287
  class TaonCmsContentApiService extends TaonBaseAngularService {
2517
3288
  constructor() {
2518
3289
  super(...arguments);
2519
3290
  this.taonCmsContentController = this.injectController(TaonCmsContentController);
3291
+ this.taonCmsContentStorageController = this.injectController(TaonCmsContentStorageController);
3292
+ }
3293
+ async uploadMedia(file) {
3294
+ const formData = new FormData();
3295
+ formData.append('file', file);
3296
+ const response = await this.taonCmsContentStorageController
3297
+ .uploadFormDataToServer(formData)
3298
+ .request();
3299
+ const objects = response.body.json;
3300
+ if (objects.length !== 1 || !objects[0].key) {
3301
+ throw new Error('The upload did not return a media key.');
3302
+ }
3303
+ return objects[0];
3304
+ }
3305
+ createContent(input) {
3306
+ return this.taonCmsContentController.createContent(input)
3307
+ .request().observable.pipe(map(res => res.body.json));
3308
+ }
3309
+ updateContent(id, input) {
3310
+ return this.taonCmsContentController.updateContent(id, input)
3311
+ .request().observable.pipe(map(res => res.body.json));
3312
+ }
3313
+ deleteContent(id, expectedVersion) {
3314
+ return this.taonCmsContentController.deleteContent(id, expectedVersion)
3315
+ .request().observable.pipe(map(res => res.body.json));
3316
+ }
3317
+ restoreContent(id, input) {
3318
+ return this.taonCmsContentController.restoreContent(id, input)
3319
+ .request().observable.pipe(map(res => res.body.json));
3320
+ }
3321
+ listRevisions(id) {
3322
+ return this.taonCmsContentController.listRevisions(id)
3323
+ .request().observable.pipe(map(res => res.body.json));
3324
+ }
3325
+ listRelatedPosts(id) {
3326
+ return this.taonCmsContentController.listRelatedPosts(id)
3327
+ .request().observable.pipe(map(res => res.body.json));
3328
+ }
3329
+ listPermissions(id) {
3330
+ return this.taonCmsContentController.listPermissions(id)
3331
+ .request().observable.pipe(map(res => res.body.json));
3332
+ }
3333
+ addRelatedPost(id, relatedPostId, expectedVersion) {
3334
+ return this.taonCmsContentController.addRelatedPost(id, relatedPostId, expectedVersion).request().observable.pipe(map(res => res.body.json));
3335
+ }
3336
+ deleteRelatedPost(id, relatedPostId, expectedVersion) {
3337
+ return this.taonCmsContentController.deleteRelatedPost(id, relatedPostId, expectedVersion).request().observable.pipe(map(res => res.body.json));
2520
3338
  }
2521
3339
  get allMyEntities$() {
2522
3340
  return this.taonCmsContentController.getAll().request().observable.pipe(map(res => res.body?.json));
2523
3341
  }
2524
- helloWorld(user) {
2525
- return this.taonCmsContentController.helloWord(user).request().observable.pipe(map(res => res.responseText));
2526
- }
2527
3342
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2528
3343
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService }); }
2529
3344
  }
@@ -2531,18 +3346,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
2531
3346
  type: Injectable
2532
3347
  }] });
2533
3348
 
3349
+ class TaonCmsContentConfigService extends TaonBaseAngularService {
3350
+ constructor() {
3351
+ super(...arguments);
3352
+ this.taonCmsContentProvider = this.injectProvider(TaonCmsContentProvider);
3353
+ }
3354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentConfigService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3355
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentConfigService }); }
3356
+ }
3357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentConfigService, decorators: [{
3358
+ type: Injectable
3359
+ }] });
3360
+
2534
3361
  const TaonCmsContentDefaultsValues = {
2535
3362
  description: '',
2536
3363
  version: 0,
2537
3364
  id: void 0,
3365
+ type: TaonCmsContentType.Normal,
3366
+ videoKey: null,
3367
+ audioKey: null,
3368
+ attachmentKey: null,
2538
3369
  };
2539
3370
 
2540
- var TaonCmsContentState;
2541
- (function (TaonCmsContentState) {
2542
- TaonCmsContentState["Active"] = "active";
2543
- TaonCmsContentState["Inactive"] = "inactive";
2544
- })(TaonCmsContentState || (TaonCmsContentState = {}));
2545
-
2546
3371
  var TaonCmsContentUtils;
2547
3372
  (function (TaonCmsContentUtils) {
2548
3373
  function isActive(state) {
@@ -2630,13 +3455,20 @@ var TaonCmsContentPermissionUtils;
2630
3455
  class TaonCmsContentRevisionApiService extends TaonBaseAngularService {
2631
3456
  constructor() {
2632
3457
  super(...arguments);
3458
+ this.contentController = this.injectController(TaonCmsContentController);
2633
3459
  this.taonCmsContentRevisionController = this.injectController(TaonCmsContentRevisionController);
2634
3460
  }
2635
- get allMyEntities$() {
2636
- return this.taonCmsContentRevisionController.getAll().request().observable.pipe(map(res => res.body?.json));
3461
+ listRevisions(id) {
3462
+ return this.contentController.listRevisions(id)
3463
+ .request().observable.pipe(map(res => res.body.json));
2637
3464
  }
2638
- helloWorld(user) {
2639
- return this.taonCmsContentRevisionController.helloWord(user).request().observable.pipe(map(res => res.responseText));
3465
+ restoreContent(id, input) {
3466
+ return this.contentController.restoreContent(id, input)
3467
+ .request().observable.pipe(map(res => res.body.json));
3468
+ }
3469
+ get allMyEntities$() {
3470
+ return this.taonCmsContentRevisionController.getAll()
3471
+ .request().observable.pipe(map(res => res.body?.json));
2640
3472
  }
2641
3473
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2642
3474
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentRevisionApiService }); }
@@ -2673,9 +3505,6 @@ class TaonCmsContentTagApiService extends TaonBaseAngularService {
2673
3505
  get allMyEntities$() {
2674
3506
  return this.taonCmsContentTagController.getAll().request().observable.pipe(map(res => res.body?.json));
2675
3507
  }
2676
- helloWorld(user) {
2677
- return this.taonCmsContentTagController.helloWord(user).request().observable.pipe(map(res => res.responseText));
2678
- }
2679
3508
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2680
3509
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentTagApiService }); }
2681
3510
  }
@@ -2741,6 +3570,1017 @@ var TaonCmsTagUtils;
2741
3570
  TaonCmsTagUtils.isActive = isActive;
2742
3571
  })(TaonCmsTagUtils || (TaonCmsTagUtils = {}));
2743
3572
 
3573
+ class TaonCmsEditableDirective {
3574
+ constructor() {
3575
+ this.element = inject(ElementRef)
3576
+ .nativeElement;
3577
+ this.sanitizer = inject(DomSanitizer);
3578
+ this.value = '';
3579
+ this.composing = false;
3580
+ this.taonCmsEditableFormat = 'text';
3581
+ this.taonCmsEditableSingleLine = false;
3582
+ this.taonCmsEditableChange = new EventEmitter();
3583
+ }
3584
+ set taonCmsEditable(value) {
3585
+ if (value === this.value) {
3586
+ return;
3587
+ }
3588
+ this.value = value;
3589
+ this.render();
3590
+ }
3591
+ compositionStart() {
3592
+ this.composing = true;
3593
+ }
3594
+ compositionEnd() {
3595
+ this.composing = false;
3596
+ this.onInput();
3597
+ }
3598
+ onInput() {
3599
+ if (this.composing) {
3600
+ return;
3601
+ }
3602
+ const text = this.element.innerText;
3603
+ this.value =
3604
+ this.taonCmsEditableFormat === 'html'
3605
+ ? this.sanitize(this.element.innerHTML)
3606
+ : this.taonCmsEditableSingleLine
3607
+ ? text.replace(/\s*\n\s*/g, ' ')
3608
+ : text;
3609
+ // Remember emitted values so Angular does not rewrite the DOM/caret on input.
3610
+ this.taonCmsEditableChange.emit(this.value);
3611
+ }
3612
+ onBlur() {
3613
+ this.onInput();
3614
+ this.render();
3615
+ }
3616
+ onKeydown(event) {
3617
+ if (this.taonCmsEditableSingleLine && event.key === 'Enter') {
3618
+ event.preventDefault();
3619
+ }
3620
+ }
3621
+ onPaste(event) {
3622
+ event.preventDefault();
3623
+ const selection = this.element.ownerDocument.getSelection();
3624
+ if (!selection?.rangeCount || !event.clipboardData) {
3625
+ return;
3626
+ }
3627
+ const range = selection.getRangeAt(0);
3628
+ if (!this.element.contains(range.commonAncestorContainer)) {
3629
+ return;
3630
+ }
3631
+ const pasted = event.clipboardData.getData('text/plain');
3632
+ const text = this.taonCmsEditableSingleLine
3633
+ ? pasted.replace(/\s*\n\s*/g, ' ')
3634
+ : pasted;
3635
+ range.deleteContents();
3636
+ const node = this.element.ownerDocument.createTextNode(text);
3637
+ range.insertNode(node);
3638
+ range.setStartAfter(node);
3639
+ range.collapse(true);
3640
+ selection.removeAllRanges();
3641
+ selection.addRange(range);
3642
+ this.onInput();
3643
+ }
3644
+ sanitize(value) {
3645
+ return this.sanitizer.sanitize(SecurityContext.HTML, value) ?? '';
3646
+ }
3647
+ render() {
3648
+ if (this.taonCmsEditableFormat === 'html') {
3649
+ this.element.innerHTML = this.sanitize(this.value);
3650
+ }
3651
+ else {
3652
+ this.element.textContent = this.value;
3653
+ }
3654
+ }
3655
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsEditableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3656
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.9", type: TaonCmsEditableDirective, isStandalone: true, selector: "[taonCmsEditable]", inputs: { taonCmsEditableFormat: "taonCmsEditableFormat", taonCmsEditableSingleLine: "taonCmsEditableSingleLine", taonCmsEditable: "taonCmsEditable" }, outputs: { taonCmsEditableChange: "taonCmsEditableChange" }, host: { listeners: { "compositionstart": "compositionStart()", "compositionend": "compositionEnd()", "input": "onInput()", "blur": "onBlur()", "keydown": "onKeydown($event)", "paste": "onPaste($event)" } }, ngImport: i0 }); }
3657
+ }
3658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsEditableDirective, decorators: [{
3659
+ type: Directive,
3660
+ args: [{
3661
+ selector: '[taonCmsEditable]',
3662
+ }]
3663
+ }], propDecorators: { taonCmsEditableFormat: [{
3664
+ type: Input
3665
+ }], taonCmsEditableSingleLine: [{
3666
+ type: Input
3667
+ }], taonCmsEditableChange: [{
3668
+ type: Output
3669
+ }], taonCmsEditable: [{
3670
+ type: Input
3671
+ }], compositionStart: [{
3672
+ type: HostListener,
3673
+ args: ['compositionstart']
3674
+ }], compositionEnd: [{
3675
+ type: HostListener,
3676
+ args: ['compositionend']
3677
+ }], onInput: [{
3678
+ type: HostListener,
3679
+ args: ['input']
3680
+ }], onBlur: [{
3681
+ type: HostListener,
3682
+ args: ['blur']
3683
+ }], onKeydown: [{
3684
+ type: HostListener,
3685
+ args: ['keydown', ['$event']]
3686
+ }], onPaste: [{
3687
+ type: HostListener,
3688
+ args: ['paste', ['$event']]
3689
+ }] } });
3690
+
3691
+ class TaonCmsRevisionChooserComponent {
3692
+ constructor() {
3693
+ this.post = inject(MAT_DIALOG_DATA);
3694
+ this.revisions = signal([], ...(ngDevMode ? [{ debugName: "revisions" }] : []));
3695
+ this.selected = signal(null, ...(ngDevMode ? [{ debugName: "selected" }] : []));
3696
+ this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
3697
+ this.applying = signal(false, ...(ngDevMode ? [{ debugName: "applying" }] : []));
3698
+ this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
3699
+ this.api = inject(TaonCmsContentRevisionApiService);
3700
+ this.ref = inject((MatDialogRef));
3701
+ this.destroyRef = inject(DestroyRef);
3702
+ this.load();
3703
+ }
3704
+ load() {
3705
+ if (this.loading() || this.applying()) {
3706
+ return;
3707
+ }
3708
+ this.selected.set(null);
3709
+ this.loading.set(true);
3710
+ this.error.set('');
3711
+ this.api.listRevisions(this.post.id).pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.loading.set(false))).subscribe({
3712
+ next: revisions => this.revisions.set([...revisions].sort((a, b) => b.revisionNumber - a.revisionNumber)),
3713
+ error: (error) => {
3714
+ console.error('[taon-cms-revision-chooser] Unable to load revisions', error);
3715
+ this.error.set('Revisions could not be loaded. Please try again.');
3716
+ },
3717
+ });
3718
+ }
3719
+ apply() {
3720
+ const revisionNumber = this.selected();
3721
+ if (this.loading() || this.applying()) {
3722
+ return;
3723
+ }
3724
+ if (revisionNumber === null) {
3725
+ this.error.set('Select a revision to restore.');
3726
+ return;
3727
+ }
3728
+ this.applying.set(true);
3729
+ this.error.set('');
3730
+ this.api.restoreContent(this.post.id, {
3731
+ revisionNumber,
3732
+ expectedVersion: this.post.version,
3733
+ }).pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.applying.set(false))).subscribe({
3734
+ next: post => this.ref.close(post),
3735
+ error: (error) => {
3736
+ console.error('[taon-cms-revision-chooser] Unable to restore revision', error);
3737
+ this.error.set('The revision could not be restored. If the post changed, close and ' +
3738
+ 'reopen it to load its latest version.');
3739
+ },
3740
+ });
3741
+ }
3742
+ cancel() {
3743
+ if (!this.applying()) {
3744
+ this.ref.close();
3745
+ }
3746
+ }
3747
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3748
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsRevisionChooserComponent, isStandalone: true, selector: "taon-cms-revision-chooser", providers: [TaonCmsContentRevisionApiService], ngImport: i0, template: "<h2 mat-dialog-title>Restore a revision</h2>\n<mat-dialog-content>\n <p>Restoring replaces the post, including its status, with the selected revision.</p>\n @if (loading()) {\n <p role=\"status\">Loading revisions...</p>\n } @else {\n <mat-radio-group aria-label=\"Post revisions\" [value]=\"selected()\" (change)=\"selected.set($event.value)\" [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button [value]=\"revision.revisionNumber\" [disabled]=\"!revision.snapshot\">\n <strong>Revision {{ revision.revisionNumber }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (revision.createdByUserId !== null && revision.createdByUserId !== undefined) {\n <span>User {{ revision.createdByUserId }}</span>\n }\n @if (!revision.snapshot) {\n <span>Legacy revision - cannot be restored</span>\n }\n </mat-radio-button>\n } @empty {\n <p>No revisions are available.</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" [disabled]=\"loading() || applying()\" (click)=\"load()\">Reload revisions</button>\n }\n @if (applying()) {\n <p role=\"status\">Restoring...</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" [disabled]=\"applying()\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || applying() || selected() === null\" (click)=\"apply()\">Apply</button>\n</mat-dialog-actions>\n", styles: ["mat-radio-group{display:flex;flex-direction:column;gap:1rem}mat-radio-button span{display:block;font-size:.875rem;opacity:.7}[role=alert]{color:#b3261e}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3749
+ }
3750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, decorators: [{
3751
+ type: Component,
3752
+ args: [{ selector: 'taon-cms-revision-chooser', changeDetection: ChangeDetectionStrategy.OnPush, imports: [DatePipe, MatButtonModule, MatDialogModule, MatRadioModule], providers: [TaonCmsContentRevisionApiService], template: "<h2 mat-dialog-title>Restore a revision</h2>\n<mat-dialog-content>\n <p>Restoring replaces the post, including its status, with the selected revision.</p>\n @if (loading()) {\n <p role=\"status\">Loading revisions...</p>\n } @else {\n <mat-radio-group aria-label=\"Post revisions\" [value]=\"selected()\" (change)=\"selected.set($event.value)\" [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button [value]=\"revision.revisionNumber\" [disabled]=\"!revision.snapshot\">\n <strong>Revision {{ revision.revisionNumber }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (revision.createdByUserId !== null && revision.createdByUserId !== undefined) {\n <span>User {{ revision.createdByUserId }}</span>\n }\n @if (!revision.snapshot) {\n <span>Legacy revision - cannot be restored</span>\n }\n </mat-radio-button>\n } @empty {\n <p>No revisions are available.</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" [disabled]=\"loading() || applying()\" (click)=\"load()\">Reload revisions</button>\n }\n @if (applying()) {\n <p role=\"status\">Restoring...</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" [disabled]=\"applying()\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || applying() || selected() === null\" (click)=\"apply()\">Apply</button>\n</mat-dialog-actions>\n", styles: ["mat-radio-group{display:flex;flex-direction:column;gap:1rem}mat-radio-button span{display:block;font-size:.875rem;opacity:.7}[role=alert]{color:#b3261e}\n"] }]
3753
+ }], ctorParameters: () => [] });
3754
+
3755
+ class TaonRelatedPostChooserComponent {
3756
+ constructor() {
3757
+ this.data = inject(MAT_DIALOG_DATA);
3758
+ this.posts = signal([], ...(ngDevMode ? [{ debugName: "posts" }] : []));
3759
+ this.selected = signal(null, ...(ngDevMode ? [{ debugName: "selected" }] : []));
3760
+ this.query = signal('', ...(ngDevMode ? [{ debugName: "query" }] : []));
3761
+ this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
3762
+ this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
3763
+ this.filteredPosts = computed(() => {
3764
+ const query = this.query().trim().toLowerCase();
3765
+ return this.posts().filter(post => post.id !== this.data.postId &&
3766
+ !this.data.excludedIds.includes(post.id) &&
3767
+ `${post.id} ${post.title} ${post.slug}`.toLowerCase().includes(query));
3768
+ }, ...(ngDevMode ? [{ debugName: "filteredPosts" }] : []));
3769
+ this.api = inject(TaonCmsContentApiService);
3770
+ this.ref = inject((MatDialogRef));
3771
+ this.destroyRef = inject(DestroyRef);
3772
+ this.load();
3773
+ }
3774
+ load() {
3775
+ if (this.loading()) {
3776
+ return;
3777
+ }
3778
+ this.loading.set(true);
3779
+ this.selected.set(null);
3780
+ this.error.set('');
3781
+ this.api.allMyEntities$
3782
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.loading.set(false)))
3783
+ .subscribe({
3784
+ next: posts => this.posts.set(posts),
3785
+ error: (error) => {
3786
+ console.error('[taon-related-post-chooser] Unable to load posts', error);
3787
+ this.error.set('Posts could not be loaded. Please try again.');
3788
+ },
3789
+ });
3790
+ }
3791
+ search(event) {
3792
+ if (event.target instanceof HTMLInputElement) {
3793
+ this.query.set(event.target.value);
3794
+ this.selected.set(null);
3795
+ }
3796
+ }
3797
+ choose() {
3798
+ if (this.loading() || this.error()) {
3799
+ return;
3800
+ }
3801
+ const post = this.filteredPosts().find(post => post.id === this.selected());
3802
+ if (!post) {
3803
+ this.error.set('Select a related post.');
3804
+ return;
3805
+ }
3806
+ this.ref.close(post);
3807
+ }
3808
+ cancel() {
3809
+ this.ref.close();
3810
+ }
3811
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3812
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonRelatedPostChooserComponent, isStandalone: true, selector: "taon-related-post-chooser", providers: [TaonCmsContentApiService], ngImport: i0, template: "<h2 mat-dialog-title>Add related post</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>Search posts</span>\n <input type=\"search\" aria-label=\"Search posts by ID, title or slug\" [value]=\"query()\" [disabled]=\"loading()\" (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">Loading posts...</p>\n } @else if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"load()\">Try again</button>\n } @else {\n <mat-radio-group aria-label=\"Related post\" [value]=\"selected()\" (change)=\"selected.set($event.value)\">\n @for (post of filteredPosts(); track post.id) {\n <mat-radio-button [value]=\"post.id\">\n #{{ post.id }} - {{ post.title }} <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>No matching posts available.</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || !!error() || selected() === null\" (click)=\"choose()\">Add related post</button>\n</mat-dialog-actions>\n", styles: [".search-field,mat-radio-group{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.search-field input{padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.slug{display:block;opacity:.7;overflow-wrap:anywhere}.error{color:#b3261e}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3813
+ }
3814
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, decorators: [{
3815
+ type: Component,
3816
+ args: [{ selector: 'taon-related-post-chooser', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatDialogModule, MatRadioModule], providers: [TaonCmsContentApiService], template: "<h2 mat-dialog-title>Add related post</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>Search posts</span>\n <input type=\"search\" aria-label=\"Search posts by ID, title or slug\" [value]=\"query()\" [disabled]=\"loading()\" (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">Loading posts...</p>\n } @else if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"load()\">Try again</button>\n } @else {\n <mat-radio-group aria-label=\"Related post\" [value]=\"selected()\" (change)=\"selected.set($event.value)\">\n @for (post of filteredPosts(); track post.id) {\n <mat-radio-button [value]=\"post.id\">\n #{{ post.id }} - {{ post.title }} <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>No matching posts available.</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || !!error() || selected() === null\" (click)=\"choose()\">Add related post</button>\n</mat-dialog-actions>\n", styles: [".search-field,mat-radio-group{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.search-field input{padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.slug{display:block;opacity:.7;overflow-wrap:anywhere}.error{color:#b3261e}\n"] }]
3817
+ }], ctorParameters: () => [] });
3818
+
3819
+ //#region imports
3820
+ //#endregion
3821
+ class TaonCmsPostComponent {
3822
+ //#endregion
3823
+ //#region constructor
3824
+ constructor() {
3825
+ //#region fields and getters
3826
+ this.post = input(null, ...(ngDevMode ? [{ debugName: "post" }] : []));
3827
+ this.mode = model('view', ...(ngDevMode ? [{ debugName: "mode" }] : []));
3828
+ this.changed = output();
3829
+ this.deleted = output();
3830
+ this.cancelled = output();
3831
+ this.currentPost = signal(null, ...(ngDevMode ? [{ debugName: "currentPost" }] : []));
3832
+ this.draft = signal({
3833
+ type: TaonCmsContentType.Normal,
3834
+ title: '',
3835
+ slug: '',
3836
+ excerpt: '',
3837
+ body: '',
3838
+ videoKey: null,
3839
+ audioKey: null,
3840
+ attachmentKey: null,
3841
+ }, ...(ngDevMode ? [{ debugName: "draft" }] : []));
3842
+ this.postTypes = [
3843
+ { value: TaonCmsContentType.Normal, label: 'Normal post' },
3844
+ { value: TaonCmsContentType.Video, label: 'Video post' },
3845
+ { value: TaonCmsContentType.Audio, label: 'Audio post' },
3846
+ { value: TaonCmsContentType.Attachment, label: 'Attachment post' },
3847
+ ];
3848
+ this.mediaAttachments = [
3849
+ {
3850
+ type: TaonCmsContentType.Video,
3851
+ key: 'videoKey',
3852
+ heading: 'Video Attachment',
3853
+ uploadLabel: 'Upload video',
3854
+ accept: 'video/*',
3855
+ },
3856
+ {
3857
+ type: TaonCmsContentType.Audio,
3858
+ key: 'audioKey',
3859
+ heading: 'Audio Attachment',
3860
+ uploadLabel: 'Upload audio',
3861
+ accept: 'audio/*',
3862
+ },
3863
+ {
3864
+ type: TaonCmsContentType.Attachment,
3865
+ key: 'attachmentKey',
3866
+ heading: 'File Attachment',
3867
+ uploadLabel: 'Upload file',
3868
+ accept: '',
3869
+ },
3870
+ ];
3871
+ this.mediaAttachment = computed(() => this.mediaAttachments.find(media => media.type === this.draft().type), ...(ngDevMode ? [{ debugName: "mediaAttachment" }] : []));
3872
+ this.busy = signal(false, ...(ngDevMode ? [{ debugName: "busy" }] : []));
3873
+ this.uploading = signal(false, ...(ngDevMode ? [{ debugName: "uploading" }] : []));
3874
+ this.dialogOpen = signal(false, ...(ngDevMode ? [{ debugName: "dialogOpen" }] : []));
3875
+ this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
3876
+ this.relatedPosts = signal([], ...(ngDevMode ? [{ debugName: "relatedPosts" }] : []));
3877
+ this.relatedPostsLoading = signal(false, ...(ngDevMode ? [{ debugName: "relatedPostsLoading" }] : []));
3878
+ this.relatedPostsError = signal('', ...(ngDevMode ? [{ debugName: "relatedPostsError" }] : []));
3879
+ this.permissions = signal([], ...(ngDevMode ? [{ debugName: "permissions" }] : []));
3880
+ this.permissionsLoading = signal(false, ...(ngDevMode ? [{ debugName: "permissionsLoading" }] : []));
3881
+ this.permissionsError = signal('', ...(ngDevMode ? [{ debugName: "permissionsError" }] : []));
3882
+ this.permissionOptions = signal([], ...(ngDevMode ? [{ debugName: "permissionOptions" }] : []));
3883
+ this.permissionOptionsLoading = signal(false, ...(ngDevMode ? [{ debugName: "permissionOptionsLoading" }] : []));
3884
+ this.permissionOptionsError = signal('', ...(ngDevMode ? [{ debugName: "permissionOptionsError" }] : []));
3885
+ this.selectedPermissionId = signal(null, ...(ngDevMode ? [{ debugName: "selectedPermissionId" }] : []));
3886
+ this.availablePermissions = computed(() => {
3887
+ const assignedIds = new Set(this.permissions().map(permission => permission.id));
3888
+ return this.permissionOptions().filter(permission => !assignedIds.has(permission.id));
3889
+ }, ...(ngDevMode ? [{ debugName: "availablePermissions" }] : []));
3890
+ this.editing = computed(() => this.mode() === 'edit' || this.mode() === 'add', ...(ngDevMode ? [{ debugName: "editing" }] : []));
3891
+ this.canSave = computed(() => !!this.draft().title.trim() &&
3892
+ !!this.draft().slug.trim() &&
3893
+ !this.relatedPostsLoading() &&
3894
+ !this.relatedPostsError() &&
3895
+ !this.permissionsLoading() &&
3896
+ !this.permissionsError(), ...(ngDevMode ? [{ debugName: "canSave" }] : []));
3897
+ this.canPublish = computed(() => {
3898
+ const post = this.currentPost();
3899
+ return !!post && post.status !== 'published';
3900
+ }, ...(ngDevMode ? [{ debugName: "canPublish" }] : []));
3901
+ this.api = inject(TaonCmsContentApiService);
3902
+ this.permissionApi = inject(TaonPermissionApiService);
3903
+ this.dialog = inject(MatDialog);
3904
+ this.destroyRef = inject(DestroyRef);
3905
+ effect(() => {
3906
+ const post = this.post();
3907
+ untracked(() => this.setPost(post));
3908
+ });
3909
+ effect(() => {
3910
+ if (this.editing()) {
3911
+ untracked(() => this.loadPermissionOptions());
3912
+ }
3913
+ });
3914
+ }
3915
+ //#endregion
3916
+ //#region methods / load related posts
3917
+ loadRelatedPosts() {
3918
+ if (this.busy() || this.relatedPostsLoading()) {
3919
+ return;
3920
+ }
3921
+ const post = this.requirePost();
3922
+ if (!post) {
3923
+ return;
3924
+ }
3925
+ this.relatedPostsLoading.set(true);
3926
+ this.relatedPostsError.set('');
3927
+ this.relatedPostsLoad = this.api
3928
+ .listRelatedPosts(post.id)
3929
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.relatedPostsLoading.set(false)))
3930
+ .subscribe({
3931
+ next: posts => this.relatedPosts.set(posts),
3932
+ error: (error) => {
3933
+ console.error('[taon-cms-post] Unable to load related posts', error);
3934
+ this.relatedPostsError.set('Related posts could not be loaded. Please try again.');
3935
+ },
3936
+ });
3937
+ }
3938
+ //#endregion
3939
+ //#region methods / add related post
3940
+ addRelatedPost() {
3941
+ if (!this.editing() ||
3942
+ this.busy() ||
3943
+ this.dialogOpen() ||
3944
+ this.relatedPostsLoading() ||
3945
+ this.relatedPostsError()) {
3946
+ return;
3947
+ }
3948
+ this.dialogOpen.set(true);
3949
+ const ref = this.dialog.open(TaonRelatedPostChooserComponent, {
3950
+ data: {
3951
+ postId: this.currentPost()?.id,
3952
+ excludedIds: this.relatedPosts().map(post => post.id),
3953
+ },
3954
+ width: '560px',
3955
+ maxWidth: '95vw',
3956
+ disableClose: true,
3957
+ });
3958
+ ref
3959
+ .afterClosed()
3960
+ .pipe(takeUntilDestroyed(this.destroyRef))
3961
+ .subscribe(post => {
3962
+ this.dialogOpen.set(false);
3963
+ if (post &&
3964
+ post.id !== this.currentPost()?.id &&
3965
+ !this.relatedPosts().some(related => related.id === post.id)) {
3966
+ this.relatedPosts.update(posts => [...posts, post]);
3967
+ }
3968
+ });
3969
+ }
3970
+ //#endregion
3971
+ //#region methods / remove related post
3972
+ removeRelatedPost(id) {
3973
+ if (!this.editing() ||
3974
+ this.busy() ||
3975
+ this.dialogOpen() ||
3976
+ this.relatedPostsLoading() ||
3977
+ this.relatedPostsError()) {
3978
+ return;
3979
+ }
3980
+ this.relatedPosts.update(posts => posts.filter(post => post.id !== id));
3981
+ }
3982
+ //#endregion
3983
+ //#region methods / load permissions
3984
+ loadPermissions() {
3985
+ if (this.busy() || this.permissionsLoading()) {
3986
+ return;
3987
+ }
3988
+ const post = this.requirePost();
3989
+ if (!post) {
3990
+ return;
3991
+ }
3992
+ this.permissionsLoading.set(true);
3993
+ this.permissionsError.set('');
3994
+ this.permissionsLoad = this.api
3995
+ .listPermissions(post.id)
3996
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.permissionsLoading.set(false)))
3997
+ .subscribe({
3998
+ next: permissions => this.permissions.set(permissions),
3999
+ error: (error) => {
4000
+ console.error('[taon-cms-post] Unable to load permissions', error);
4001
+ this.permissionsError.set('Permissions could not be loaded. Please try again.');
4002
+ },
4003
+ });
4004
+ }
4005
+ //#endregion
4006
+ //#region methods / add permission
4007
+ addPermission() {
4008
+ if (!this.editing() || this.busy() || this.dialogOpen()) {
4009
+ return;
4010
+ }
4011
+ const permissionId = this.selectedPermissionId();
4012
+ const permission = this.availablePermissions().find(item => item.id === permissionId);
4013
+ if (permission) {
4014
+ this.permissions.update(permissions => [...permissions, permission]);
4015
+ this.selectedPermissionId.set(null);
4016
+ }
4017
+ }
4018
+ //#endregion
4019
+ //#region methods / remove permission
4020
+ removePermission(id) {
4021
+ if (!this.editing() || this.busy() || this.dialogOpen()) {
4022
+ return;
4023
+ }
4024
+ this.permissions.update(items => items.filter(permission => permission.id !== id));
4025
+ }
4026
+ //#endregion
4027
+ //#region methods / load permission options
4028
+ loadPermissionOptions() {
4029
+ if (this.permissionOptionsLoading() ||
4030
+ this.permissionOptions().length > 0) {
4031
+ return;
4032
+ }
4033
+ this.permissionOptionsLoading.set(true);
4034
+ this.permissionOptionsError.set('');
4035
+ this.permissionApi.allMyEntities$
4036
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.permissionOptionsLoading.set(false)))
4037
+ .subscribe({
4038
+ next: permissions => this.permissionOptions.set(permissions),
4039
+ error: (error) => {
4040
+ console.error('[taon-cms-post] Unable to load permission options', error);
4041
+ this.permissionOptionsError.set('Available permissions could not be loaded. Please try again.');
4042
+ },
4043
+ });
4044
+ }
4045
+ //#endregion
4046
+ //#region methods / update draft
4047
+ updateDraft(field, value) {
4048
+ this.draft.update(draft => ({ ...draft, [field]: value }));
4049
+ }
4050
+ //#endregion
4051
+ //#region methods / file selected
4052
+ async fileSelected(event) {
4053
+ if (!(event.target instanceof HTMLInputElement)) {
4054
+ this.error.set('Unable to read the selected media file.');
4055
+ return;
4056
+ }
4057
+ const input = event.target;
4058
+ const file = input.files?.[0];
4059
+ if (!file) {
4060
+ return;
4061
+ }
4062
+ const media = this.mediaAttachment();
4063
+ if (!media || !this.editing() || this.busy() || this.dialogOpen()) {
4064
+ input.value = '';
4065
+ return;
4066
+ }
4067
+ const draft = this.draft();
4068
+ this.busy.set(true);
4069
+ this.uploading.set(true);
4070
+ this.error.set('');
4071
+ try {
4072
+ const object = await this.api.uploadMedia(file);
4073
+ if (!this.destroyRef.destroyed && this.draft() === draft) {
4074
+ this.updateDraft(media.key, object.key);
4075
+ }
4076
+ }
4077
+ catch (error) {
4078
+ console.error('[taon-cms-post] Unable to upload media', error);
4079
+ this.error.set('The media could not be uploaded. Please try again.');
4080
+ }
4081
+ finally {
4082
+ this.busy.set(false);
4083
+ this.uploading.set(false);
4084
+ input.value = '';
4085
+ }
4086
+ }
4087
+ //#endregion
4088
+ //#region methods / remove media
4089
+ removeMedia() {
4090
+ const media = this.mediaAttachment();
4091
+ if (!media || !this.editing() || this.busy() || this.dialogOpen()) {
4092
+ return;
4093
+ }
4094
+ this.updateDraft(media.key, null);
4095
+ }
4096
+ //#endregion
4097
+ //#region methods / update slug
4098
+ updateSlug(event) {
4099
+ if (event.target instanceof HTMLInputElement) {
4100
+ this.updateDraft('slug', event.target.value);
4101
+ }
4102
+ }
4103
+ //#endregion
4104
+ //#region methods / edit
4105
+ edit() {
4106
+ if (this.mode() !== 'view' || this.busy() || this.dialogOpen()) {
4107
+ return;
4108
+ }
4109
+ if (!this.requirePost()) {
4110
+ return;
4111
+ }
4112
+ this.error.set('');
4113
+ this.mode.set('edit');
4114
+ }
4115
+ //#endregion
4116
+ //#region methods / cancel
4117
+ cancel() {
4118
+ if (this.busy() || this.dialogOpen()) {
4119
+ return;
4120
+ }
4121
+ this.setPost(this.currentPost());
4122
+ this.error.set('');
4123
+ if (this.editing()) {
4124
+ this.mode.set('view');
4125
+ }
4126
+ this.cancelled.emit();
4127
+ }
4128
+ //#endregion
4129
+ //#region methods / save
4130
+ save() {
4131
+ if (this.busy() || this.dialogOpen() || !this.editing()) {
4132
+ return;
4133
+ }
4134
+ if (!this.canSave()) {
4135
+ this.error.set('A title and slug are required.');
4136
+ return;
4137
+ }
4138
+ if (this.mode() === 'add') {
4139
+ this.persist(this.api.createContent({
4140
+ ...this.draft(),
4141
+ relatedPostIds: this.relatedPosts().map(post => post.id),
4142
+ permissionIds: this.permissions().map(permission => permission.id),
4143
+ }));
4144
+ }
4145
+ else {
4146
+ const post = this.requirePost();
4147
+ if (post) {
4148
+ this.persist(this.api.updateContent(post.id, this.updateInput(post)));
4149
+ }
4150
+ }
4151
+ }
4152
+ //#endregion
4153
+ //#region methods / publish
4154
+ publish() {
4155
+ if (this.busy() ||
4156
+ this.dialogOpen() ||
4157
+ !this.canPublish() ||
4158
+ this.mode() === 'view-clean' ||
4159
+ this.mode() === 'add') {
4160
+ return;
4161
+ }
4162
+ if (this.editing() && !this.canSave()) {
4163
+ this.error.set('A title and slug are required.');
4164
+ return;
4165
+ }
4166
+ const post = this.requirePost();
4167
+ if (post) {
4168
+ this.persist(this.api.updateContent(post.id, {
4169
+ ...(this.editing()
4170
+ ? this.updateInput(post)
4171
+ : { expectedVersion: post.version }),
4172
+ status: 'published',
4173
+ publishedAt: new Date(),
4174
+ }));
4175
+ }
4176
+ }
4177
+ //#endregion
4178
+ //#region methods / revert
4179
+ revert() {
4180
+ const post = this.requirePost();
4181
+ if (!post ||
4182
+ this.busy() ||
4183
+ this.dialogOpen() ||
4184
+ this.mode() === 'view-clean') {
4185
+ return;
4186
+ }
4187
+ this.dialogOpen.set(true);
4188
+ const ref = this.dialog.open(TaonCmsRevisionChooserComponent, {
4189
+ data: post,
4190
+ width: '560px',
4191
+ maxWidth: '95vw',
4192
+ disableClose: true,
4193
+ });
4194
+ ref
4195
+ .afterClosed()
4196
+ .pipe(takeUntilDestroyed(this.destroyRef))
4197
+ .subscribe(restored => {
4198
+ this.dialogOpen.set(false);
4199
+ if (restored) {
4200
+ this.acceptPost(restored);
4201
+ }
4202
+ });
4203
+ }
4204
+ //#endregion
4205
+ //#region methods / delete
4206
+ delete() {
4207
+ const post = this.requirePost();
4208
+ if (!post ||
4209
+ this.busy() ||
4210
+ this.dialogOpen() ||
4211
+ this.mode() === 'view-clean') {
4212
+ return;
4213
+ }
4214
+ this.dialogOpen.set(true);
4215
+ const ref = this.dialog.open(TaonConfirmDialogComponent, {
4216
+ data: {
4217
+ title: 'Delete post?',
4218
+ message: 'This archives the post. It can be restored from its revisions.',
4219
+ confirmText: 'Delete',
4220
+ },
4221
+ });
4222
+ ref
4223
+ .afterClosed()
4224
+ .pipe(takeUntilDestroyed(this.destroyRef))
4225
+ .subscribe(confirmed => {
4226
+ this.dialogOpen.set(false);
4227
+ if (confirmed) {
4228
+ this.persist(this.api.deleteContent(post.id, post.version), true);
4229
+ }
4230
+ });
4231
+ }
4232
+ //#endregion
4233
+ //#region methods / update input
4234
+ updateInput(post) {
4235
+ return {
4236
+ ...this.draft(),
4237
+ relatedPostIds: this.relatedPosts().map(related => related.id),
4238
+ permissionIds: this.permissions().map(permission => permission.id),
4239
+ expectedVersion: post.version,
4240
+ };
4241
+ }
4242
+ //#endregion
4243
+ //#region methods / require post
4244
+ requirePost() {
4245
+ const post = this.currentPost();
4246
+ if (!post) {
4247
+ this.error.set('No post is loaded.');
4248
+ }
4249
+ return post;
4250
+ }
4251
+ //#endregion
4252
+ //#region methods / set post
4253
+ setPost(post) {
4254
+ this.relatedPostsLoad?.unsubscribe();
4255
+ this.permissionsLoad?.unsubscribe();
4256
+ this.relatedPostsLoading.set(false);
4257
+ this.relatedPostsError.set('');
4258
+ this.permissionsLoading.set(false);
4259
+ this.permissionsError.set('');
4260
+ this.currentPost.set(post);
4261
+ this.relatedPosts.set(post?.relatedPosts ?? []);
4262
+ this.permissions.set(post?.permissions ?? []);
4263
+ this.selectedPermissionId.set(null);
4264
+ this.draft.set({
4265
+ type: post?.type ?? TaonCmsContentType.Normal,
4266
+ title: post?.title ?? '',
4267
+ slug: post?.slug ?? '',
4268
+ excerpt: post?.excerpt ?? '',
4269
+ body: post?.body ?? '',
4270
+ videoKey: post?.videoKey ?? null,
4271
+ audioKey: post?.audioKey ?? null,
4272
+ attachmentKey: post?.attachmentKey ?? null,
4273
+ });
4274
+ if (post &&
4275
+ post.relatedPosts === undefined &&
4276
+ this.mode() !== 'view-clean') {
4277
+ this.loadRelatedPosts();
4278
+ }
4279
+ if (post &&
4280
+ post.permissions === undefined &&
4281
+ this.mode() !== 'view-clean') {
4282
+ this.loadPermissions();
4283
+ }
4284
+ }
4285
+ //#endregion
4286
+ //#region methods / accept post
4287
+ acceptPost(post) {
4288
+ this.setPost(post);
4289
+ this.error.set('');
4290
+ this.mode.set('view');
4291
+ this.changed.emit(post);
4292
+ }
4293
+ //#endregion
4294
+ //#region methods / persist
4295
+ persist(request, deleting = false) {
4296
+ if (this.busy() || this.dialogOpen() || this.mode() === 'view-clean') {
4297
+ return;
4298
+ }
4299
+ this.busy.set(true);
4300
+ this.error.set('');
4301
+ request
4302
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.busy.set(false)))
4303
+ .subscribe({
4304
+ next: post => {
4305
+ this.acceptPost(post);
4306
+ if (deleting) {
4307
+ this.deleted.emit(post);
4308
+ }
4309
+ },
4310
+ error: (error) => {
4311
+ console.error('[taon-cms-post] Unable to save post', error);
4312
+ this.error.set('The post could not be saved. Check the slug and your connection. ' +
4313
+ 'If another user changed it, close and reopen the post before retrying.');
4314
+ },
4315
+ });
4316
+ }
4317
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4318
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostComponent, isStandalone: true, selector: "taon-cms-post", inputs: { post: { classPropertyName: "post", publicName: "post", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mode: "modeChange", changed: "changed", deleted: "deleted", cancelled: "cancelled" }, providers: [TaonCmsContentApiService, TaonPermissionApiService], ngImport: i0, template: "@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{ mode() === 'add' ? 'New draft' : currentPost()?.status }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !canSave()\" (click)=\"save()\">\n {{ mode() === 'add' ? 'Add' : 'Save' }}\n </button>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"cancel()\">Cancel</button>\n } @else if (currentPost()) {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"edit()\">\n <mat-icon>edit</mat-icon> Edit\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\" (click)=\"publish()\">Publish</button>\n }\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"revert()\">\n <mat-icon>history</mat-icon> Revert\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"delete()\">\n <mat-icon>delete</mat-icon> Delete\n </button>\n }\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{ uploading() ? 'Uploading...' : 'Saving...' }}</span>\n }\n </header>\n @if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n }\n}\n\n<article class=\"post-article\" [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n aria-label=\"Post type\"\n [value]=\"draft().type\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"updateDraft('type', $event.value)\">\n @for (type of postTypes; track type.value) {\n <mat-radio-button [value]=\"type.value\">{{ type.label }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post title\"\n aria-required=\"true\"\n data-placeholder=\"Title\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditableSingleLine]=\"true\"\n [taonCmsEditable]=\"draft().title\"\n (taonCmsEditableChange)=\"updateDraft('title', $event)\"></div>\n <div\n class=\"post-excerpt editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post excerpt\"\n aria-multiline=\"true\"\n data-placeholder=\"A short introduction...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <div\n class=\"post-body editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post body\"\n aria-multiline=\"true\"\n data-placeholder=\"Tell your story...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n taonCmsEditableFormat=\"html\"\n [taonCmsEditable]=\"draft().body\"\n (taonCmsEditableChange)=\"updateDraft('body', $event)\"></div>\n <label class=\"slug-field\">\n <span>URL slug</span>\n <input aria-label=\"URL slug\" [value]=\"draft().slug\" [disabled]=\"busy() || dialogOpen()\" (input)=\"updateSlug($event)\" placeholder=\"my-post\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section class=\"media-attachment\" aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (draft()[media.key]; as key) {\n <p>Attached file: {{ key }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeMedia()\">Remove</button>\n } @else {\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"mediaInput.click()\">{{ media.uploadLabel }}</button>\n }\n </section>\n }\n <section class=\"related-posts\" aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">Related posts</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">Loading related posts...</p>\n } @else if (relatedPostsError()) {\n <p class=\"error\" role=\"alert\">{{ relatedPostsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadRelatedPosts()\">Try again</button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove related post ' + post.title\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No related posts yet.</li>\n }\n </ul>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> Add related post\n </button>\n }\n </section>\n <section class=\"post-permissions\" aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">Allow Read only with Permissions</h2>\n @if (permissionsLoading()) {\n <p role=\"status\">Loading assigned permissions...</p>\n } @else if (permissionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadPermissions()\">Try again</button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove permission ' + permission.name\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No permissions assigned.</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionOptionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\" (click)=\"loadPermissionOptions()\">Try again</button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>Permission</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (permission of availablePermissions(); track permission.id) {\n <mat-option [value]=\"permission.id\">{{ permission.name }} ({{ permission.code }})</mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">No permissions available</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !selectedPermissionId()\" (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> Assign permission\n </button>\n </div>\n }\n }\n </section>\n } @else if (currentPost(); as post) {\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div class=\"post-body\" [innerHTML]=\"post.body\"></div>\n } @else {\n <p role=\"status\">No post is loaded.</p>\n }\n</article>", styles: [":host{display:block}.post-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem;border-bottom:1px solid rgba(136,136,136,.2)}.post-status{margin-right:auto;text-transform:capitalize;opacity:.7}.buttons{display:flex;flex-wrap:wrap;gap:.5rem}.post-article{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,4rem) 1.5rem;overflow-wrap:anywhere}.post-title{margin:0 0 1.5rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em}.post-excerpt{margin:0 0 2rem;font-size:1.35rem;line-height:1.6;opacity:.7;white-space:pre-wrap}.post-body{font-family:Georgia,Times New Roman,serif;font-size:1.2rem;line-height:1.8;white-space:pre-wrap}.editable{min-height:1.2em;outline:none}.editable:focus{box-shadow:-3px 0 #8885}.editable:empty:before{content:attr(data-placeholder);opacity:.4;pointer-events:none}.post-body.editable{min-height:12rem}.slug-field{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid rgba(136,136,136,.2);font-size:.875rem}.slug-field input{flex:1;min-width:160px;padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.error{padding:1rem;color:#b3261e}.post-type-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.media-attachment,.related-posts,.post-permissions{margin-top:1.5rem;font-size:.875rem}.media-attachment h2,.related-posts h2,.post-permissions h2{font-size:1rem}.related-posts ul,.post-permissions ul{padding:0;list-style:none}.related-posts li,.post-permissions li{display:flex;align-items:center;justify-content:space-between;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: TaonCmsEditableDirective, selector: "[taonCmsEditable]", inputs: ["taonCmsEditableFormat", "taonCmsEditableSingleLine", "taonCmsEditable"], outputs: ["taonCmsEditableChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4319
+ }
4320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, decorators: [{
4321
+ type: Component,
4322
+ args: [{ selector: 'taon-cms-post', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4323
+ MatButtonModule,
4324
+ MatFormFieldModule,
4325
+ MatIconModule,
4326
+ MatRadioModule,
4327
+ MatSelectModule,
4328
+ TaonCmsEditableDirective,
4329
+ ], providers: [TaonCmsContentApiService, TaonPermissionApiService], template: "@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{ mode() === 'add' ? 'New draft' : currentPost()?.status }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !canSave()\" (click)=\"save()\">\n {{ mode() === 'add' ? 'Add' : 'Save' }}\n </button>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"cancel()\">Cancel</button>\n } @else if (currentPost()) {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"edit()\">\n <mat-icon>edit</mat-icon> Edit\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\" (click)=\"publish()\">Publish</button>\n }\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"revert()\">\n <mat-icon>history</mat-icon> Revert\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"delete()\">\n <mat-icon>delete</mat-icon> Delete\n </button>\n }\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{ uploading() ? 'Uploading...' : 'Saving...' }}</span>\n }\n </header>\n @if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n }\n}\n\n<article class=\"post-article\" [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n aria-label=\"Post type\"\n [value]=\"draft().type\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"updateDraft('type', $event.value)\">\n @for (type of postTypes; track type.value) {\n <mat-radio-button [value]=\"type.value\">{{ type.label }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post title\"\n aria-required=\"true\"\n data-placeholder=\"Title\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditableSingleLine]=\"true\"\n [taonCmsEditable]=\"draft().title\"\n (taonCmsEditableChange)=\"updateDraft('title', $event)\"></div>\n <div\n class=\"post-excerpt editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post excerpt\"\n aria-multiline=\"true\"\n data-placeholder=\"A short introduction...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <div\n class=\"post-body editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post body\"\n aria-multiline=\"true\"\n data-placeholder=\"Tell your story...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n taonCmsEditableFormat=\"html\"\n [taonCmsEditable]=\"draft().body\"\n (taonCmsEditableChange)=\"updateDraft('body', $event)\"></div>\n <label class=\"slug-field\">\n <span>URL slug</span>\n <input aria-label=\"URL slug\" [value]=\"draft().slug\" [disabled]=\"busy() || dialogOpen()\" (input)=\"updateSlug($event)\" placeholder=\"my-post\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section class=\"media-attachment\" aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (draft()[media.key]; as key) {\n <p>Attached file: {{ key }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeMedia()\">Remove</button>\n } @else {\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"mediaInput.click()\">{{ media.uploadLabel }}</button>\n }\n </section>\n }\n <section class=\"related-posts\" aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">Related posts</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">Loading related posts...</p>\n } @else if (relatedPostsError()) {\n <p class=\"error\" role=\"alert\">{{ relatedPostsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadRelatedPosts()\">Try again</button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove related post ' + post.title\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No related posts yet.</li>\n }\n </ul>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> Add related post\n </button>\n }\n </section>\n <section class=\"post-permissions\" aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">Allow Read only with Permissions</h2>\n @if (permissionsLoading()) {\n <p role=\"status\">Loading assigned permissions...</p>\n } @else if (permissionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadPermissions()\">Try again</button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove permission ' + permission.name\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No permissions assigned.</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionOptionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\" (click)=\"loadPermissionOptions()\">Try again</button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>Permission</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (permission of availablePermissions(); track permission.id) {\n <mat-option [value]=\"permission.id\">{{ permission.name }} ({{ permission.code }})</mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">No permissions available</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !selectedPermissionId()\" (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> Assign permission\n </button>\n </div>\n }\n }\n </section>\n } @else if (currentPost(); as post) {\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div class=\"post-body\" [innerHTML]=\"post.body\"></div>\n } @else {\n <p role=\"status\">No post is loaded.</p>\n }\n</article>", styles: [":host{display:block}.post-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem;border-bottom:1px solid rgba(136,136,136,.2)}.post-status{margin-right:auto;text-transform:capitalize;opacity:.7}.buttons{display:flex;flex-wrap:wrap;gap:.5rem}.post-article{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,4rem) 1.5rem;overflow-wrap:anywhere}.post-title{margin:0 0 1.5rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em}.post-excerpt{margin:0 0 2rem;font-size:1.35rem;line-height:1.6;opacity:.7;white-space:pre-wrap}.post-body{font-family:Georgia,Times New Roman,serif;font-size:1.2rem;line-height:1.8;white-space:pre-wrap}.editable{min-height:1.2em;outline:none}.editable:focus{box-shadow:-3px 0 #8885}.editable:empty:before{content:attr(data-placeholder);opacity:.4;pointer-events:none}.post-body.editable{min-height:12rem}.slug-field{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid rgba(136,136,136,.2);font-size:.875rem}.slug-field input{flex:1;min-width:160px;padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.error{padding:1rem;color:#b3261e}.post-type-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.media-attachment,.related-posts,.post-permissions{margin-top:1.5rem;font-size:.875rem}.media-attachment h2,.related-posts h2,.post-permissions h2{font-size:1rem}.related-posts ul,.post-permissions ul{padding:0;list-style:none}.related-posts li,.post-permissions li{display:flex;align-items:center;justify-content:space-between;gap:.5rem}\n"] }]
4330
+ }], ctorParameters: () => [], propDecorators: { post: [{ type: i0.Input, args: [{ isSignal: true, alias: "post", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }, { type: i0.Output, args: ["modeChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], deleted: [{ type: i0.Output, args: ["deleted"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }] } });
4331
+
4332
+ var taonCmsPost_component = /*#__PURE__*/Object.freeze({
4333
+ __proto__: null,
4334
+ TaonCmsPostComponent: TaonCmsPostComponent
4335
+ });
4336
+
4337
+ //#endregion
4338
+ const TaonCmsPostRoutes = [
4339
+ {
4340
+ path: '',
4341
+ loadComponent: () => Promise.resolve().then(function () { return taonCmsPost_component; }).then(m => m.TaonCmsPostComponent),
4342
+ children: [
4343
+ // adminLazyRoute({
4344
+ // path: 'dashboard',
4345
+ // menuItem: 'Dashboard',
4346
+ // icon: 'dashboard',
4347
+ // expandable: false,
4348
+ // loader: () =>
4349
+ // import('./anothermodule.routes').then(m => m.DashboardRoutes),
4350
+ // }),
4351
+ ],
4352
+ },
4353
+ ];
4354
+ /**
4355
+ * By default exporting TaonCmsPostRoutes,
4356
+ * the command `taon generate:app:routes`
4357
+ * will automatically add them to the root routes in ./src/app.ts.
4358
+ */
4359
+ // export default TaonCmsPostRoutes;
4360
+
4361
+ class TaonCmsPostDetailsPageComponent {
4362
+ constructor() {
4363
+ this.post$ = inject(ActivatedRoute).data.pipe(map$1(data => data['post']));
4364
+ }
4365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4366
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostDetailsPageComponent, isStandalone: true, selector: "taon-cms-post-details-page", ngImport: i0, template: `
4367
+ @if (post$ | async; as post) {
4368
+ <a mat-button routerLink="../">Back to Posts</a>
4369
+ <taon-cms-post [post]="post"></taon-cms-post>
4370
+ }
4371
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: TaonCmsPostComponent, selector: "taon-cms-post", inputs: ["post", "mode"], outputs: ["modeChange", "changed", "deleted", "cancelled"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4372
+ }
4373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, decorators: [{
4374
+ type: Component,
4375
+ args: [{
4376
+ selector: 'taon-cms-post-details-page',
4377
+ changeDetection: ChangeDetectionStrategy.OnPush,
4378
+ imports: [AsyncPipe, MatButtonModule, RouterLink, TaonCmsPostComponent],
4379
+ template: `
4380
+ @if (post$ | async; as post) {
4381
+ <a mat-button routerLink="../">Back to Posts</a>
4382
+ <taon-cms-post [post]="post"></taon-cms-post>
4383
+ }
4384
+ `,
4385
+ }]
4386
+ }] });
4387
+
4388
+ var taonCmsPostDetailsPage_component = /*#__PURE__*/Object.freeze({
4389
+ __proto__: null,
4390
+ TaonCmsPostDetailsPageComponent: TaonCmsPostDetailsPageComponent
4391
+ });
4392
+
4393
+ class TaonCmsPostEditDialogComponent {
4394
+ constructor() {
4395
+ this.data = inject(MAT_DIALOG_DATA);
4396
+ this.editor = viewChild(TaonCmsPostComponent, ...(ngDevMode ? [{ debugName: "editor" }] : []));
4397
+ this.changed = new EventEmitter();
4398
+ this.ref = inject((MatDialogRef));
4399
+ }
4400
+ close() {
4401
+ if (!this.editor()?.busy() && !this.editor()?.dialogOpen()) {
4402
+ this.ref.close();
4403
+ }
4404
+ }
4405
+ deleted(post) {
4406
+ this.ref.close(post);
4407
+ }
4408
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostEditDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4409
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.9", type: TaonCmsPostEditDialogComponent, isStandalone: true, selector: "taon-cms-post-edit-dialog", viewQueries: [{ propertyName: "editor", first: true, predicate: TaonCmsPostComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<header class=\"dialog-header\">\n <h2>{{ data.mode === 'add' ? 'Add post' : 'Manage post' }}</h2>\n <button mat-icon-button type=\"button\" aria-label=\"Close post editor\" [disabled]=\"editor()?.busy() || editor()?.dialogOpen()\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</header>\n<taon-cms-post\n [post]=\"data.post ?? null\"\n [mode]=\"data.mode\"\n (changed)=\"changed.emit($event)\"\n (deleted)=\"deleted($event)\"\n (cancelled)=\"close()\" />\n", styles: [":host{display:block;height:100%;overflow-y:auto}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid rgba(136,136,136,.2)}.dialog-header h2{margin:0;font-size:1rem;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TaonCmsPostComponent, selector: "taon-cms-post", inputs: ["post", "mode"], outputs: ["modeChange", "changed", "deleted", "cancelled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4410
+ }
4411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostEditDialogComponent, decorators: [{
4412
+ type: Component,
4413
+ args: [{ selector: 'taon-cms-post-edit-dialog', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatDialogModule, MatIconModule, TaonCmsPostComponent], template: "<header class=\"dialog-header\">\n <h2>{{ data.mode === 'add' ? 'Add post' : 'Manage post' }}</h2>\n <button mat-icon-button type=\"button\" aria-label=\"Close post editor\" [disabled]=\"editor()?.busy() || editor()?.dialogOpen()\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</header>\n<taon-cms-post\n [post]=\"data.post ?? null\"\n [mode]=\"data.mode\"\n (changed)=\"changed.emit($event)\"\n (deleted)=\"deleted($event)\"\n (cancelled)=\"close()\" />\n", styles: [":host{display:block;height:100%;overflow-y:auto}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid rgba(136,136,136,.2)}.dialog-header h2{margin:0;font-size:1rem;font-weight:500}\n"] }]
4414
+ }], propDecorators: { editor: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TaonCmsPostComponent), { isSignal: true }] }] } });
4415
+
4416
+ //#region imports
4417
+ //#endregion
4418
+ class TaonCmsPostsBackofficeComponent {
4419
+ constructor() {
4420
+ this.taonCmsContentApiService = inject(TaonCmsContentApiService);
4421
+ this.posts = signal([], ...(ngDevMode ? [{ debugName: "posts" }] : []));
4422
+ this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
4423
+ this.deleting = signal(null, ...(ngDevMode ? [{ debugName: "deleting" }] : []));
4424
+ this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
4425
+ this.dialog = inject(MatDialog);
4426
+ this.route = inject(ActivatedRoute);
4427
+ this.router = inject(Router);
4428
+ this.destroyRef = inject(DestroyRef);
4429
+ this.cancelLoad$ = new Subject();
4430
+ this.columns = [
4431
+ { header: 'ID', field: 'id', sortable: true },
4432
+ { header: 'Title', field: 'title', sortable: true },
4433
+ { header: 'Status', field: 'status', sortable: true },
4434
+ {
4435
+ header: 'Actions',
4436
+ field: 'actions',
4437
+ type: 'button',
4438
+ buttons: [
4439
+ {
4440
+ type: 'icon',
4441
+ icon: 'edit',
4442
+ tooltip: 'Edit post',
4443
+ click: (post) => this.edit(post),
4444
+ },
4445
+ {
4446
+ type: 'icon',
4447
+ icon: 'open_in_new',
4448
+ tooltip: 'Post details',
4449
+ click: (post) => this.openDetails(post),
4450
+ },
4451
+ {
4452
+ type: 'icon',
4453
+ icon: 'delete',
4454
+ tooltip: 'Delete (archive) post',
4455
+ disabled: (post) => post.status === 'archived' || this.deleting() !== null,
4456
+ click: (post) => this.delete(post),
4457
+ },
4458
+ ],
4459
+ },
4460
+ ];
4461
+ }
4462
+ get crud() {
4463
+ return this.taonCmsContentApiService.taonCmsContentController;
4464
+ }
4465
+ reload() {
4466
+ this.datatable.reload();
4467
+ }
4468
+ ngAfterViewInit() {
4469
+ this.reload();
4470
+ }
4471
+ add() {
4472
+ this.openEditor({ mode: 'add' });
4473
+ }
4474
+ edit(post) {
4475
+ this.openEditor({ mode: 'edit', post });
4476
+ }
4477
+ openDetails(post) {
4478
+ const postsRoute = this.route.parent;
4479
+ if (!postsRoute) {
4480
+ this.error.set('The Post details route is unavailable.');
4481
+ return;
4482
+ }
4483
+ void this.router.navigate([post.id], { relativeTo: postsRoute });
4484
+ }
4485
+ delete(post) {
4486
+ if (this.deleting() !== null || post.status === 'archived') {
4487
+ return;
4488
+ }
4489
+ this.deleting.set(post.id);
4490
+ const ref = this.dialog.open(TaonConfirmDialogComponent, {
4491
+ data: {
4492
+ title: 'Delete post?',
4493
+ message: 'This archives the post. It can be restored from its revisions.',
4494
+ confirmText: 'Delete',
4495
+ },
4496
+ });
4497
+ ref
4498
+ .afterClosed()
4499
+ .pipe(takeUntilDestroyed(this.destroyRef))
4500
+ .subscribe(confirmed => {
4501
+ if (!confirmed) {
4502
+ this.deleting.set(null);
4503
+ return;
4504
+ }
4505
+ this.error.set('');
4506
+ this.taonCmsContentApiService
4507
+ .deleteContent(post.id, post.version)
4508
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.deleting.set(null)))
4509
+ .subscribe({
4510
+ next: () => this.reload(),
4511
+ error: (error) => {
4512
+ console.error('[taon-cms-posts-backoffice] Unable to delete post', error);
4513
+ this.error.set('The post could not be deleted. Refresh the table before retrying.');
4514
+ },
4515
+ });
4516
+ });
4517
+ }
4518
+ openEditor(data) {
4519
+ const ref = this.dialog.open(TaonCmsPostEditDialogComponent, {
4520
+ data,
4521
+ width: '100vw',
4522
+ height: '100dvh',
4523
+ maxWidth: '100vw',
4524
+ maxHeight: '100dvh',
4525
+ disableClose: true,
4526
+ autoFocus: 'first-tabbable',
4527
+ });
4528
+ ref.componentInstance.changed
4529
+ .pipe(takeUntil(ref.afterClosed()), takeUntilDestroyed(this.destroyRef))
4530
+ .subscribe(() => this.reload());
4531
+ }
4532
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4533
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostsBackofficeComponent, isStandalone: true, selector: "app-taon-cms-posts-backoffice", providers: [TaonCmsContentApiService], viewQueries: [{ propertyName: "datatable", first: true, predicate: TaonDatatableComponent, descendants: true }], ngImport: i0, template: "<h1>CMS posts</h1>\n@if (loading()) {\n <p role=\"status\">Loading posts...</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: TaonDatatableComponent, selector: "taon-datatable", inputs: ["pageNumber", "pageSize", "pageSizeOptions", "allowedColumns", "expansionTemplate", "entityCrudController", "columns", "hideSearch", "hideAddButton", "safe", "searchMode", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4534
+ }
4535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, decorators: [{
4536
+ type: Component,
4537
+ args: [{ selector: 'app-taon-cms-posts-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, TaonDatatableComponent], providers: [TaonCmsContentApiService], template: "<h1>CMS posts</h1>\n@if (loading()) {\n <p role=\"status\">Loading posts...</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n", styles: [":host{display:block}\n"] }]
4538
+ }], propDecorators: { datatable: [{
4539
+ type: ViewChild,
4540
+ args: [TaonDatatableComponent]
4541
+ }] } });
4542
+
4543
+ var taonCmsPostsBackoffice_component = /*#__PURE__*/Object.freeze({
4544
+ __proto__: null,
4545
+ TaonCmsPostsBackofficeComponent: TaonCmsPostsBackofficeComponent
4546
+ });
4547
+
4548
+ //#region imports
4549
+ //#endregion
4550
+ const resolvePost = async (route) => {
4551
+ const id = Number(route.paramMap.get('id'));
4552
+ if (!Number.isSafeInteger(id) || id <= 0) {
4553
+ throw new Error('Invalid Post ID');
4554
+ }
4555
+ const apiService = inject(TaonCmsContentApiService);
4556
+ const post = (await apiService.taonCmsContentController.getBy(id).request())
4557
+ .body.json;
4558
+ if (!post) {
4559
+ throw new Error('Post not found');
4560
+ }
4561
+ return post;
4562
+ };
4563
+ const TaonCmsPostsBackofficeRoutes = [
4564
+ {
4565
+ path: '',
4566
+ pathMatch: 'full',
4567
+ loadComponent: () => Promise.resolve().then(function () { return taonCmsPostsBackoffice_component; }).then(m => m.TaonCmsPostsBackofficeComponent),
4568
+ },
4569
+ {
4570
+ path: ':id',
4571
+ data: { hideInNavigation: true },
4572
+ providers: [TaonCmsContentApiService],
4573
+ resolve: { post: resolvePost },
4574
+ loadComponent: () => Promise.resolve().then(function () { return taonCmsPostDetailsPage_component; }).then(m => m.TaonCmsPostDetailsPageComponent),
4575
+ },
4576
+ ];
4577
+ /**
4578
+ * By default exporting TaonCmsPostsBackofficeRoutes,
4579
+ * the command `taon generate:app:routes`
4580
+ * will automatically add them to the root routes in ./src/app.ts.
4581
+ */
4582
+ // export default TaonCmsPostsBackofficeRoutes;
4583
+
2744
4584
  // @ts-nocheck
2745
4585
  // This file is auto-generated during init process. Do not modify.
2746
4586
  // This disable this auto generate file.
@@ -2750,9 +4590,561 @@ var TaonCmsTagUtils;
2750
4590
  /* */
2751
4591
  var index = {};
2752
4592
 
4593
+ var index$1 = /*#__PURE__*/Object.freeze({
4594
+ __proto__: null,
4595
+ APP_ID: APP_ID,
4596
+ BUILD_BASE_HREF: BUILD_BASE_HREF,
4597
+ BUILD_FRAMEWORK_CLI_NAME: BUILD_FRAMEWORK_CLI_NAME,
4598
+ CURRENT_PACKAGE_TAON_VERSION: CURRENT_PACKAGE_TAON_VERSION,
4599
+ CURRENT_PACKAGE_VERSION: CURRENT_PACKAGE_VERSION,
4600
+ ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF: ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF,
4601
+ ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS: ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS,
4602
+ ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE: ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE,
4603
+ ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH: ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH,
4604
+ ENV_ANGULAR_NODE_APP_BUILD_PROD: ENV_ANGULAR_NODE_APP_BUILD_PROD,
4605
+ ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER: ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER,
4606
+ ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME: ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME,
4607
+ ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME: ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME,
4608
+ ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL: ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL,
4609
+ ENV_ANGULAR_NODE_APP_BUILD_SSR: ENV_ANGULAR_NODE_APP_BUILD_SSR,
4610
+ ENV_ANGULAR_NODE_APP_BUILD_WATCH: ENV_ANGULAR_NODE_APP_BUILD_WATCH,
4611
+ ENV_ANGULAR_NODE_APP_BUILD_WEBSQL: ENV_ANGULAR_NODE_APP_BUILD_WEBSQL,
4612
+ ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_CLIENT_ID: ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_CLIENT_ID,
4613
+ ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_SECRET: ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_SECRET,
4614
+ ENV_ANGULAR_NODE_APP_CONFIG_SUPER_USERS: ENV_ANGULAR_NODE_APP_CONFIG_SUPER_USERS,
4615
+ ENV_ANGULAR_NODE_APP_CONTAINER_END: ENV_ANGULAR_NODE_APP_CONTAINER_END,
4616
+ ENV_ANGULAR_NODE_APP_CONTAINER_ONLY: ENV_ANGULAR_NODE_APP_CONTAINER_ONLY,
4617
+ ENV_ANGULAR_NODE_APP_CONTAINER_SKIP: ENV_ANGULAR_NODE_APP_CONTAINER_SKIP,
4618
+ ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED: ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED,
4619
+ ENV_ANGULAR_NODE_APP_CONTAINER_START: ENV_ANGULAR_NODE_APP_CONTAINER_START,
4620
+ ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK: ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK,
4621
+ ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS: ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS,
4622
+ ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS: ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS,
4623
+ ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP: ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP,
4624
+ ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER: ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER,
4625
+ ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER: ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER,
4626
+ ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB: ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB,
4627
+ ENV_ANGULAR_NODE_APP_FINISH_CALLBACK: ENV_ANGULAR_NODE_APP_FINISH_CALLBACK,
4628
+ ENV_ANGULAR_NODE_APP_INIT_BRANDING: ENV_ANGULAR_NODE_APP_INIT_BRANDING,
4629
+ ENV_ANGULAR_NODE_APP_INIT_STRUCT: ENV_ANGULAR_NODE_APP_INIT_STRUCT,
4630
+ ENV_ANGULAR_NODE_APP_IS_CI_PROCESS: ENV_ANGULAR_NODE_APP_IS_CI_PROCESS,
4631
+ ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND: ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND,
4632
+ ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER: ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER,
4633
+ ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME: ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME,
4634
+ ENV_ANGULAR_NODE_APP_PURPOSE: ENV_ANGULAR_NODE_APP_PURPOSE,
4635
+ ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION: ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION,
4636
+ ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME: ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME,
4637
+ ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG: ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG,
4638
+ ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS: ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS,
4639
+ ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES: ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES,
4640
+ ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY: ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY,
4641
+ ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE: ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE,
4642
+ ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY: ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY,
4643
+ ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME: ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME,
4644
+ ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER: ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER,
4645
+ ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY: ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY,
4646
+ ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS: ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS,
4647
+ ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES: ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES,
4648
+ ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS: ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS,
4649
+ ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE: ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE,
4650
+ ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS: ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS,
4651
+ ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE: ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE,
4652
+ ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY: ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY,
4653
+ ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH: ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH,
4654
+ ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE: ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE,
4655
+ ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE: ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE,
4656
+ ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL: ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL,
4657
+ ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION: ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION,
4658
+ ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS: ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS,
4659
+ ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING: ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING,
4660
+ ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY: ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY,
4661
+ ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH: ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH,
4662
+ ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION: ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION,
4663
+ ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES: ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES,
4664
+ ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH: ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH,
4665
+ ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP: ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP,
4666
+ ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT: ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT,
4667
+ ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH: ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH,
4668
+ ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN: ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN,
4669
+ ENV_ANGULAR_NODE_APP_WEBSITE_TITLE: ENV_ANGULAR_NODE_APP_WEBSITE_TITLE,
4670
+ ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN: ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN,
4671
+ ENV_DOCS_WEBAPP_BUILD_BASE_HREF: ENV_DOCS_WEBAPP_BUILD_BASE_HREF,
4672
+ ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS: ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS,
4673
+ ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE: ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE,
4674
+ ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH: ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH,
4675
+ ENV_DOCS_WEBAPP_BUILD_PROD: ENV_DOCS_WEBAPP_BUILD_PROD,
4676
+ ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER: ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER,
4677
+ ENV_DOCS_WEBAPP_BUILD_PWA_NAME: ENV_DOCS_WEBAPP_BUILD_PWA_NAME,
4678
+ ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME: ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME,
4679
+ ENV_DOCS_WEBAPP_BUILD_PWA_START_URL: ENV_DOCS_WEBAPP_BUILD_PWA_START_URL,
4680
+ ENV_DOCS_WEBAPP_BUILD_SSR: ENV_DOCS_WEBAPP_BUILD_SSR,
4681
+ ENV_DOCS_WEBAPP_BUILD_WATCH: ENV_DOCS_WEBAPP_BUILD_WATCH,
4682
+ ENV_DOCS_WEBAPP_BUILD_WEBSQL: ENV_DOCS_WEBAPP_BUILD_WEBSQL,
4683
+ ENV_DOCS_WEBAPP_CONFIG_GOOGLE_CLIENT_ID: ENV_DOCS_WEBAPP_CONFIG_GOOGLE_CLIENT_ID,
4684
+ ENV_DOCS_WEBAPP_CONFIG_GOOGLE_SECRET: ENV_DOCS_WEBAPP_CONFIG_GOOGLE_SECRET,
4685
+ ENV_DOCS_WEBAPP_CONFIG_SUPER_USERS: ENV_DOCS_WEBAPP_CONFIG_SUPER_USERS,
4686
+ ENV_DOCS_WEBAPP_CONTAINER_END: ENV_DOCS_WEBAPP_CONTAINER_END,
4687
+ ENV_DOCS_WEBAPP_CONTAINER_ONLY: ENV_DOCS_WEBAPP_CONTAINER_ONLY,
4688
+ ENV_DOCS_WEBAPP_CONTAINER_SKIP: ENV_DOCS_WEBAPP_CONTAINER_SKIP,
4689
+ ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED: ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED,
4690
+ ENV_DOCS_WEBAPP_CONTAINER_START: ENV_DOCS_WEBAPP_CONTAINER_START,
4691
+ ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK: ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK,
4692
+ ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS: ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS,
4693
+ ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS: ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS,
4694
+ ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP: ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP,
4695
+ ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER: ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER,
4696
+ ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER: ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER,
4697
+ ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB: ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB,
4698
+ ENV_DOCS_WEBAPP_FINISH_CALLBACK: ENV_DOCS_WEBAPP_FINISH_CALLBACK,
4699
+ ENV_DOCS_WEBAPP_INIT_BRANDING: ENV_DOCS_WEBAPP_INIT_BRANDING,
4700
+ ENV_DOCS_WEBAPP_INIT_STRUCT: ENV_DOCS_WEBAPP_INIT_STRUCT,
4701
+ ENV_DOCS_WEBAPP_IS_CI_PROCESS: ENV_DOCS_WEBAPP_IS_CI_PROCESS,
4702
+ ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND: ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND,
4703
+ ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER: ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER,
4704
+ ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME: ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME,
4705
+ ENV_DOCS_WEBAPP_PURPOSE: ENV_DOCS_WEBAPP_PURPOSE,
4706
+ ENV_DOCS_WEBAPP_RECURSIVE_ACTION: ENV_DOCS_WEBAPP_RECURSIVE_ACTION,
4707
+ ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME: ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME,
4708
+ ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG: ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG,
4709
+ ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS: ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS,
4710
+ ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES: ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES,
4711
+ ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY: ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY,
4712
+ ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE: ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE,
4713
+ ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY: ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY,
4714
+ ENV_DOCS_WEBAPP_RELEASE_ENV_NAME: ENV_DOCS_WEBAPP_RELEASE_ENV_NAME,
4715
+ ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER: ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER,
4716
+ ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY: ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY,
4717
+ ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS: ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS,
4718
+ ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES: ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES,
4719
+ ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS: ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS,
4720
+ ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE: ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE,
4721
+ ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS: ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS,
4722
+ ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE: ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE,
4723
+ ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY: ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY,
4724
+ ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH: ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH,
4725
+ ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE: ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE,
4726
+ ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE: ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE,
4727
+ ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL: ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL,
4728
+ ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION: ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION,
4729
+ ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS: ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS,
4730
+ ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING: ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING,
4731
+ ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY: ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY,
4732
+ ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH: ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH,
4733
+ ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION: ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION,
4734
+ ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES: ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES,
4735
+ ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH: ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH,
4736
+ ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP: ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP,
4737
+ ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT: ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT,
4738
+ ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH: ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH,
4739
+ ENV_DOCS_WEBAPP_WEBSITE_DOMAIN: ENV_DOCS_WEBAPP_WEBSITE_DOMAIN,
4740
+ ENV_DOCS_WEBAPP_WEBSITE_TITLE: ENV_DOCS_WEBAPP_WEBSITE_TITLE,
4741
+ ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN: ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN,
4742
+ ENV_ELECTRON_APP_BUILD_BASE_HREF: ENV_ELECTRON_APP_BUILD_BASE_HREF,
4743
+ ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS: ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS,
4744
+ ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE: ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE,
4745
+ ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH: ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH,
4746
+ ENV_ELECTRON_APP_BUILD_PROD: ENV_ELECTRON_APP_BUILD_PROD,
4747
+ ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER: ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER,
4748
+ ENV_ELECTRON_APP_BUILD_PWA_NAME: ENV_ELECTRON_APP_BUILD_PWA_NAME,
4749
+ ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME: ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME,
4750
+ ENV_ELECTRON_APP_BUILD_PWA_START_URL: ENV_ELECTRON_APP_BUILD_PWA_START_URL,
4751
+ ENV_ELECTRON_APP_BUILD_SSR: ENV_ELECTRON_APP_BUILD_SSR,
4752
+ ENV_ELECTRON_APP_BUILD_WATCH: ENV_ELECTRON_APP_BUILD_WATCH,
4753
+ ENV_ELECTRON_APP_BUILD_WEBSQL: ENV_ELECTRON_APP_BUILD_WEBSQL,
4754
+ ENV_ELECTRON_APP_CONFIG_GOOGLE_CLIENT_ID: ENV_ELECTRON_APP_CONFIG_GOOGLE_CLIENT_ID,
4755
+ ENV_ELECTRON_APP_CONFIG_GOOGLE_SECRET: ENV_ELECTRON_APP_CONFIG_GOOGLE_SECRET,
4756
+ ENV_ELECTRON_APP_CONFIG_SUPER_USERS: ENV_ELECTRON_APP_CONFIG_SUPER_USERS,
4757
+ ENV_ELECTRON_APP_CONTAINER_END: ENV_ELECTRON_APP_CONTAINER_END,
4758
+ ENV_ELECTRON_APP_CONTAINER_ONLY: ENV_ELECTRON_APP_CONTAINER_ONLY,
4759
+ ENV_ELECTRON_APP_CONTAINER_SKIP: ENV_ELECTRON_APP_CONTAINER_SKIP,
4760
+ ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED: ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED,
4761
+ ENV_ELECTRON_APP_CONTAINER_START: ENV_ELECTRON_APP_CONTAINER_START,
4762
+ ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK: ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK,
4763
+ ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS: ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS,
4764
+ ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS: ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS,
4765
+ ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP: ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP,
4766
+ ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER: ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER,
4767
+ ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER: ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER,
4768
+ ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB: ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB,
4769
+ ENV_ELECTRON_APP_FINISH_CALLBACK: ENV_ELECTRON_APP_FINISH_CALLBACK,
4770
+ ENV_ELECTRON_APP_INIT_BRANDING: ENV_ELECTRON_APP_INIT_BRANDING,
4771
+ ENV_ELECTRON_APP_INIT_STRUCT: ENV_ELECTRON_APP_INIT_STRUCT,
4772
+ ENV_ELECTRON_APP_IS_CI_PROCESS: ENV_ELECTRON_APP_IS_CI_PROCESS,
4773
+ ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND: ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND,
4774
+ ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER: ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER,
4775
+ ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME: ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME,
4776
+ ENV_ELECTRON_APP_PURPOSE: ENV_ELECTRON_APP_PURPOSE,
4777
+ ENV_ELECTRON_APP_RECURSIVE_ACTION: ENV_ELECTRON_APP_RECURSIVE_ACTION,
4778
+ ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME: ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME,
4779
+ ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG: ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG,
4780
+ ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS: ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS,
4781
+ ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES: ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES,
4782
+ ENV_ELECTRON_APP_RELEASE_CLI_MINIFY: ENV_ELECTRON_APP_RELEASE_CLI_MINIFY,
4783
+ ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE: ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE,
4784
+ ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY: ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY,
4785
+ ENV_ELECTRON_APP_RELEASE_ENV_NAME: ENV_ELECTRON_APP_RELEASE_ENV_NAME,
4786
+ ENV_ELECTRON_APP_RELEASE_ENV_NUMBER: ENV_ELECTRON_APP_RELEASE_ENV_NUMBER,
4787
+ ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY: ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY,
4788
+ ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS: ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS,
4789
+ ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES: ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES,
4790
+ ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS: ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS,
4791
+ ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE: ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE,
4792
+ ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS: ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS,
4793
+ ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE: ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE,
4794
+ ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY: ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY,
4795
+ ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH: ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH,
4796
+ ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE: ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE,
4797
+ ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE: ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE,
4798
+ ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL: ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL,
4799
+ ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION: ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION,
4800
+ ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS: ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS,
4801
+ ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING: ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING,
4802
+ ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY: ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY,
4803
+ ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH: ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH,
4804
+ ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION: ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION,
4805
+ ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES: ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES,
4806
+ ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH: ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH,
4807
+ ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP: ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP,
4808
+ ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT: ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT,
4809
+ ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH: ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH,
4810
+ ENV_ELECTRON_APP_WEBSITE_DOMAIN: ENV_ELECTRON_APP_WEBSITE_DOMAIN,
4811
+ ENV_ELECTRON_APP_WEBSITE_TITLE: ENV_ELECTRON_APP_WEBSITE_TITLE,
4812
+ ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN: ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN,
4813
+ ENV_MOBILE_APP_BUILD_BASE_HREF: ENV_MOBILE_APP_BUILD_BASE_HREF,
4814
+ ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS: ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS,
4815
+ ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE: ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE,
4816
+ ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH: ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH,
4817
+ ENV_MOBILE_APP_BUILD_PROD: ENV_MOBILE_APP_BUILD_PROD,
4818
+ ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER: ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER,
4819
+ ENV_MOBILE_APP_BUILD_PWA_NAME: ENV_MOBILE_APP_BUILD_PWA_NAME,
4820
+ ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME: ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME,
4821
+ ENV_MOBILE_APP_BUILD_PWA_START_URL: ENV_MOBILE_APP_BUILD_PWA_START_URL,
4822
+ ENV_MOBILE_APP_BUILD_SSR: ENV_MOBILE_APP_BUILD_SSR,
4823
+ ENV_MOBILE_APP_BUILD_WATCH: ENV_MOBILE_APP_BUILD_WATCH,
4824
+ ENV_MOBILE_APP_BUILD_WEBSQL: ENV_MOBILE_APP_BUILD_WEBSQL,
4825
+ ENV_MOBILE_APP_CONFIG_GOOGLE_CLIENT_ID: ENV_MOBILE_APP_CONFIG_GOOGLE_CLIENT_ID,
4826
+ ENV_MOBILE_APP_CONFIG_GOOGLE_SECRET: ENV_MOBILE_APP_CONFIG_GOOGLE_SECRET,
4827
+ ENV_MOBILE_APP_CONFIG_SUPER_USERS: ENV_MOBILE_APP_CONFIG_SUPER_USERS,
4828
+ ENV_MOBILE_APP_CONTAINER_END: ENV_MOBILE_APP_CONTAINER_END,
4829
+ ENV_MOBILE_APP_CONTAINER_ONLY: ENV_MOBILE_APP_CONTAINER_ONLY,
4830
+ ENV_MOBILE_APP_CONTAINER_SKIP: ENV_MOBILE_APP_CONTAINER_SKIP,
4831
+ ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED: ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED,
4832
+ ENV_MOBILE_APP_CONTAINER_START: ENV_MOBILE_APP_CONTAINER_START,
4833
+ ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK: ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK,
4834
+ ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS: ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS,
4835
+ ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS: ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS,
4836
+ ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP: ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP,
4837
+ ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER: ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER,
4838
+ ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER: ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER,
4839
+ ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB: ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB,
4840
+ ENV_MOBILE_APP_FINISH_CALLBACK: ENV_MOBILE_APP_FINISH_CALLBACK,
4841
+ ENV_MOBILE_APP_INIT_BRANDING: ENV_MOBILE_APP_INIT_BRANDING,
4842
+ ENV_MOBILE_APP_INIT_STRUCT: ENV_MOBILE_APP_INIT_STRUCT,
4843
+ ENV_MOBILE_APP_IS_CI_PROCESS: ENV_MOBILE_APP_IS_CI_PROCESS,
4844
+ ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND: ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND,
4845
+ ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER: ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER,
4846
+ ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME: ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME,
4847
+ ENV_MOBILE_APP_PURPOSE: ENV_MOBILE_APP_PURPOSE,
4848
+ ENV_MOBILE_APP_RECURSIVE_ACTION: ENV_MOBILE_APP_RECURSIVE_ACTION,
4849
+ ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME: ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME,
4850
+ ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG: ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG,
4851
+ ENV_MOBILE_APP_RELEASE_CLI_COMPRESS: ENV_MOBILE_APP_RELEASE_CLI_COMPRESS,
4852
+ ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES: ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES,
4853
+ ENV_MOBILE_APP_RELEASE_CLI_MINIFY: ENV_MOBILE_APP_RELEASE_CLI_MINIFY,
4854
+ ENV_MOBILE_APP_RELEASE_CLI_OBSCURE: ENV_MOBILE_APP_RELEASE_CLI_OBSCURE,
4855
+ ENV_MOBILE_APP_RELEASE_CLI_UGLIFY: ENV_MOBILE_APP_RELEASE_CLI_UGLIFY,
4856
+ ENV_MOBILE_APP_RELEASE_ENV_NAME: ENV_MOBILE_APP_RELEASE_ENV_NAME,
4857
+ ENV_MOBILE_APP_RELEASE_ENV_NUMBER: ENV_MOBILE_APP_RELEASE_ENV_NUMBER,
4858
+ ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY: ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY,
4859
+ ENV_MOBILE_APP_RELEASE_LIB_COMPRESS: ENV_MOBILE_APP_RELEASE_LIB_COMPRESS,
4860
+ ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES: ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES,
4861
+ ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS: ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS,
4862
+ ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE: ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE,
4863
+ ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS: ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS,
4864
+ ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE: ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE,
4865
+ ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY: ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY,
4866
+ ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH: ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH,
4867
+ ENV_MOBILE_APP_RELEASE_RELEASE_TYPE: ENV_MOBILE_APP_RELEASE_RELEASE_TYPE,
4868
+ ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE: ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE,
4869
+ ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL: ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL,
4870
+ ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION: ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION,
4871
+ ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS: ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS,
4872
+ ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING: ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING,
4873
+ ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY: ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY,
4874
+ ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH: ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH,
4875
+ ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION: ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION,
4876
+ ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES: ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES,
4877
+ ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH: ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH,
4878
+ ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP: ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP,
4879
+ ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT: ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT,
4880
+ ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH: ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH,
4881
+ ENV_MOBILE_APP_WEBSITE_DOMAIN: ENV_MOBILE_APP_WEBSITE_DOMAIN,
4882
+ ENV_MOBILE_APP_WEBSITE_TITLE: ENV_MOBILE_APP_WEBSITE_TITLE,
4883
+ ENV_MOBILE_APP_WEBSITE_USE_DOMAIN: ENV_MOBILE_APP_WEBSITE_USE_DOMAIN,
4884
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF,
4885
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS,
4886
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE,
4887
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH,
4888
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD,
4889
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER,
4890
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME,
4891
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME,
4892
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL,
4893
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR,
4894
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH,
4895
+ ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL: ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL,
4896
+ ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_CLIENT_ID: ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_CLIENT_ID,
4897
+ ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_SECRET: ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_SECRET,
4898
+ ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_SUPER_USERS: ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_SUPER_USERS,
4899
+ ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END: ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END,
4900
+ ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY: ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY,
4901
+ ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP: ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP,
4902
+ ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED: ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED,
4903
+ ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START: ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START,
4904
+ ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK: ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK,
4905
+ ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS: ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS,
4906
+ ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS: ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS,
4907
+ ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP: ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP,
4908
+ ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER: ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER,
4909
+ ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER: ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER,
4910
+ ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB: ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB,
4911
+ ENV_NPM_LIB_AND_CLI_TOOL_FINISH_CALLBACK: ENV_NPM_LIB_AND_CLI_TOOL_FINISH_CALLBACK,
4912
+ ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING: ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING,
4913
+ ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT: ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT,
4914
+ ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS: ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS,
4915
+ ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND: ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND,
4916
+ ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER: ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER,
4917
+ ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME: ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME,
4918
+ ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE: ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE,
4919
+ ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION: ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION,
4920
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME,
4921
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG,
4922
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS,
4923
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES,
4924
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY,
4925
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE,
4926
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY,
4927
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME,
4928
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER,
4929
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY,
4930
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS,
4931
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES,
4932
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS,
4933
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE,
4934
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS,
4935
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE,
4936
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY,
4937
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH,
4938
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE,
4939
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE,
4940
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL,
4941
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION,
4942
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS,
4943
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING,
4944
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY,
4945
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH,
4946
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION,
4947
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES,
4948
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH,
4949
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP,
4950
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT,
4951
+ ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH: ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH,
4952
+ ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN: ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN,
4953
+ ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE: ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE,
4954
+ ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN: ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN,
4955
+ ENV_VSCODE_PLUGIN_BUILD_BASE_HREF: ENV_VSCODE_PLUGIN_BUILD_BASE_HREF,
4956
+ ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS: ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS,
4957
+ ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE: ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE,
4958
+ ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH: ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH,
4959
+ ENV_VSCODE_PLUGIN_BUILD_PROD: ENV_VSCODE_PLUGIN_BUILD_PROD,
4960
+ ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER: ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER,
4961
+ ENV_VSCODE_PLUGIN_BUILD_PWA_NAME: ENV_VSCODE_PLUGIN_BUILD_PWA_NAME,
4962
+ ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME: ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME,
4963
+ ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL: ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL,
4964
+ ENV_VSCODE_PLUGIN_BUILD_SSR: ENV_VSCODE_PLUGIN_BUILD_SSR,
4965
+ ENV_VSCODE_PLUGIN_BUILD_WATCH: ENV_VSCODE_PLUGIN_BUILD_WATCH,
4966
+ ENV_VSCODE_PLUGIN_BUILD_WEBSQL: ENV_VSCODE_PLUGIN_BUILD_WEBSQL,
4967
+ ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_CLIENT_ID: ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_CLIENT_ID,
4968
+ ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_SECRET: ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_SECRET,
4969
+ ENV_VSCODE_PLUGIN_CONFIG_SUPER_USERS: ENV_VSCODE_PLUGIN_CONFIG_SUPER_USERS,
4970
+ ENV_VSCODE_PLUGIN_CONTAINER_END: ENV_VSCODE_PLUGIN_CONTAINER_END,
4971
+ ENV_VSCODE_PLUGIN_CONTAINER_ONLY: ENV_VSCODE_PLUGIN_CONTAINER_ONLY,
4972
+ ENV_VSCODE_PLUGIN_CONTAINER_SKIP: ENV_VSCODE_PLUGIN_CONTAINER_SKIP,
4973
+ ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED: ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED,
4974
+ ENV_VSCODE_PLUGIN_CONTAINER_START: ENV_VSCODE_PLUGIN_CONTAINER_START,
4975
+ ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK: ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK,
4976
+ ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS: ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS,
4977
+ ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS: ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS,
4978
+ ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP: ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP,
4979
+ ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER: ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER,
4980
+ ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER: ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER,
4981
+ ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB: ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB,
4982
+ ENV_VSCODE_PLUGIN_FINISH_CALLBACK: ENV_VSCODE_PLUGIN_FINISH_CALLBACK,
4983
+ ENV_VSCODE_PLUGIN_INIT_BRANDING: ENV_VSCODE_PLUGIN_INIT_BRANDING,
4984
+ ENV_VSCODE_PLUGIN_INIT_STRUCT: ENV_VSCODE_PLUGIN_INIT_STRUCT,
4985
+ ENV_VSCODE_PLUGIN_IS_CI_PROCESS: ENV_VSCODE_PLUGIN_IS_CI_PROCESS,
4986
+ ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND: ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND,
4987
+ ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER: ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER,
4988
+ ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME: ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME,
4989
+ ENV_VSCODE_PLUGIN_PURPOSE: ENV_VSCODE_PLUGIN_PURPOSE,
4990
+ ENV_VSCODE_PLUGIN_RECURSIVE_ACTION: ENV_VSCODE_PLUGIN_RECURSIVE_ACTION,
4991
+ ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME: ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME,
4992
+ ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG: ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG,
4993
+ ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS: ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS,
4994
+ ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES: ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES,
4995
+ ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY: ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY,
4996
+ ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE: ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE,
4997
+ ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY: ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY,
4998
+ ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME: ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME,
4999
+ ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER: ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER,
5000
+ ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY: ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY,
5001
+ ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS: ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS,
5002
+ ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES: ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES,
5003
+ ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS: ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS,
5004
+ ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE: ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE,
5005
+ ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS: ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS,
5006
+ ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE: ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE,
5007
+ ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY: ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY,
5008
+ ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH: ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH,
5009
+ ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE: ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE,
5010
+ ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE: ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE,
5011
+ ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL: ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL,
5012
+ ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION: ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION,
5013
+ ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS: ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS,
5014
+ ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING: ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING,
5015
+ ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY: ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY,
5016
+ ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH: ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH,
5017
+ ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION: ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION,
5018
+ ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES: ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES,
5019
+ ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH: ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH,
5020
+ ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP: ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP,
5021
+ ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT: ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT,
5022
+ ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH: ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH,
5023
+ ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN: ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN,
5024
+ ENV_VSCODE_PLUGIN_WEBSITE_TITLE: ENV_VSCODE_PLUGIN_WEBSITE_TITLE,
5025
+ ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN: ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN,
5026
+ MIGRATIONS_CLASSES_FOR_CmsContext: MIGRATIONS_CLASSES_FOR_CmsContext,
5027
+ get MyAppGroup () { return MyAppGroup; },
5028
+ get MyAppPermission () { return MyAppPermission; },
5029
+ get MyAppRole () { return MyAppRole; },
5030
+ PROJECT_NPM_NAME: PROJECT_NPM_NAME,
5031
+ TaonCmsAbstractContext: TaonCmsAbstractContext,
5032
+ TaonCmsAssetsBackofficeComponent: TaonCmsAssetsBackofficeComponent,
5033
+ TaonCmsAssetsBackofficeRoutes: TaonCmsAssetsBackofficeRoutes,
5034
+ TaonCmsBackofficeComponent: TaonCmsBackofficeComponent,
5035
+ TaonCmsBackofficeRoutes: TaonCmsBackofficeRoutes,
5036
+ TaonCmsCategoryAbstractContext: TaonCmsCategoryAbstractContext,
5037
+ TaonCmsCategoryApiService: TaonCmsCategoryApiService,
5038
+ get TaonCmsCategoryController () { return TaonCmsCategoryController; },
5039
+ TaonCmsCategoryDefaultsValues: TaonCmsCategoryDefaultsValues,
5040
+ get TaonCmsCategoryEntity () { return TaonCmsCategoryEntity; },
5041
+ get TaonCmsCategoryMiddleware () { return TaonCmsCategoryMiddleware; },
5042
+ get TaonCmsCategoryProvider () { return TaonCmsCategoryProvider; },
5043
+ get TaonCmsCategoryRepository () { return TaonCmsCategoryRepository; },
5044
+ get TaonCmsCategoryState () { return TaonCmsCategoryState; },
5045
+ get TaonCmsCategorySubscriber () { return TaonCmsCategorySubscriber; },
5046
+ get TaonCmsCategoryUtils () { return TaonCmsCategoryUtils; },
5047
+ TaonCmsCommentAbstractContext: TaonCmsCommentAbstractContext,
5048
+ TaonCmsCommentApiService: TaonCmsCommentApiService,
5049
+ get TaonCmsCommentController () { return TaonCmsCommentController; },
5050
+ TaonCmsCommentDefaultsValues: TaonCmsCommentDefaultsValues,
5051
+ get TaonCmsCommentEntity () { return TaonCmsCommentEntity; },
5052
+ get TaonCmsCommentMiddleware () { return TaonCmsCommentMiddleware; },
5053
+ get TaonCmsCommentProvider () { return TaonCmsCommentProvider; },
5054
+ get TaonCmsCommentRepository () { return TaonCmsCommentRepository; },
5055
+ get TaonCmsCommentState () { return TaonCmsCommentState; },
5056
+ get TaonCmsCommentSubscriber () { return TaonCmsCommentSubscriber; },
5057
+ get TaonCmsCommentUtils () { return TaonCmsCommentUtils; },
5058
+ TaonCmsContentAbstractContext: TaonCmsContentAbstractContext,
5059
+ TaonCmsContentApiService: TaonCmsContentApiService,
5060
+ TaonCmsContentAssetAbstractContext: TaonCmsContentAssetAbstractContext,
5061
+ TaonCmsContentAssetApiService: TaonCmsContentAssetApiService,
5062
+ get TaonCmsContentAssetController () { return TaonCmsContentAssetController; },
5063
+ TaonCmsContentAssetDefaultsValues: TaonCmsContentAssetDefaultsValues,
5064
+ get TaonCmsContentAssetEntity () { return TaonCmsContentAssetEntity; },
5065
+ get TaonCmsContentAssetMiddleware () { return TaonCmsContentAssetMiddleware; },
5066
+ get TaonCmsContentAssetProvider () { return TaonCmsContentAssetProvider; },
5067
+ get TaonCmsContentAssetRepository () { return TaonCmsContentAssetRepository; },
5068
+ get TaonCmsContentAssetState () { return TaonCmsContentAssetState; },
5069
+ get TaonCmsContentAssetSubscriber () { return TaonCmsContentAssetSubscriber; },
5070
+ get TaonCmsContentAssetUtils () { return TaonCmsContentAssetUtils; },
5071
+ TaonCmsContentConfigService: TaonCmsContentConfigService,
5072
+ get TaonCmsContentController () { return TaonCmsContentController; },
5073
+ TaonCmsContentDefaultsValues: TaonCmsContentDefaultsValues,
5074
+ get TaonCmsContentEntity () { return TaonCmsContentEntity; },
5075
+ get TaonCmsContentMiddleware () { return TaonCmsContentMiddleware; },
5076
+ TaonCmsContentPermissionAbstractContext: TaonCmsContentPermissionAbstractContext,
5077
+ TaonCmsContentPermissionApiService: TaonCmsContentPermissionApiService,
5078
+ get TaonCmsContentPermissionController () { return TaonCmsContentPermissionController; },
5079
+ TaonCmsContentPermissionDefaultsValues: TaonCmsContentPermissionDefaultsValues,
5080
+ get TaonCmsContentPermissionEntity () { return TaonCmsContentPermissionEntity; },
5081
+ get TaonCmsContentPermissionMiddleware () { return TaonCmsContentPermissionMiddleware; },
5082
+ get TaonCmsContentPermissionProvider () { return TaonCmsContentPermissionProvider; },
5083
+ get TaonCmsContentPermissionRepository () { return TaonCmsContentPermissionRepository; },
5084
+ get TaonCmsContentPermissionState () { return TaonCmsContentPermissionState; },
5085
+ get TaonCmsContentPermissionSubscriber () { return TaonCmsContentPermissionSubscriber; },
5086
+ get TaonCmsContentPermissionUtils () { return TaonCmsContentPermissionUtils; },
5087
+ get TaonCmsContentProvider () { return TaonCmsContentProvider; },
5088
+ get TaonCmsContentRepository () { return TaonCmsContentRepository; },
5089
+ TaonCmsContentRevisionAbstractContext: TaonCmsContentRevisionAbstractContext,
5090
+ TaonCmsContentRevisionApiService: TaonCmsContentRevisionApiService,
5091
+ get TaonCmsContentRevisionController () { return TaonCmsContentRevisionController; },
5092
+ TaonCmsContentRevisionDefaultsValues: TaonCmsContentRevisionDefaultsValues,
5093
+ get TaonCmsContentRevisionEntity () { return TaonCmsContentRevisionEntity; },
5094
+ get TaonCmsContentRevisionMiddleware () { return TaonCmsContentRevisionMiddleware; },
5095
+ get TaonCmsContentRevisionProvider () { return TaonCmsContentRevisionProvider; },
5096
+ get TaonCmsContentRevisionRepository () { return TaonCmsContentRevisionRepository; },
5097
+ get TaonCmsContentRevisionState () { return TaonCmsContentRevisionState; },
5098
+ get TaonCmsContentRevisionSubscriber () { return TaonCmsContentRevisionSubscriber; },
5099
+ get TaonCmsContentRevisionUtils () { return TaonCmsContentRevisionUtils; },
5100
+ get TaonCmsContentState () { return TaonCmsContentState; },
5101
+ get TaonCmsContentStorageController () { return TaonCmsContentStorageController; },
5102
+ get TaonCmsContentSubscriber () { return TaonCmsContentSubscriber; },
5103
+ TaonCmsContentTagAbstractContext: TaonCmsContentTagAbstractContext,
5104
+ TaonCmsContentTagApiService: TaonCmsContentTagApiService,
5105
+ get TaonCmsContentTagController () { return TaonCmsContentTagController; },
5106
+ TaonCmsContentTagDefaultsValues: TaonCmsContentTagDefaultsValues,
5107
+ get TaonCmsContentTagEntity () { return TaonCmsContentTagEntity; },
5108
+ get TaonCmsContentTagMiddleware () { return TaonCmsContentTagMiddleware; },
5109
+ get TaonCmsContentTagProvider () { return TaonCmsContentTagProvider; },
5110
+ get TaonCmsContentTagRepository () { return TaonCmsContentTagRepository; },
5111
+ get TaonCmsContentTagState () { return TaonCmsContentTagState; },
5112
+ get TaonCmsContentTagSubscriber () { return TaonCmsContentTagSubscriber; },
5113
+ get TaonCmsContentTagUtils () { return TaonCmsContentTagUtils; },
5114
+ get TaonCmsContentType () { return TaonCmsContentType; },
5115
+ get TaonCmsContentUtils () { return TaonCmsContentUtils; },
5116
+ TaonCmsEditableDirective: TaonCmsEditableDirective,
5117
+ TaonCmsPostComponent: TaonCmsPostComponent,
5118
+ TaonCmsPostDetailsPageComponent: TaonCmsPostDetailsPageComponent,
5119
+ TaonCmsPostEditDialogComponent: TaonCmsPostEditDialogComponent,
5120
+ TaonCmsPostRoutes: TaonCmsPostRoutes,
5121
+ TaonCmsPostsBackofficeComponent: TaonCmsPostsBackofficeComponent,
5122
+ TaonCmsPostsBackofficeRoutes: TaonCmsPostsBackofficeRoutes,
5123
+ TaonCmsRevisionChooserComponent: TaonCmsRevisionChooserComponent,
5124
+ TaonCmsTagAbstractContext: TaonCmsTagAbstractContext,
5125
+ TaonCmsTagApiService: TaonCmsTagApiService,
5126
+ get TaonCmsTagController () { return TaonCmsTagController; },
5127
+ TaonCmsTagDefaultsValues: TaonCmsTagDefaultsValues,
5128
+ get TaonCmsTagEntity () { return TaonCmsTagEntity; },
5129
+ get TaonCmsTagMiddleware () { return TaonCmsTagMiddleware; },
5130
+ get TaonCmsTagProvider () { return TaonCmsTagProvider; },
5131
+ get TaonCmsTagRepository () { return TaonCmsTagRepository; },
5132
+ get TaonCmsTagState () { return TaonCmsTagState; },
5133
+ get TaonCmsTagSubscriber () { return TaonCmsTagSubscriber; },
5134
+ get TaonCmsTagUtils () { return TaonCmsTagUtils; },
5135
+ TaonRelatedPostChooserComponent: TaonRelatedPostChooserComponent,
5136
+ contentError: contentError,
5137
+ default: index,
5138
+ myOrgProj: myOrgProj,
5139
+ requireContentId: requireContentId,
5140
+ requireContentVersion: requireContentVersion,
5141
+ startCli: startCli,
5142
+ validateContentInput: validateContentInput
5143
+ });
5144
+
2753
5145
  /**
2754
5146
  * Generated bundle index. Do not edit.
2755
5147
  */
2756
5148
 
2757
- export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF, ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ANGULAR_NODE_APP_BUILD_PROD, ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL, ENV_ANGULAR_NODE_APP_BUILD_SSR, ENV_ANGULAR_NODE_APP_BUILD_WATCH, ENV_ANGULAR_NODE_APP_BUILD_WEBSQL, ENV_ANGULAR_NODE_APP_CONTAINER_END, ENV_ANGULAR_NODE_APP_CONTAINER_ONLY, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED, ENV_ANGULAR_NODE_APP_CONTAINER_START, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP, ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ANGULAR_NODE_APP_FINISH_CALLBACK, ENV_ANGULAR_NODE_APP_INIT_BRANDING, ENV_ANGULAR_NODE_APP_INIT_STRUCT, ENV_ANGULAR_NODE_APP_IS_CI_PROCESS, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ANGULAR_NODE_APP_PURPOSE, ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE, ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER, ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY, ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP, ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT, ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN, ENV_ANGULAR_NODE_APP_WEBSITE_TITLE, ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN, ENV_DOCS_WEBAPP_BUILD_BASE_HREF, ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_DOCS_WEBAPP_BUILD_PROD, ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_DOCS_WEBAPP_BUILD_PWA_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_START_URL, ENV_DOCS_WEBAPP_BUILD_SSR, ENV_DOCS_WEBAPP_BUILD_WATCH, ENV_DOCS_WEBAPP_BUILD_WEBSQL, ENV_DOCS_WEBAPP_CONTAINER_END, ENV_DOCS_WEBAPP_CONTAINER_ONLY, ENV_DOCS_WEBAPP_CONTAINER_SKIP, ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED, ENV_DOCS_WEBAPP_CONTAINER_START, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP, ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER, ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER, ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB, ENV_DOCS_WEBAPP_FINISH_CALLBACK, ENV_DOCS_WEBAPP_INIT_BRANDING, ENV_DOCS_WEBAPP_INIT_STRUCT, ENV_DOCS_WEBAPP_IS_CI_PROCESS, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_DOCS_WEBAPP_PURPOSE, ENV_DOCS_WEBAPP_RECURSIVE_ACTION, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY, ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE, ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY, ENV_DOCS_WEBAPP_RELEASE_ENV_NAME, ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER, ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY, ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS, ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE, ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION, ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING, ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY, ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH, ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION, ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP, ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT, ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_WEBSITE_DOMAIN, ENV_DOCS_WEBAPP_WEBSITE_TITLE, ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN, ENV_ELECTRON_APP_BUILD_BASE_HREF, ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ELECTRON_APP_BUILD_PROD, ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ELECTRON_APP_BUILD_PWA_NAME, ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME, ENV_ELECTRON_APP_BUILD_PWA_START_URL, ENV_ELECTRON_APP_BUILD_SSR, ENV_ELECTRON_APP_BUILD_WATCH, ENV_ELECTRON_APP_BUILD_WEBSQL, ENV_ELECTRON_APP_CONTAINER_END, ENV_ELECTRON_APP_CONTAINER_ONLY, ENV_ELECTRON_APP_CONTAINER_SKIP, ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED, ENV_ELECTRON_APP_CONTAINER_START, ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP, ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ELECTRON_APP_FINISH_CALLBACK, ENV_ELECTRON_APP_INIT_BRANDING, ENV_ELECTRON_APP_INIT_STRUCT, ENV_ELECTRON_APP_IS_CI_PROCESS, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ELECTRON_APP_PURPOSE, ENV_ELECTRON_APP_RECURSIVE_ACTION, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS, ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ELECTRON_APP_RELEASE_CLI_MINIFY, ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE, ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY, ENV_ELECTRON_APP_RELEASE_ENV_NAME, ENV_ELECTRON_APP_RELEASE_ENV_NUMBER, ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY, ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS, ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS, ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE, ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY, ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP, ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT, ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_WEBSITE_DOMAIN, ENV_ELECTRON_APP_WEBSITE_TITLE, ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN, ENV_MOBILE_APP_BUILD_BASE_HREF, ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_MOBILE_APP_BUILD_PROD, ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_MOBILE_APP_BUILD_PWA_NAME, ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME, ENV_MOBILE_APP_BUILD_PWA_START_URL, ENV_MOBILE_APP_BUILD_SSR, ENV_MOBILE_APP_BUILD_WATCH, ENV_MOBILE_APP_BUILD_WEBSQL, ENV_MOBILE_APP_CONTAINER_END, ENV_MOBILE_APP_CONTAINER_ONLY, ENV_MOBILE_APP_CONTAINER_SKIP, ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED, ENV_MOBILE_APP_CONTAINER_START, ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP, ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_MOBILE_APP_FINISH_CALLBACK, ENV_MOBILE_APP_INIT_BRANDING, ENV_MOBILE_APP_INIT_STRUCT, ENV_MOBILE_APP_IS_CI_PROCESS, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_MOBILE_APP_PURPOSE, ENV_MOBILE_APP_RECURSIVE_ACTION, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_MOBILE_APP_RELEASE_CLI_COMPRESS, ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_MOBILE_APP_RELEASE_CLI_MINIFY, ENV_MOBILE_APP_RELEASE_CLI_OBSCURE, ENV_MOBILE_APP_RELEASE_CLI_UGLIFY, ENV_MOBILE_APP_RELEASE_ENV_NAME, ENV_MOBILE_APP_RELEASE_ENV_NUMBER, ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY, ENV_MOBILE_APP_RELEASE_LIB_COMPRESS, ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS, ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_RELEASE_RELEASE_TYPE, ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY, ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP, ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT, ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_WEBSITE_DOMAIN, ENV_MOBILE_APP_WEBSITE_TITLE, ENV_MOBILE_APP_WEBSITE_USE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB, ENV_NPM_LIB_AND_CLI_TOOL_FINISH_CALLBACK, ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING, ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT, ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE, ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN, ENV_VSCODE_PLUGIN_BUILD_BASE_HREF, ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE, ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH, ENV_VSCODE_PLUGIN_BUILD_PROD, ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_VSCODE_PLUGIN_BUILD_PWA_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL, ENV_VSCODE_PLUGIN_BUILD_SSR, ENV_VSCODE_PLUGIN_BUILD_WATCH, ENV_VSCODE_PLUGIN_BUILD_WEBSQL, ENV_VSCODE_PLUGIN_CONTAINER_END, ENV_VSCODE_PLUGIN_CONTAINER_ONLY, ENV_VSCODE_PLUGIN_CONTAINER_SKIP, ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED, ENV_VSCODE_PLUGIN_CONTAINER_START, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP, ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB, ENV_VSCODE_PLUGIN_FINISH_CALLBACK, ENV_VSCODE_PLUGIN_INIT_BRANDING, ENV_VSCODE_PLUGIN_INIT_STRUCT, ENV_VSCODE_PLUGIN_IS_CI_PROCESS, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_VSCODE_PLUGIN_PURPOSE, ENV_VSCODE_PLUGIN_RECURSIVE_ACTION, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE, ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY, ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME, ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER, ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY, ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS, ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING, ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY, ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH, ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP, ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT, ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN, ENV_VSCODE_PLUGIN_WEBSITE_TITLE, ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN, PROJECT_NPM_NAME, TaonCmsAbstractContext, TaonCmsBackofficeComponent, TaonCmsBackofficeRoutes, TaonCmsCategoryAbstractContext, TaonCmsCategoryApiService, TaonCmsCategoryController, TaonCmsCategoryDefaultsValues, TaonCmsCategoryEntity, TaonCmsCategoryMiddleware, TaonCmsCategoryProvider, TaonCmsCategoryRepository, TaonCmsCategoryState, TaonCmsCategorySubscriber, TaonCmsCategoryUtils, TaonCmsCommentAbstractContext, TaonCmsCommentApiService, TaonCmsCommentController, TaonCmsCommentDefaultsValues, TaonCmsCommentEntity, TaonCmsCommentMiddleware, TaonCmsCommentProvider, TaonCmsCommentRepository, TaonCmsCommentState, TaonCmsCommentSubscriber, TaonCmsCommentUtils, TaonCmsContentAbstractContext, TaonCmsContentApiService, TaonCmsContentAssetAbstractContext, TaonCmsContentAssetApiService, TaonCmsContentAssetController, TaonCmsContentAssetDefaultsValues, TaonCmsContentAssetEntity, TaonCmsContentAssetMiddleware, TaonCmsContentAssetProvider, TaonCmsContentAssetRepository, TaonCmsContentAssetState, TaonCmsContentAssetSubscriber, TaonCmsContentAssetUtils, TaonCmsContentController, TaonCmsContentDefaultsValues, TaonCmsContentEntity, TaonCmsContentMiddleware, TaonCmsContentPermissionAbstractContext, TaonCmsContentPermissionApiService, TaonCmsContentPermissionController, TaonCmsContentPermissionDefaultsValues, TaonCmsContentPermissionEntity, TaonCmsContentPermissionMiddleware, TaonCmsContentPermissionProvider, TaonCmsContentPermissionRepository, TaonCmsContentPermissionState, TaonCmsContentPermissionSubscriber, TaonCmsContentPermissionUtils, TaonCmsContentProvider, TaonCmsContentRepository, TaonCmsContentRevisionAbstractContext, TaonCmsContentRevisionApiService, TaonCmsContentRevisionController, TaonCmsContentRevisionDefaultsValues, TaonCmsContentRevisionEntity, TaonCmsContentRevisionMiddleware, TaonCmsContentRevisionProvider, TaonCmsContentRevisionRepository, TaonCmsContentRevisionState, TaonCmsContentRevisionSubscriber, TaonCmsContentRevisionUtils, TaonCmsContentState, TaonCmsContentSubscriber, TaonCmsContentTagAbstractContext, TaonCmsContentTagApiService, TaonCmsContentTagController, TaonCmsContentTagDefaultsValues, TaonCmsContentTagEntity, TaonCmsContentTagMiddleware, TaonCmsContentTagProvider, TaonCmsContentTagRepository, TaonCmsContentTagState, TaonCmsContentTagSubscriber, TaonCmsContentTagUtils, TaonCmsContentUtils, TaonCmsTagAbstractContext, TaonCmsTagApiService, TaonCmsTagController, TaonCmsTagDefaultsValues, TaonCmsTagEntity, TaonCmsTagMiddleware, TaonCmsTagProvider, TaonCmsTagRepository, TaonCmsTagState, TaonCmsTagSubscriber, TaonCmsTagUtils, myOrgProj, startCli };
5149
+ export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF, ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ANGULAR_NODE_APP_BUILD_PROD, ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL, ENV_ANGULAR_NODE_APP_BUILD_SSR, ENV_ANGULAR_NODE_APP_BUILD_WATCH, ENV_ANGULAR_NODE_APP_BUILD_WEBSQL, ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_CLIENT_ID, ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_SECRET, ENV_ANGULAR_NODE_APP_CONFIG_SUPER_USERS, ENV_ANGULAR_NODE_APP_CONTAINER_END, ENV_ANGULAR_NODE_APP_CONTAINER_ONLY, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED, ENV_ANGULAR_NODE_APP_CONTAINER_START, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP, ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ANGULAR_NODE_APP_FINISH_CALLBACK, ENV_ANGULAR_NODE_APP_INIT_BRANDING, ENV_ANGULAR_NODE_APP_INIT_STRUCT, ENV_ANGULAR_NODE_APP_IS_CI_PROCESS, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ANGULAR_NODE_APP_PURPOSE, ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE, ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER, ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY, ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP, ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT, ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN, ENV_ANGULAR_NODE_APP_WEBSITE_TITLE, ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN, ENV_DOCS_WEBAPP_BUILD_BASE_HREF, ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_DOCS_WEBAPP_BUILD_PROD, ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_DOCS_WEBAPP_BUILD_PWA_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_START_URL, ENV_DOCS_WEBAPP_BUILD_SSR, ENV_DOCS_WEBAPP_BUILD_WATCH, ENV_DOCS_WEBAPP_BUILD_WEBSQL, ENV_DOCS_WEBAPP_CONFIG_GOOGLE_CLIENT_ID, ENV_DOCS_WEBAPP_CONFIG_GOOGLE_SECRET, ENV_DOCS_WEBAPP_CONFIG_SUPER_USERS, ENV_DOCS_WEBAPP_CONTAINER_END, ENV_DOCS_WEBAPP_CONTAINER_ONLY, ENV_DOCS_WEBAPP_CONTAINER_SKIP, ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED, ENV_DOCS_WEBAPP_CONTAINER_START, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP, ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER, ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER, ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB, ENV_DOCS_WEBAPP_FINISH_CALLBACK, ENV_DOCS_WEBAPP_INIT_BRANDING, ENV_DOCS_WEBAPP_INIT_STRUCT, ENV_DOCS_WEBAPP_IS_CI_PROCESS, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_DOCS_WEBAPP_PURPOSE, ENV_DOCS_WEBAPP_RECURSIVE_ACTION, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY, ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE, ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY, ENV_DOCS_WEBAPP_RELEASE_ENV_NAME, ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER, ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY, ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS, ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE, ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION, ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING, ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY, ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH, ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION, ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP, ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT, ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_WEBSITE_DOMAIN, ENV_DOCS_WEBAPP_WEBSITE_TITLE, ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN, ENV_ELECTRON_APP_BUILD_BASE_HREF, ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ELECTRON_APP_BUILD_PROD, ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ELECTRON_APP_BUILD_PWA_NAME, ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME, ENV_ELECTRON_APP_BUILD_PWA_START_URL, ENV_ELECTRON_APP_BUILD_SSR, ENV_ELECTRON_APP_BUILD_WATCH, ENV_ELECTRON_APP_BUILD_WEBSQL, ENV_ELECTRON_APP_CONFIG_GOOGLE_CLIENT_ID, ENV_ELECTRON_APP_CONFIG_GOOGLE_SECRET, ENV_ELECTRON_APP_CONFIG_SUPER_USERS, ENV_ELECTRON_APP_CONTAINER_END, ENV_ELECTRON_APP_CONTAINER_ONLY, ENV_ELECTRON_APP_CONTAINER_SKIP, ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED, ENV_ELECTRON_APP_CONTAINER_START, ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP, ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ELECTRON_APP_FINISH_CALLBACK, ENV_ELECTRON_APP_INIT_BRANDING, ENV_ELECTRON_APP_INIT_STRUCT, ENV_ELECTRON_APP_IS_CI_PROCESS, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ELECTRON_APP_PURPOSE, ENV_ELECTRON_APP_RECURSIVE_ACTION, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS, ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ELECTRON_APP_RELEASE_CLI_MINIFY, ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE, ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY, ENV_ELECTRON_APP_RELEASE_ENV_NAME, ENV_ELECTRON_APP_RELEASE_ENV_NUMBER, ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY, ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS, ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS, ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE, ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY, ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP, ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT, ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_WEBSITE_DOMAIN, ENV_ELECTRON_APP_WEBSITE_TITLE, ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN, ENV_MOBILE_APP_BUILD_BASE_HREF, ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_MOBILE_APP_BUILD_PROD, ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_MOBILE_APP_BUILD_PWA_NAME, ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME, ENV_MOBILE_APP_BUILD_PWA_START_URL, ENV_MOBILE_APP_BUILD_SSR, ENV_MOBILE_APP_BUILD_WATCH, ENV_MOBILE_APP_BUILD_WEBSQL, ENV_MOBILE_APP_CONFIG_GOOGLE_CLIENT_ID, ENV_MOBILE_APP_CONFIG_GOOGLE_SECRET, ENV_MOBILE_APP_CONFIG_SUPER_USERS, ENV_MOBILE_APP_CONTAINER_END, ENV_MOBILE_APP_CONTAINER_ONLY, ENV_MOBILE_APP_CONTAINER_SKIP, ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED, ENV_MOBILE_APP_CONTAINER_START, ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP, ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_MOBILE_APP_FINISH_CALLBACK, ENV_MOBILE_APP_INIT_BRANDING, ENV_MOBILE_APP_INIT_STRUCT, ENV_MOBILE_APP_IS_CI_PROCESS, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_MOBILE_APP_PURPOSE, ENV_MOBILE_APP_RECURSIVE_ACTION, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_MOBILE_APP_RELEASE_CLI_COMPRESS, ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_MOBILE_APP_RELEASE_CLI_MINIFY, ENV_MOBILE_APP_RELEASE_CLI_OBSCURE, ENV_MOBILE_APP_RELEASE_CLI_UGLIFY, ENV_MOBILE_APP_RELEASE_ENV_NAME, ENV_MOBILE_APP_RELEASE_ENV_NUMBER, ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY, ENV_MOBILE_APP_RELEASE_LIB_COMPRESS, ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS, ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_RELEASE_RELEASE_TYPE, ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY, ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP, ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT, ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_WEBSITE_DOMAIN, ENV_MOBILE_APP_WEBSITE_TITLE, ENV_MOBILE_APP_WEBSITE_USE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL, ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_CLIENT_ID, ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_SECRET, ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_SUPER_USERS, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB, ENV_NPM_LIB_AND_CLI_TOOL_FINISH_CALLBACK, ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING, ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT, ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE, ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN, ENV_VSCODE_PLUGIN_BUILD_BASE_HREF, ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE, ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH, ENV_VSCODE_PLUGIN_BUILD_PROD, ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_VSCODE_PLUGIN_BUILD_PWA_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL, ENV_VSCODE_PLUGIN_BUILD_SSR, ENV_VSCODE_PLUGIN_BUILD_WATCH, ENV_VSCODE_PLUGIN_BUILD_WEBSQL, ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_CLIENT_ID, ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_SECRET, ENV_VSCODE_PLUGIN_CONFIG_SUPER_USERS, ENV_VSCODE_PLUGIN_CONTAINER_END, ENV_VSCODE_PLUGIN_CONTAINER_ONLY, ENV_VSCODE_PLUGIN_CONTAINER_SKIP, ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED, ENV_VSCODE_PLUGIN_CONTAINER_START, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP, ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB, ENV_VSCODE_PLUGIN_FINISH_CALLBACK, ENV_VSCODE_PLUGIN_INIT_BRANDING, ENV_VSCODE_PLUGIN_INIT_STRUCT, ENV_VSCODE_PLUGIN_IS_CI_PROCESS, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_VSCODE_PLUGIN_PURPOSE, ENV_VSCODE_PLUGIN_RECURSIVE_ACTION, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE, ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY, ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME, ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER, ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY, ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS, ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING, ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY, ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH, ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP, ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT, ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN, ENV_VSCODE_PLUGIN_WEBSITE_TITLE, ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN, MIGRATIONS_CLASSES_FOR_CmsContext, MyAppGroup, MyAppPermission, MyAppRole, PROJECT_NPM_NAME, TaonCmsAbstractContext, TaonCmsAssetsBackofficeComponent, TaonCmsAssetsBackofficeRoutes, TaonCmsBackofficeComponent, TaonCmsBackofficeRoutes, TaonCmsCategoryAbstractContext, TaonCmsCategoryApiService, TaonCmsCategoryController, TaonCmsCategoryDefaultsValues, TaonCmsCategoryEntity, TaonCmsCategoryMiddleware, TaonCmsCategoryProvider, TaonCmsCategoryRepository, TaonCmsCategoryState, TaonCmsCategorySubscriber, TaonCmsCategoryUtils, TaonCmsCommentAbstractContext, TaonCmsCommentApiService, TaonCmsCommentController, TaonCmsCommentDefaultsValues, TaonCmsCommentEntity, TaonCmsCommentMiddleware, TaonCmsCommentProvider, TaonCmsCommentRepository, TaonCmsCommentState, TaonCmsCommentSubscriber, TaonCmsCommentUtils, TaonCmsContentAbstractContext, TaonCmsContentApiService, TaonCmsContentAssetAbstractContext, TaonCmsContentAssetApiService, TaonCmsContentAssetController, TaonCmsContentAssetDefaultsValues, TaonCmsContentAssetEntity, TaonCmsContentAssetMiddleware, TaonCmsContentAssetProvider, TaonCmsContentAssetRepository, TaonCmsContentAssetState, TaonCmsContentAssetSubscriber, TaonCmsContentAssetUtils, TaonCmsContentConfigService, TaonCmsContentController, TaonCmsContentDefaultsValues, TaonCmsContentEntity, TaonCmsContentMiddleware, TaonCmsContentPermissionAbstractContext, TaonCmsContentPermissionApiService, TaonCmsContentPermissionController, TaonCmsContentPermissionDefaultsValues, TaonCmsContentPermissionEntity, TaonCmsContentPermissionMiddleware, TaonCmsContentPermissionProvider, TaonCmsContentPermissionRepository, TaonCmsContentPermissionState, TaonCmsContentPermissionSubscriber, TaonCmsContentPermissionUtils, TaonCmsContentProvider, TaonCmsContentRepository, TaonCmsContentRevisionAbstractContext, TaonCmsContentRevisionApiService, TaonCmsContentRevisionController, TaonCmsContentRevisionDefaultsValues, TaonCmsContentRevisionEntity, TaonCmsContentRevisionMiddleware, TaonCmsContentRevisionProvider, TaonCmsContentRevisionRepository, TaonCmsContentRevisionState, TaonCmsContentRevisionSubscriber, TaonCmsContentRevisionUtils, TaonCmsContentState, TaonCmsContentStorageController, TaonCmsContentSubscriber, TaonCmsContentTagAbstractContext, TaonCmsContentTagApiService, TaonCmsContentTagController, TaonCmsContentTagDefaultsValues, TaonCmsContentTagEntity, TaonCmsContentTagMiddleware, TaonCmsContentTagProvider, TaonCmsContentTagRepository, TaonCmsContentTagState, TaonCmsContentTagSubscriber, TaonCmsContentTagUtils, TaonCmsContentType, TaonCmsContentUtils, TaonCmsEditableDirective, TaonCmsPostComponent, TaonCmsPostDetailsPageComponent, TaonCmsPostEditDialogComponent, TaonCmsPostRoutes, TaonCmsPostsBackofficeComponent, TaonCmsPostsBackofficeRoutes, TaonCmsRevisionChooserComponent, TaonCmsTagAbstractContext, TaonCmsTagApiService, TaonCmsTagController, TaonCmsTagDefaultsValues, TaonCmsTagEntity, TaonCmsTagMiddleware, TaonCmsTagProvider, TaonCmsTagRepository, TaonCmsTagState, TaonCmsTagSubscriber, TaonCmsTagUtils, TaonRelatedPostChooserComponent, contentError, myOrgProj, requireContentId, requireContentVersion, startCli, validateContentInput };
2758
5150
  //# sourceMappingURL=cms-websql.mjs.map