@taon-dev/cms 21.0.20 → 21.0.21
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.
- package/browser/fesm2022/cms-browser.mjs +1 -1
- package/browser/fesm2022/cms-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/cms-browser.d.ts +1 -1
- package/browser-prod/fesm2022/cms-browser-prod.mjs +1 -1
- package/browser-prod/fesm2022/cms-browser-prod.mjs.map +1 -1
- package/browser-prod/package.json +1 -1
- package/browser-prod/types/cms-browser-prod.d.ts +1 -1
- package/full-dts/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/package.json +1 -1
- package/lib/taon-cms-backoffice/index.d.ts +1 -1
- package/lib/taon-cms-backoffice/index.js +2 -2
- package/lib/taon-posts/taon-cms-course-backoffice/index.d.ts +1 -1
- package/lib/taon-posts/taon-cms-course-backoffice/index.js +2 -2
- package/lib/taon-posts/taon-cms-post/index.d.ts +1 -1
- package/lib/taon-posts/taon-cms-post/index.js +2 -2
- package/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
- package/lib/taon-posts/taon-cms-posts-backoffice/index.js +2 -2
- package/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
- package/lib/taon-posts/taon-cms-revision-chooser/index.js +2 -2
- package/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
- package/lib/taon-posts/taon-related-post-chooser/index.js +2 -2
- package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib-esm/lib/build-info._auto-generated_.js +1 -1
- package/lib-esm/lib/taon-cms-backoffice/index.d.ts +1 -1
- package/lib-esm/lib/taon-cms-backoffice/index.js +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/index.d.ts +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/index.js +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-post/index.d.ts +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-post/index.js +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.js +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
- package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.js +1 -1
- package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
- package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.js +1 -1
- package/lib-prod/build-info._auto-generated_.d.ts +1 -1
- package/lib-prod/build-info._auto-generated_.js +1 -1
- package/lib-prod/package.json +1 -1
- package/lib-prod/taon-cms-backoffice/index.d.ts +1 -1
- package/lib-prod/taon-cms-backoffice/index.js +1 -1
- package/lib-prod/taon-posts/taon-cms-course-backoffice/index.d.ts +1 -1
- package/lib-prod/taon-posts/taon-cms-course-backoffice/index.js +1 -1
- package/lib-prod/taon-posts/taon-cms-post/index.d.ts +1 -1
- package/lib-prod/taon-posts/taon-cms-post/index.js +1 -1
- package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
- package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.js +1 -1
- package/lib-prod/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
- package/lib-prod/taon-posts/taon-cms-revision-chooser/index.js +1 -1
- package/lib-prod/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
- package/lib-prod/taon-posts/taon-related-post-chooser/index.js +1 -1
- package/package.json +1 -1
- package/ts-source/browser-code/build-info._auto-generated_.ts +1 -1
- package/ts-source/browser-code-prod/build-info._auto-generated_.ts +1 -1
- package/ts-source/websql-code/build-info._auto-generated_.ts +1 -1
- package/ts-source/websql-code-prod/build-info._auto-generated_.ts +1 -1
- package/websql/fesm2022/cms-websql.mjs +1 -1
- package/websql/fesm2022/cms-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/cms-websql.d.ts +1 -1
- package/websql-prod/fesm2022/cms-websql-prod.mjs +1 -1
- package/websql-prod/fesm2022/cms-websql-prod.mjs.map +1 -1
- package/websql-prod/package.json +1 -1
- package/websql-prod/types/cms-websql-prod.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms-websql-prod.mjs","sources":["../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-application-hook/taon-cms-application-hook.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-application-hooks.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/migrations/1792506757808_applicaitonHooks.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.validation.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content-storage.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-upload-progress.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.config.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-template-variables.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-editable.directive.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-post.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-post.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/index.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/cms-websql-prod.ts"],"sourcesContent":["import {\n Column,\n JoinColumn,\n OneToOne,\n PrimaryGeneratedColumn,\n TaonBaseEntity,\n TaonEntity,\n} from 'taon/websql-prod';\n\nimport type { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\nimport { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\n\n@TaonEntity({\n className: 'TaonCmsApplicationHookEntity',\n createTable: true,\n})\nexport class TaonCmsApplicationHookEntity extends TaonBaseEntity<TaonCmsApplicationHookEntity> {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ type: 'varchar', unique: true })\n hook: TaonCmsApplicationHook;\n\n @Column({ type: 'integer', nullable: true, unique: true })\n contentId: number | null;\n\n @OneToOne(\n () => TaonCmsContentEntity,\n content => content.applicationHook,\n { nullable: true, onDelete: 'SET NULL' },\n )\n @JoinColumn({ name: 'contentId', referencedColumnName: 'id' })\n content: TaonCmsContentEntity | null;\n}\n","import { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\n\nexport enum TaonCmsContentType {\n Normal = 'normal',\n Video = 'video',\n Audio = 'audio',\n Attachment = 'attachment',\n}\n\nexport enum TaonCmsContentState {\n Active = 'active',\n Inactive = 'inactive',\n}\n\nexport interface TaonCmsContentFields {\n type: TaonCmsContentType;\n title: string;\n slug: string;\n body: string | null;\n videoKey: string | null;\n audioKey: string | null;\n attachmentKey: string | null;\n thumbnailKey: string | null;\n excerpt: string | null;\n categoryId: number | null;\n authorUserId: number | null;\n status: 'draft' | 'published' | 'archived';\n publishedAt: Date | null;\n applyPermissionsToRelatedPosts: boolean;\n}\n\nexport interface TaonCmsPermissionConfiguration {\n permissions: TaonPermissionEntity[];\n source: { id: number; title: string } | null;\n}\n\nexport interface TaonCmsCreateContent\n extends\n Pick<TaonCmsContentFields, 'title' | 'slug'>,\n Partial<Omit<TaonCmsContentFields, 'title' | 'slug'>> {\n tagIds?: number[];\n relatedPostIds?: number[];\n permissionIds?: number[];\n applicationHook?: TaonCmsApplicationHook | null;\n}\n\nexport interface TaonCmsUpdateContent extends Partial<TaonCmsContentFields> {\n tagIds?: number[];\n relatedPostIds?: number[];\n permissionIds?: number[];\n applicationHook?: TaonCmsApplicationHook | null;\n expectedVersion: number;\n}\n\nexport interface TaonCmsRestoreContent {\n revisionNumber: number;\n expectedVersion: number;\n}\n\nexport interface TaonCmsContentSnapshot extends TaonCmsContentFields {\n tagIds: number[];\n relatedPostIds?: number[];\n permissionIds: number[];\n}\nimport type { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\n","//#region imports\nimport { Column, JoinTable, ManyToMany, OneToOne, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\n\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\n\nimport { TaonCmsContentDefaultsValues } from './taon-cms-content.constants';\nimport { TaonCmsContentType } from './taon-cms-content.models';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentEntity',\n createTable: true,\n})\nexport class TaonCmsContentEntity extends TaonBaseEntity<TaonCmsContentEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'varchar', default: TaonCmsContentType.Normal })\n //#endregion\n type: TaonCmsContentType = TaonCmsContentType.Normal;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n title: string;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n slug: string;\n\n //#region @websql\n @ManyToMany(() => TaonCmsContentEntity)\n @JoinTable({\n name: 'taon_cms_related_posts',\n joinColumn: { name: 'contentId', referencedColumnName: 'id' },\n inverseJoinColumn: { name: 'relatedPostId', referencedColumnName: 'id' },\n })\n //#endregion\n relatedPosts: TaonCmsContentEntity[];\n\n //#region @websql\n @OneToOne(\n () => TaonCmsApplicationHookEntity,\n applicationHook => applicationHook.content,\n )\n //#endregion\n applicationHook: TaonCmsApplicationHookEntity | null;\n\n //#region @websql\n @ManyToMany(() => TaonPermissionEntity)\n @JoinTable({\n name: 'taon_cms_content_permissions',\n joinColumn: { name: 'contentId', referencedColumnName: 'id' },\n inverseJoinColumn: { name: 'permissionId', referencedColumnName: 'id' },\n })\n //#endregion\n permissions: TaonPermissionEntity[];\n\n //#region @websql\n @Column({ type: 'boolean', default: false })\n //#endregion\n applyPermissionsToRelatedPosts: boolean = false;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n excerpt: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n body: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n videoKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n audioKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n attachmentKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n thumbnailKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n categoryId: number | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n authorUserId: number | null;\n\n //#region @websql\n @Column({ type: 'varchar', default: 'draft' })\n //#endregion\n status: string;\n // draft | published | archived\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n publishedAt: Date | null;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}","export const TaonCmsApplicationHook = {\n HOME_HERO: 'home-hero',\n HOME_FEATURED_POST: 'home-featured-post',\n SHOP_PROMOTION: 'shop-promotion',\n LOGIN_INFO: 'login-info',\n FOOTER_ABOUT: 'footer-about',\n} as const;\n\nexport type TaonCmsApplicationHook =\n (typeof TaonCmsApplicationHook)[keyof typeof TaonCmsApplicationHook];\n","import { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport { TaonBaseMigration, TaonMigration, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName } from 'taon/websql-prod';\nimport { QueryRunner, Table } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\n\n//#region Migration class for context \"CmsContext\"\n@TaonMigration({\n className: 'CmsContext_1792506757808_applicaitonHooks',\n})\nexport class CmsContext_1792506757808_applicaitonHooks extends TaonBaseMigration {\n APPLICATION_HOOK_TABLE = ClassHelpers__NS__getName(TaonCmsApplicationHookEntity);\n\n CONTENT_TABLE = ClassHelpers__NS__getName(TaonCmsContentEntity);\n\n //#region up\n async up(queryRunner: QueryRunner): Promise<any> {\n await queryRunner.startTransaction();\n try {\n if (!(await queryRunner.hasTable(this.APPLICATION_HOOK_TABLE))) {\n await queryRunner.createTable(\n new Table({\n name: this.APPLICATION_HOOK_TABLE,\n columns: [\n {\n name: 'id',\n type: 'integer',\n isPrimary: true,\n isGenerated: true,\n generationStrategy: 'increment',\n },\n { name: 'hook', type: 'varchar', isUnique: true },\n {\n name: 'contentId',\n type: 'integer',\n isNullable: true,\n isUnique: true,\n },\n ],\n foreignKeys: [\n {\n columnNames: ['contentId'],\n referencedTableName: this.CONTENT_TABLE,\n referencedColumnNames: ['id'],\n onDelete: 'SET NULL',\n },\n ],\n }),\n true,\n );\n }\n\n await this.persistApplicationHooks(queryRunner);\n await queryRunner.commitTransaction();\n } catch (error) {\n console.error('Error in migration:', error);\n await queryRunner.rollbackTransaction();\n throw error;\n }\n }\n //#endregion\n\n //#region down\n async down(queryRunner: QueryRunner): Promise<any> {\n if (await queryRunner.hasTable(this.APPLICATION_HOOK_TABLE)) {\n await queryRunner.dropTable(this.APPLICATION_HOOK_TABLE, true);\n }\n }\n //#endregion\n\n protected getApplicationHooks(): Record<string, string> {\n return TaonCmsApplicationHook;\n }\n\n private async persistApplicationHooks(\n queryRunner: QueryRunner,\n ): Promise<void> {\n const repository = queryRunner.manager.getRepository(\n TaonCmsApplicationHookEntity,\n );\n for (const hook of Object.values(this.getApplicationHooks())) {\n if (!(await repository.findOneBy({ hook: hook as any }))) {\n await repository.save(\n repository.create({ hook: hook as any, contentId: null }),\n );\n }\n }\n }\n}\n//#endregion","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CmsContext_1792506757808_applicaitonHooks } from './1792506757808_applicaitonHooks';\nexport { CmsContext_1792506757808_applicaitonHooks } from './1792506757808_applicaitonHooks';\n// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const MIGRATIONS_CLASSES_FOR_CmsContext = {\n /* 20-10-2026 16:32:37 */ CmsContext_1792506757808_applicaitonHooks,\n};\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';\n","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.cms';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/cms';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.20';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","//#region tnp-helpers cli template\nimport { UtilsJson__NS__AttrJsoncProp, UtilsJson__NS__getAtrributiesFromJsonWithComments, UtilsJson__NS__getAttributiesFromComment, UtilsJson__NS__getValue, UtilsJson__NS__readJson, UtilsJson__NS__readJsonWithComments, UtilsJson__NS__setValue, UtilsJson__NS__validateLodashPath } from 'tnp-core/websql-prod';\nimport { BaseCommandLineFeature, Helpers__NS___fixCommand, Helpers__NS__ActionInstance, Helpers__NS__actionStarted, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsVerboseModeOrTnp, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logTaskDone, Helpers__NS__logTaskStarted, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC } from 'tnp-helpers/websql-prod';\n/* */ \n//#endregion\n\n//#region CLI / global scope\n/**\n * This class is for handling global arguments. *\n * Cli engine will parse: hello:world:from:global:arg to helloWorldFromGlobalArg\n * (lower case, camel case) .. so you don't need to worry about misspelling\n * arguments\n */\nclass $Global extends BaseCommandLineFeature<{}> {\n /**\n * When you execute cli without arguments:`$ cli`\n */\n public _() {\n console.log(`Hello world from cli`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli hello:world:from:global:arg`\n * (or `$ cli helloWorldFromGlobalArg`)\n */\n helloWorldFromGlobalArg() {\n console.log('hello world from global argument!');\n this._exit(0);\n }\n}\n//#endregion\n\n//#region CLI / Version Scope\n/**\n *\n */\nclass $Version extends BaseCommandLineFeature<{\n anyCLIparamsHere: string;\n}> {\n /**\n * When you execute: `$ cli version`\n */\n public _() {\n console.log(`Hello world from version argument`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli version:getFromPackageJson`\n */\n public getFromPackageJson() {\n const ver = UtilsJson__NS__getValue(\n this.project.pathFor('package.json'),\n 'version',\n {\n defaultValue: '<not defined>',\n },\n );\n console.log(`Version from packageJson ${ver}`);\n this._exit(0);\n }\n}\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(\n argsv: string[],\n filename: string,\n): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;","//#region imports\nimport { Column, CustomColumn, TaonBaseAbstractEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsCategoryDefaultsValues } from './taon-cms-category.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsCategoryEntity',\n createTable: true,\n})\nexport class TaonCmsCategoryEntity extends TaonBaseAbstractEntity<TaonCmsCategoryEntity> {\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n parentCategoryId: number | null;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n name: string;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n slug: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n description: string | null;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n sortOrder: number;\n}","import { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentFields } from './taon-cms-content.models';\nimport { TaonCmsContentType } from './taon-cms-content.models';\n\nexport function contentError(message: string, status = 400): never {\n Taon__NS__error({ message, status });\n throw new Error(message);\n}\n\nexport function requireContentId(value: number, name = 'contentId'): void {\n if (!Number.isSafeInteger(value) || value <= 0) {\n contentError(`${name} must be a positive integer.`);\n }\n}\n\nexport function requireContentVersion(\n value: number,\n name = 'expectedVersion',\n): void {\n if (!Number.isSafeInteger(value) || value < 0) {\n contentError(`${name} must be a non-negative integer.`);\n }\n}\n\nexport function validateContentInput(\n input: Partial<TaonCmsContentFields> & {\n tagIds?: number[];\n relatedPostIds?: number[];\n permissionIds?: number[];\n },\n creating = false,\n): void {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n contentError('Content must be an object.');\n }\n if (\n input.type !== undefined &&\n !Object.values(TaonCmsContentType).includes(input.type)\n ) {\n contentError('type must be normal, video, audio, or attachment.');\n }\n for (const field of ['title', 'slug'] as const) {\n if (creating || input[field] !== undefined) {\n if (typeof input[field] !== 'string' || !input[field].trim()) {\n contentError(`${field} must be a non-empty string.`);\n }\n }\n }\n for (const field of [\n 'body',\n 'excerpt',\n 'videoKey',\n 'audioKey',\n 'attachmentKey',\n 'thumbnailKey',\n ] as const) {\n if (\n input[field] !== undefined &&\n input[field] !== null &&\n typeof input[field] !== 'string'\n ) {\n contentError(`${field} must be a string or null.`);\n }\n }\n for (const field of ['categoryId', 'authorUserId'] as const) {\n if (input[field] !== undefined && input[field] !== null) {\n requireContentId(input[field], field);\n }\n }\n if (\n input.applyPermissionsToRelatedPosts !== undefined &&\n typeof input.applyPermissionsToRelatedPosts !== 'boolean'\n ) {\n contentError('applyPermissionsToRelatedPosts must be a boolean.');\n }\n if (\n input.status !== undefined &&\n !['draft', 'published', 'archived'].includes(input.status)\n ) {\n contentError('status must be draft, published, or archived.');\n }\n if (input.publishedAt !== undefined && input.publishedAt !== null) {\n if (\n !(\n input.publishedAt instanceof Date ||\n typeof input.publishedAt === 'string'\n ) ||\n Number.isNaN(new Date(input.publishedAt).getTime())\n ) {\n contentError('publishedAt must be a valid date or null.');\n }\n }\n for (const field of ['tagIds', 'relatedPostIds', 'permissionIds'] as const) {\n const ids = input[field];\n if (ids !== undefined) {\n if (!Array.isArray(ids)) {\n contentError(`${field} must be an array.`);\n }\n for (const id of ids) {\n requireContentId(\n id,\n field === 'tagIds'\n ? 'tagId'\n : field === 'relatedPostIds'\n ? 'relatedPostId'\n : 'permissionId',\n );\n }\n }\n }\n}","import { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nconst t = Translation.for('src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts', {\"src/lib/taon-cms-category/taon-cms-category.controller.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.controller.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.controller.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.controller.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-category.repository.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.repository.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.repository.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.repository.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data')).default}} as any);\n\nexport interface TaonCmsTaxonomyFields {\n name: string;\n slug: string;\n description: string | null;\n}\n\nexport interface TaonCmsCategoryFields extends TaonCmsTaxonomyFields {\n parentCategoryId: number | null;\n sortOrder: number;\n}\n\nexport function validateTaxonomy(input: TaonCmsTaxonomyFields): void {\n if (\n !input ||\n typeof input.name !== 'string' ||\n !input.name.trim() ||\n typeof input.slug !== 'string' ||\n !input.slug.trim() ||\n (input.description !== null && typeof input.description !== 'string')\n ) {\n contentError(\n t.gettext('Name, slug, and a valid description are required.'),\n );\n }\n}\n\nexport function validateCategoryHierarchy(\n id: number | null,\n parentId: number | null,\n categories: { id: number; parentCategoryId: number | null }[],\n): void {\n const visited = new Set<number>();\n if (id !== null) {\n visited.add(id);\n }\n let current = parentId;\n while (current !== null) {\n if (visited.has(current)) {\n contentError(t.gettext('A category cannot be its own ancestor.'));\n }\n visited.add(current);\n const parent = categories.find(category => category.id === current);\n if (!parent) {\n contentError(t.gettext('The parent category does not exist.'));\n }\n current = parent.parentCategoryId;\n }\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport { requireContentId } from '../taon-cms-content/taon-cms-content.validation';\nimport {\n TaonCmsCategoryFields,\n validateCategoryHierarchy,\n validateTaxonomy,\n} from './taon-cms-taxonomy.validation';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-cms-category/taon-cms-category.repository.ts', {\"src/lib/taon-cms-category/taon-cms-category.controller.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.controller.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.controller.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.controller.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-category.repository.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.repository.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.repository.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.repository.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data')).default}} as any);\n\n@TaonRepository({\n className: 'TaonCmsCategoryRepository',\n})\nexport class TaonCmsCategoryRepository extends TaonBaseRepository<TaonCmsCategoryEntity> {\n entityClassResolveFn: () => typeof TaonCmsCategoryEntity = () =>\n TaonCmsCategoryEntity;\n\n async saveCategory(\n id: number | null,\n input: TaonCmsCategoryFields,\n ): Promise<TaonCmsCategoryEntity> {\n //#region @websqlFunc\n validateTaxonomy(input);\n if (!Number.isSafeInteger(input.sortOrder)) {\n contentError(t.gettext('Sort order must be an integer.'));\n }\n if (id !== null) {\n requireContentId(id);\n }\n if (input.parentCategoryId !== null) {\n requireContentId(input.parentCategoryId);\n }\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const repository = manager.getRepository(TaonCmsCategoryEntity);\n if (id !== null) {\n await this.requireCategory(id, manager);\n }\n validateCategoryHierarchy(\n id,\n input.parentCategoryId,\n await repository.find(),\n );\n const slug = input.slug.trim();\n const existing = await repository.findOneBy({ slug });\n if (existing && existing.id !== id) {\n contentError(t.gettext('This category slug is already in use.'), 409);\n }\n return repository.save(\n repository.create({\n ...(id === null ? {} : { id }),\n name: input.name.trim(),\n slug,\n description: input.description,\n sortOrder: input.sortOrder,\n parentCategoryId: input.parentCategoryId,\n }),\n );\n });\n //#endregion\n }\n\n async deleteCategory(id: number): Promise<void> {\n //#region @websqlFunc\n requireContentId(id);\n await this.connection.transaction('SERIALIZABLE', async manager => {\n await this.requireCategory(id, manager);\n const children = await manager\n .getRepository(TaonCmsCategoryEntity)\n .countBy({ parentCategoryId: id });\n const posts = await manager\n .getRepository(TaonCmsContentEntity)\n .countBy({ categoryId: id });\n if (children || posts) {\n contentError(\n t.gettext(\n 'Reassign child categories and posts before deleting this category.',\n ),\n 409,\n );\n }\n await manager.getRepository(TaonCmsCategoryEntity).delete(id);\n });\n //#endregion\n }\n\n async requireCategory(id: number, manager: EntityManager): Promise<void> {\n //#region @websqlFunc\n const category = await manager\n .getRepository<TaonCmsCategoryEntity>(this.target)\n .findOneBy({ id });\n if (!category) {\n contentError(`Category ${id} does not exist.`, 404);\n }\n //#endregion\n }\n}","//#region imports\nimport { TaonSessionRepository } from '@taon-dev/session/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { TaonController, TaonBaseCrudController, Query, GET, POST, DELETE, Body, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryRepository } from './taon-cms-category.repository';\nimport type { TaonCmsCategoryFields } from './taon-cms-taxonomy.validation';\n//#endregion\n\n@TaonController<TaonCmsCategoryController>({\n className: 'TaonCmsCategoryController',\n allowedMethods: ['getAll', 'saveCategory', 'deleteCategory'],\n})\nexport class TaonCmsCategoryController extends TaonBaseCrudController<TaonCmsCategoryEntity> {\n entityClassResolveFn: () => typeof TaonCmsCategoryEntity = () =>\n TaonCmsCategoryEntity;\n\n taonCmsCategoryRepository = this.injectCustomRepo(TaonCmsCategoryRepository);\n\n private readonly sessions = this.injectCustomRepo(TaonSessionRepository);\n\n private readonly auth = this.injectCustomRepo(TaonAuthContextRepository);\n\n protected async beforeEachRequest({\n req,\n res,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsCategoryController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @POST()\n saveCategory(\n @Query('id') id: number | null,\n @Body() input: TaonCmsCategoryFields,\n ): Taon__NS__Response<TaonCmsCategoryEntity> {\n //#region @websqlFunc\n return () => this.taonCmsCategoryRepository.saveCategory(id ?? null, input);\n //#endregion\n }\n\n @DELETE()\n deleteCategory(@Query('id') id: number): Taon__NS__Response<void> {\n //#region @websqlFunc\n return () => this.taonCmsCategoryRepository.deleteCategory(id);\n //#endregion\n }\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsCategoryProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsCategoryProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsCategoryMiddleware',\n})\nexport class TaonCmsCategoryMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryProvider } from './taon-cms-category.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsCategorySubscriber>({\n className: 'TaonCmsCategorySubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsCategorySubscriber extends TaonBaseSubscriberForEntity {\n taonCmsCategoryProvider = this.injectProvider(TaonCmsCategoryProvider);\n listenTo(): typeof TaonCmsCategoryEntity {\n return TaonCmsCategoryEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryController } from './taon-cms-category.controller';\nimport { TaonCmsCategoryRepository } from './taon-cms-category.repository';\nimport { TaonCmsCategoryProvider } from './taon-cms-category.provider';\nimport { TaonCmsCategoryMiddleware } from './taon-cms-category.middleware';\nimport { TaonCmsCategorySubscriber } from './taon-cms-category.subscriber';\n//#endregion\n\nexport const TaonCmsCategoryAbstractContext = createContext(() => ({\n contextName: 'TaonCmsCategoryAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsCategoryEntity },\n controllers: { TaonCmsCategoryController },\n repositories: { TaonCmsCategoryRepository },\n providers: { TaonCmsCategoryProvider },\n middlewares: { TaonCmsCategoryMiddleware },\n subscribers: { TaonCmsCategorySubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsCommentDefaultsValues } from './taon-cms-comment.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsCommentEntity',\n createTable: true,\n})\nexport class TaonCmsCommentEntity extends TaonBaseEntity<TaonCmsCommentEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n contentId: number;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n parentCommentId: number | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n userId: number | null;\n\n //#region @websql\n @Column({ type: 'text' })\n //#endregion\n body: string;\n\n //#region @websql\n @Column({ type: 'varchar', default: 'published' })\n //#endregion\n status: string;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsCommentRepository',\n})\nexport class TaonCmsCommentRepository extends TaonBaseRepository<TaonCmsCommentEntity> {\n entityClassResolveFn: () => typeof TaonCmsCommentEntity = () => TaonCmsCommentEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentRepository } from './taon-cms-comment.repository';\n//#endregion\n\n@TaonController<TaonCmsCommentController>({\n className: 'TaonCmsCommentController',\n allowedMethods: []\n})\nexport class TaonCmsCommentController extends TaonBaseCrudController<TaonCmsCommentEntity> {\n entityClassResolveFn: () => typeof TaonCmsCommentEntity = () => TaonCmsCommentEntity;\n\n taonCmsCommentRepository = this.injectCustomRepo(TaonCmsCommentRepository);\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsCommentRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsCommentController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsCommentProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsCommentProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsCommentMiddleware',\n})\nexport class TaonCmsCommentMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentProvider } from './taon-cms-comment.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsCommentSubscriber>({\n className: 'TaonCmsCommentSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsCommentSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsCommentProvider = this.injectProvider(TaonCmsCommentProvider);\n listenTo(): typeof TaonCmsCommentEntity {\n return TaonCmsCommentEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentController } from './taon-cms-comment.controller';\nimport { TaonCmsCommentRepository } from './taon-cms-comment.repository';\nimport { TaonCmsCommentProvider } from './taon-cms-comment.provider';\nimport { TaonCmsCommentMiddleware } from './taon-cms-comment.middleware';\nimport { TaonCmsCommentSubscriber } from './taon-cms-comment.subscriber';\n//#endregion\n\nexport const TaonCmsCommentAbstractContext = createContext(() => ({\n contextName: 'TaonCmsCommentAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsCommentEntity },\n controllers: { TaonCmsCommentController },\n repositories: { TaonCmsCommentRepository },\n providers: { TaonCmsCommentProvider },\n middlewares: { TaonCmsCommentMiddleware },\n subscribers: { TaonCmsCommentSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport type { TaonCmsContentSnapshot } from '../taon-cms-content/taon-cms-content.models';\n\nimport { TaonCmsContentRevisionDefaultsValues } from './taon-cms-content-revision.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentRevisionEntity',\n createTable: true,\n})\nexport class TaonCmsContentRevisionEntity extends TaonBaseEntity<TaonCmsContentRevisionEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n contentId: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n revisionNumber: number;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n title: string;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n body: string | null;\n\n //#region @websql\n @Column({ type: 'simple-json', nullable: true })\n //#endregion\n snapshot: TaonCmsContentSnapshot | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n createdByUserId: number | null;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\n\nimport type { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport type { TaonCmsContentSnapshot } from '../taon-cms-content/taon-cms-content.models';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentRevisionRepository',\n})\nexport class TaonCmsContentRevisionRepository extends TaonBaseRepository<TaonCmsContentRevisionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentRevisionEntity = () =>\n TaonCmsContentRevisionEntity;\n\n async listForContent(\n contentId: number,\n manager: EntityManager,\n ): Promise<TaonCmsContentRevisionEntity[]> {\n //#region @websqlFunc\n return manager\n .getRepository<TaonCmsContentRevisionEntity>(this.target)\n .find({\n where: { contentId },\n order: { revisionNumber: 'DESC' },\n });\n //#endregion\n }\n\n async requireRevision(\n contentId: number,\n revisionNumber: number,\n manager: EntityManager,\n ): Promise<TaonCmsContentRevisionEntity> {\n //#region @websqlFunc\n const revision = await manager\n .getRepository<TaonCmsContentRevisionEntity>(this.target)\n .findOneBy({ contentId, revisionNumber });\n if (!revision) {\n contentError(\n `Revision ${revisionNumber} of content ${contentId} does not exist.`,\n 404,\n );\n }\n return revision;\n //#endregion\n }\n\n async recordContent(\n content: TaonCmsContentEntity,\n snapshot: TaonCmsContentSnapshot,\n manager: EntityManager,\n ): Promise<TaonCmsContentRevisionEntity> {\n //#region @websqlFunc\n const repository = manager.getRepository<TaonCmsContentRevisionEntity>(\n this.target,\n );\n return repository.save(\n repository.create({\n contentId: content.id,\n revisionNumber: content.version,\n version: 1,\n title: content.title,\n body: content.body,\n snapshot,\n createdByUserId: content.authorUserId,\n createdAt: new Date(),\n }),\n );\n //#endregion\n }\n}\n","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionRepository } from './taon-cms-content-revision.repository';\n//#endregion\n\n@TaonController<TaonCmsContentRevisionController>({\n className: 'TaonCmsContentRevisionController',\n allowedMethods: [],\n})\nexport class TaonCmsContentRevisionController extends TaonBaseCrudController<TaonCmsContentRevisionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentRevisionEntity = () =>\n TaonCmsContentRevisionEntity;\n\n taonCmsContentRevisionRepository = this.injectCustomRepo(\n TaonCmsContentRevisionRepository,\n );\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentRevisionProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentRevisionProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentRevisionMiddleware',\n})\nexport class TaonCmsContentRevisionMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionProvider } from './taon-cms-content-revision.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentRevisionSubscriber>({\n className: 'TaonCmsContentRevisionSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentRevisionSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentRevisionProvider = this.injectProvider(TaonCmsContentRevisionProvider);\n listenTo(): typeof TaonCmsContentRevisionEntity {\n return TaonCmsContentRevisionEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionController } from './taon-cms-content-revision.controller';\nimport { TaonCmsContentRevisionRepository } from './taon-cms-content-revision.repository';\nimport { TaonCmsContentRevisionProvider } from './taon-cms-content-revision.provider';\nimport { TaonCmsContentRevisionMiddleware } from './taon-cms-content-revision.middleware';\nimport { TaonCmsContentRevisionSubscriber } from './taon-cms-content-revision.subscriber';\n//#endregion\n\nexport const TaonCmsContentRevisionAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentRevisionAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentRevisionEntity },\n controllers: { TaonCmsContentRevisionController },\n repositories: { TaonCmsContentRevisionRepository },\n providers: { TaonCmsContentRevisionProvider },\n middlewares: { TaonCmsContentRevisionMiddleware },\n subscribers: { TaonCmsContentRevisionSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, TaonBaseAbstractEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentTagDefaultsValues } from './taon-cms-content-tag.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentTagEntity',\n createTable: true,\n})\nexport class TaonCmsContentTagEntity extends TaonBaseAbstractEntity<TaonCmsContentTagEntity> {\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n contentId: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n tagId: number;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentTagRepository',\n})\nexport class TaonCmsContentTagRepository extends TaonBaseRepository<TaonCmsContentTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentTagEntity = () =>\n TaonCmsContentTagEntity;\n\n async findTagIds(\n contentId: number,\n manager: EntityManager,\n ): Promise<number[]> {\n //#region @websqlFunc\n const links = await manager\n .getRepository<TaonCmsContentTagEntity>(this.target)\n .find({ where: { contentId }, order: { tagId: 'ASC' } });\n return links.map(link => link.tagId);\n //#endregion\n }\n\n async replaceTags(\n contentId: number,\n tagIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const repository = manager.getRepository<TaonCmsContentTagEntity>(\n this.target,\n );\n await repository.delete({ contentId });\n const links = [...new Set(tagIds)].map(tagId =>\n repository.create({ contentId, tagId }),\n );\n if (links.length) {\n await repository.save(links);\n }\n //#endregion\n }\n}\n","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagRepository } from './taon-cms-content-tag.repository';\n//#endregion\n\n@TaonController<TaonCmsContentTagController>({\n className: 'TaonCmsContentTagController',\n allowedMethods: [],\n})\nexport class TaonCmsContentTagController extends TaonBaseCrudController<TaonCmsContentTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentTagEntity = () =>\n TaonCmsContentTagEntity;\n\n taonCmsContentTagRepository = this.injectCustomRepo(\n TaonCmsContentTagRepository,\n );\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentTagProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentTagProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentTagMiddleware',\n})\nexport class TaonCmsContentTagMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagProvider } from './taon-cms-content-tag.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentTagSubscriber>({\n className: 'TaonCmsContentTagSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentTagSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentTagProvider = this.injectProvider(TaonCmsContentTagProvider);\n listenTo(): typeof TaonCmsContentTagEntity {\n return TaonCmsContentTagEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagController } from './taon-cms-content-tag.controller';\nimport { TaonCmsContentTagRepository } from './taon-cms-content-tag.repository';\nimport { TaonCmsContentTagProvider } from './taon-cms-content-tag.provider';\nimport { TaonCmsContentTagMiddleware } from './taon-cms-content-tag.middleware';\nimport { TaonCmsContentTagSubscriber } from './taon-cms-content-tag.subscriber';\n//#endregion\n\nexport const TaonCmsContentTagAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentTagAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentTagEntity },\n controllers: { TaonCmsContentTagController },\n repositories: { TaonCmsContentTagRepository },\n providers: { TaonCmsContentTagProvider },\n middlewares: { TaonCmsContentTagMiddleware },\n subscribers: { TaonCmsContentTagSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, TaonBaseAbstractEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsTagDefaultsValues } from './taon-cms-tag.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsTagEntity',\n createTable: true,\n})\nexport class TaonCmsTagEntity extends TaonBaseAbstractEntity<TaonCmsTagEntity> {\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n name: string;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n slug: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n description: string | null;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\nimport { requireContentId } from '../taon-cms-content/taon-cms-content.validation';\nimport { TaonCmsContentTagEntity } from '../taon-cms-content-tag/taon-cms-content-tag.entity';\nimport {\n TaonCmsTaxonomyFields,\n validateTaxonomy,\n} from '../taon-cms-category/taon-cms-taxonomy.validation';\n\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-cms-tag/taon-cms-tag.repository.ts', {\"src/lib/taon-cms-tag/taon-cms-tag.controller.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-tag.controller.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-tag.controller.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-tag/taon-cms-tag.repository.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-tag.repository.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-tag.repository.ts.de-DE.i18n.data')).default}} as any);\n\n@TaonRepository({\n className: 'TaonCmsTagRepository',\n})\nexport class TaonCmsTagRepository extends TaonBaseRepository<TaonCmsTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsTagEntity = () => TaonCmsTagEntity;\n\n async saveTag(\n id: number | null,\n input: TaonCmsTaxonomyFields,\n ): Promise<TaonCmsTagEntity> {\n //#region @websqlFunc\n validateTaxonomy(input);\n if (id !== null) {\n requireContentId(id);\n }\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const repository = manager.getRepository(TaonCmsTagEntity);\n if (id !== null) {\n await this.requireTags([id], manager);\n }\n const name = input.name.trim();\n const slug = input.slug.trim();\n const existing = await repository.find({ where: [{ name }, { slug }] });\n if (existing.some(tag => tag.id !== id)) {\n contentError(\n t.gettext('This tag name or slug is already in use.'),\n 409,\n );\n }\n return repository.save(\n repository.create({\n ...(id === null ? {} : { id }),\n name,\n slug,\n description: input.description,\n }),\n );\n });\n //#endregion\n }\n\n async deleteTag(id: number): Promise<void> {\n //#region @websqlFunc\n requireContentId(id);\n await this.connection.transaction('SERIALIZABLE', async manager => {\n await this.requireTags([id], manager);\n if (\n await manager\n .getRepository(TaonCmsContentTagEntity)\n .countBy({ tagId: id })\n ) {\n contentError(\n t.gettext('Remove this tag from posts before deleting it.'),\n 409,\n );\n }\n await manager.getRepository(TaonCmsTagEntity).delete(id);\n });\n //#endregion\n }\n\n async requireTags(ids: number[], manager: EntityManager): Promise<void> {\n //#region @websqlFunc\n for (const id of new Set(ids)) {\n const tag = await manager\n .getRepository<TaonCmsTagEntity>(this.target)\n .findOneBy({ id });\n if (!tag) {\n contentError(`Tag ${id} does not exist.`, 404);\n }\n }\n //#endregion\n }\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonSessionRepository } from '@taon-dev/session/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { TaonController, TaonBaseCrudController, Query, GET, POST, DELETE, Body, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport type { TaonCmsTaxonomyFields } from '../taon-cms-category/taon-cms-taxonomy.validation';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagRepository } from './taon-cms-tag.repository';\n//#endregion\n\n@TaonController<TaonCmsTagController>({\n className: 'TaonCmsTagController',\n allowedMethods: ['getAll', 'saveTag', 'deleteTag'],\n})\nexport class TaonCmsTagController extends TaonBaseCrudController<TaonCmsTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsTagEntity = () => TaonCmsTagEntity;\n\n taonCmsTagRepository = this.injectCustomRepo(TaonCmsTagRepository);\n\n private readonly sessions = this.injectCustomRepo(TaonSessionRepository);\n\n private readonly auth = this.injectCustomRepo(TaonAuthContextRepository);\n\n protected async beforeEachRequest({\n req,\n res,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsTagController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @POST()\n saveTag(\n @Query('id') id: number | null,\n @Body() input: TaonCmsTaxonomyFields,\n ): Taon__NS__Response<TaonCmsTagEntity> {\n //#region @websqlFunc\n return () => this.taonCmsTagRepository.saveTag(id ?? null, input);\n //#endregion\n }\n\n @DELETE()\n deleteTag(@Query('id') id: number): Taon__NS__Response<void> {\n //#region @websqlFunc\n return () => this.taonCmsTagRepository.deleteTag(id);\n //#endregion\n }\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsTagRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsTagController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsTagProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsTagProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsTagMiddleware',\n})\nexport class TaonCmsTagMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagProvider } from './taon-cms-tag.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsTagSubscriber>({\n className: 'TaonCmsTagSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsTagSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsTagProvider = this.injectProvider(TaonCmsTagProvider);\n listenTo(): typeof TaonCmsTagEntity {\n return TaonCmsTagEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagController } from './taon-cms-tag.controller';\nimport { TaonCmsTagRepository } from './taon-cms-tag.repository';\nimport { TaonCmsTagProvider } from './taon-cms-tag.provider';\nimport { TaonCmsTagMiddleware } from './taon-cms-tag.middleware';\nimport { TaonCmsTagSubscriber } from './taon-cms-tag.subscriber';\n//#endregion\n\nexport const TaonCmsTagAbstractContext = createContext(() => ({\n contextName: 'TaonCmsTagAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsTagEntity },\n controllers: { TaonCmsTagController },\n repositories: { TaonCmsTagRepository },\n providers: { TaonCmsTagProvider },\n middlewares: { TaonCmsTagMiddleware },\n subscribers: { TaonCmsTagSubscriber },\n}));\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { In, Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\nimport { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\n\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport type { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\nimport { TaonCmsCategoryRepository } from '../taon-cms-category/taon-cms-category.repository';\nimport type { TaonCmsContentRevisionEntity } from '../taon-cms-content-revision/taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionRepository } from '../taon-cms-content-revision/taon-cms-content-revision.repository';\nimport { TaonCmsContentTagRepository } from '../taon-cms-content-tag/taon-cms-content-tag.repository';\nimport { TaonCmsTagRepository } from '../taon-cms-tag/taon-cms-tag.repository';\n\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentType } from './taon-cms-content.models';\nimport type {\n TaonCmsContentFields,\n TaonCmsContentSnapshot,\n TaonCmsCreateContent,\n TaonCmsRestoreContent,\n TaonCmsUpdateContent,\n TaonCmsPermissionConfiguration,\n} from './taon-cms-content.models';\nimport {\n contentError,\n requireContentId,\n requireContentVersion,\n validateContentInput,\n} from './taon-cms-content.validation';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentRepository',\n})\nexport class TaonCmsContentRepository extends TaonBaseRepository<TaonCmsContentEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentEntity = () =>\n TaonCmsContentEntity;\n\n private readonly taonCmsContentRevisionRepository = this.injectCustomRepo(\n TaonCmsContentRevisionRepository,\n );\n\n private readonly taonCmsContentTagRepository = this.injectCustomRepo(\n TaonCmsContentTagRepository,\n );\n\n private readonly taonCmsCategoryRepository = this.injectCustomRepo(\n TaonCmsCategoryRepository,\n );\n\n private readonly tags = this.injectCustomRepo(TaonCmsTagRepository);\n\n async listTagIds(id: number): Promise<number[]> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction(async manager => {\n await this.requireContent(id, manager);\n return this.taonCmsContentTagRepository.findTagIds(id, manager);\n });\n //#endregion\n }\n\n async createContent(\n input: TaonCmsCreateContent,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n validateContentInput(input, true);\n return this.connection.transaction('SERIALIZABLE', manager =>\n this.createContentWithManager(input, manager),\n );\n //#endregion\n }\n\n async duplicateContent(id: number): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const source = await this.requireContent(id, manager);\n const snapshot = await this.snapshotOf(source, manager);\n const configuration = await this.resolvePermissionConfiguration(\n source,\n manager,\n );\n const titleSuffix = source.title.match(/\\s+COPY(\\d+)$/i);\n const slugSuffix = source.slug.match(/-copy(\\d+)$/i);\n const baseTitle = source.title.replace(/(?:\\s+COPY\\d+)+$/i, '');\n const baseSlug = source.slug.replace(/(?:-copy\\d+)+$/i, '');\n let number =\n Math.max(Number(titleSuffix?.[1] ?? 0), Number(slugSuffix?.[1] ?? 0)) +\n 1;\n const repository = manager.getRepository<TaonCmsContentEntity>(\n this.target,\n );\n while (Number.isSafeInteger(number)) {\n const title = `${baseTitle} COPY${number}`;\n const slug = `${baseSlug}-copy${number}`;\n const existing = await repository.findOne({\n where: [{ title }, { slug }],\n });\n if (!existing) {\n return this.createContentWithManager(\n {\n ...snapshot,\n title,\n slug,\n relatedPostIds: [],\n applicationHook: null,\n // Inherited permissions become independent without related links.\n permissionIds: configuration.permissions.map(\n permission => permission.id,\n ),\n },\n manager,\n );\n }\n number += 1;\n }\n contentError('No available copy number could be generated.', 409);\n });\n //#endregion\n }\n\n private async createContentWithManager(\n input: TaonCmsCreateContent,\n manager: EntityManager,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n const fields = this.contentFields(input);\n const tagIds = [...new Set(input.tagIds ?? [])];\n const relatedPostIds = [...new Set(input.relatedPostIds ?? [])];\n const permissionIds = [...new Set(input.permissionIds ?? [])];\n await this.validateReferences(fields, tagIds, permissionIds, manager);\n await this.requireAvailableSlug(fields.slug, manager);\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n const now = new Date();\n const content = await repository.save(\n repository.create({\n ...fields,\n version: 1,\n createdAt: now,\n updatedAt: now,\n }),\n );\n await this.taonCmsContentTagRepository.replaceTags(\n content.id,\n tagIds,\n manager,\n );\n await this.replaceRelatedPosts(content.id, relatedPostIds, [], manager);\n await this.validatePermissionInheritance(manager);\n await this.replacePermissions(content.id, permissionIds, [], manager);\n await this.replaceApplicationHook(\n content.id,\n input.applicationHook ?? null,\n manager,\n );\n await this.taonCmsContentRevisionRepository.recordContent(\n content,\n { ...fields, tagIds, relatedPostIds, permissionIds },\n manager,\n );\n return this.requireContent(content.id, manager);\n //#endregion\n }\n\n async updateContent(\n id: number,\n input: TaonCmsUpdateContent,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n validateContentInput(input);\n requireContentVersion(input.expectedVersion);\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const current = await this.requireContent(id, manager);\n const snapshot = await this.snapshotOf(current, manager);\n const fields = this.contentFields(input, snapshot);\n const tagIds =\n input.tagIds === undefined\n ? snapshot.tagIds\n : [...new Set(input.tagIds)];\n const relatedPostIds =\n input.relatedPostIds === undefined\n ? snapshot.relatedPostIds\n : [...new Set(input.relatedPostIds)];\n const permissionIds =\n input.permissionIds === undefined\n ? snapshot.permissionIds\n : [...new Set(input.permissionIds)];\n return this.commitUpdate(\n current,\n input.expectedVersion,\n { ...fields, tagIds, relatedPostIds, permissionIds },\n manager,\n input.applicationHook,\n );\n });\n //#endregion\n }\n\n async archiveContent(\n id: number,\n expectedVersion: number,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n return this.updateContent(id, { status: 'archived', expectedVersion });\n //#endregion\n }\n\n async restoreContent(\n id: number,\n input: TaonCmsRestoreContent,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n if (!input || typeof input !== 'object') {\n contentError('Restore input must be an object.');\n }\n requireContentVersion(input.revisionNumber, 'revisionNumber');\n requireContentVersion(input.expectedVersion);\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const current = await this.requireContent(id, manager);\n const revision =\n await this.taonCmsContentRevisionRepository.requireRevision(\n id,\n input.revisionNumber,\n manager,\n );\n if (!revision.snapshot) {\n contentError(\n 'This legacy revision has no complete snapshot and cannot be restored.',\n 409,\n );\n }\n const storedSnapshot = revision.snapshot;\n const snapshotFields: (keyof TaonCmsContentSnapshot)[] = [\n 'type',\n 'title',\n 'slug',\n 'body',\n 'excerpt',\n 'categoryId',\n 'authorUserId',\n 'status',\n 'publishedAt',\n 'tagIds',\n ];\n if (snapshotFields.some(field => storedSnapshot[field] === undefined)) {\n contentError(\n 'This revision has an incomplete snapshot and cannot be restored.',\n 409,\n );\n }\n validateContentInput(revision.snapshot, true);\n const snapshot = {\n // Older complete snapshots predate primary media; preserve those keys.\n ...this.contentFields(\n revision.snapshot,\n await this.snapshotOf(current, manager),\n ),\n tagIds: revision.snapshot.tagIds,\n relatedPostIds: revision.snapshot.relatedPostIds ?? [],\n permissionIds: revision.snapshot.permissionIds ?? [],\n };\n return this.commitUpdate(\n current,\n input.expectedVersion,\n snapshot,\n manager,\n );\n });\n //#endregion\n }\n\n async listRevisions(id: number): Promise<TaonCmsContentRevisionEntity[]> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction(async manager => {\n await this.requireContent(id, manager);\n return this.taonCmsContentRevisionRepository.listForContent(id, manager);\n });\n //#endregion\n }\n\n async listCourses(): Promise<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n return this.connection\n .getRepository<TaonCmsContentEntity>(this.target)\n .createQueryBuilder('content')\n .innerJoin('content.relatedPosts', 'relatedPost')\n .where('content.status != :archived', { archived: 'archived' })\n .andWhere('content.thumbnailKey IS NOT NULL')\n .andWhere('content.thumbnailKey != :empty', { empty: '' })\n .distinct(true)\n .orderBy('content.id', 'ASC')\n .getMany();\n //#endregion\n }\n\n async listRelatedPosts(id: number): Promise<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction(\n async manager => (await this.requireContent(id, manager)).relatedPosts,\n );\n //#endregion\n }\n\n async listPermissions(id: number): Promise<TaonPermissionEntity[]> {\n //#region @websqlFunc\n requireContentId(id);\n return (await this.getPermissionConfiguration(id)).permissions;\n //#endregion\n }\n\n async getPermissionConfiguration(\n id: number,\n skipTransaction = false,\n ): Promise<TaonCmsPermissionConfiguration> {\n //#region @websqlFunc\n requireContentId(id);\n if (skipTransaction) {\n const manager = this.connection.manager;\n const post = await this.requireContent(id, manager);\n return await this.resolvePermissionConfiguration(post, manager);\n }\n return this.connection.transaction(async manager => {\n const post = await this.requireContent(id, manager);\n return await this.resolvePermissionConfiguration(post, manager);\n });\n //#endregion\n }\n\n private async resolvePermissionConfiguration(\n post: TaonCmsContentEntity,\n manager: EntityManager,\n ): Promise<TaonCmsPermissionConfiguration> {\n //#region @websqlFunc\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n let source = post;\n const visited = new Set<number>();\n while (true) {\n if (visited.has(source.id)) {\n contentError('Permission inheritance contains a cycle.', 409);\n }\n visited.add(source.id);\n const parents = await repository.find({\n where: {\n applyPermissionsToRelatedPosts: true,\n relatedPosts: { id: source.id },\n },\n relations: { permissions: true },\n });\n if (parents.length > 1) {\n contentError(\n 'A post cannot inherit permissions from multiple sources.',\n 409,\n );\n }\n if (!parents.length) {\n return {\n permissions: source.permissions,\n source:\n source.id === post.id\n ? null\n : { id: source.id, title: source.title },\n };\n }\n source = parents[0];\n }\n //#endregion\n }\n\n private async validatePermissionInheritance(\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const parents = await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .find({\n where: { applyPermissionsToRelatedPosts: true },\n relations: { relatedPosts: true },\n });\n const sources = new Map<number, number>();\n for (const parent of parents) {\n for (const child of parent.relatedPosts) {\n if (sources.has(child.id)) {\n contentError(\n `Content ${child.id} would inherit permissions from multiple sources.`,\n 409,\n );\n }\n sources.set(child.id, parent.id);\n }\n }\n for (const id of sources.keys()) {\n const visited = new Set<number>();\n let current: number | undefined = id;\n while (current !== undefined) {\n if (visited.has(current)) {\n contentError('Permission inheritance cannot contain cycles.', 409);\n }\n visited.add(current);\n current = sources.get(current);\n }\n }\n //#endregion\n }\n\n private async requireOwnPermissionEdit(\n id: number,\n permissionIds: number[],\n current: TaonCmsContentEntity,\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const configuration = await this.resolvePermissionConfiguration(\n current,\n manager,\n );\n const ownIds = new Set(\n current.permissions.map(permission => permission.id),\n );\n if (\n configuration.source &&\n (ownIds.size !== new Set(permissionIds).size ||\n permissionIds.some(permissionId => !ownIds.has(permissionId)))\n ) {\n contentError(\n `Content ${id} inherits permissions; edit the source post instead.`,\n 409,\n );\n }\n //#endregion\n }\n\n async listApplicationHooks(): Promise<TaonCmsApplicationHookEntity[]> {\n //#region @websqlFunc\n return this.connection\n .getRepository(TaonCmsApplicationHookEntity)\n .find({ order: { hook: 'ASC' } });\n //#endregion\n }\n\n async getContentByHook(hook: string): Promise<string> {\n //#region @websqlFunc\n return (await this.getContentForHook(hook))?.body ?? '';\n //#endregion\n }\n\n async getContentForHook(hook: string): Promise<TaonCmsContentEntity | null> {\n //#region @websqlFunc\n if (!hook) {\n contentError('Application hook is required.');\n }\n const applicationHook = await this.connection\n .getRepository(TaonCmsApplicationHookEntity)\n .findOne({\n where: { hook: hook as TaonCmsApplicationHook },\n relations: { content: { permissions: true } },\n });\n return applicationHook?.content ?? null;\n //#endregion\n }\n\n //#region methods / media access\n async getContentBySlugForMedia(\n slug: string,\n ): Promise<TaonCmsContentEntity | null> {\n //#region @websqlFunc\n if (!slug) {\n contentError('Content slug is required.');\n }\n return this.connection\n .getRepository<TaonCmsContentEntity>(this.target)\n .findOne({\n where: { slug },\n relations: { permissions: true },\n });\n //#endregion\n }\n\n async isPublicMediaKey(key: string): Promise<boolean> {\n //#region @websqlFunc\n const contents = await this.connection\n .getRepository<TaonCmsContentEntity>(this.target)\n .find({\n where: [\n { videoKey: key },\n { audioKey: key },\n { attachmentKey: key },\n { thumbnailKey: key },\n ],\n relations: { permissions: true },\n });\n if (!contents.length) {\n return false;\n }\n for (const content of contents) {\n if (\n content.status !== 'published' ||\n (await this.getPermissionConfiguration(content.id)).permissions.length >\n 0\n ) {\n return false;\n }\n }\n return true;\n //#endregion\n }\n //#endregion\n\n async addRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n return this.changeRelatedPost(id, relatedPostId, expectedVersion, true);\n //#endregion\n }\n\n async deleteRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n return this.changeRelatedPost(id, relatedPostId, expectedVersion, false);\n //#endregion\n }\n\n private async changeRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n adding: boolean,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n requireContentId(relatedPostId, 'relatedPostId');\n requireContentVersion(expectedVersion);\n if (id === relatedPostId) {\n contentError('A post cannot relate to itself.');\n }\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const current = await this.requireContent(id, manager);\n await this.requireContent(relatedPostId, manager);\n const snapshot = await this.snapshotOf(current, manager);\n const ids = snapshot.relatedPostIds ?? [];\n snapshot.relatedPostIds = adding\n ? [...new Set([...ids, relatedPostId])]\n : ids.filter(postId => postId !== relatedPostId);\n return this.commitUpdate(current, expectedVersion, snapshot, manager);\n });\n //#endregion\n }\n\n private async requireContent(\n id: number,\n manager: EntityManager,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n const content = await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .findOne({\n where: { id },\n relations: {\n relatedPosts: true,\n permissions: true,\n applicationHook: true,\n },\n });\n if (!content) {\n contentError(`Content ${id} does not exist.`, 404);\n }\n return content;\n //#endregion\n }\n\n private contentFields(\n input: Partial<TaonCmsContentFields>,\n current?: TaonCmsContentFields,\n ): TaonCmsContentFields {\n const type = input.type ?? current?.type ?? TaonCmsContentType.Normal;\n const title = input.title ?? current?.title;\n const slug = input.slug ?? current?.slug;\n if (title === undefined || slug === undefined) {\n contentError('title and slug are required.');\n }\n const publishedAt =\n input.publishedAt === undefined\n ? (current?.publishedAt ?? null)\n : input.publishedAt;\n return {\n type,\n title,\n slug,\n body: input.body === undefined ? (current?.body ?? null) : input.body,\n videoKey:\n input.videoKey === undefined\n ? (current?.videoKey ?? null)\n : input.videoKey,\n audioKey:\n input.audioKey === undefined\n ? (current?.audioKey ?? null)\n : input.audioKey,\n attachmentKey:\n input.attachmentKey === undefined\n ? (current?.attachmentKey ?? null)\n : input.attachmentKey,\n thumbnailKey:\n input.thumbnailKey === undefined\n ? (current?.thumbnailKey ?? null)\n : input.thumbnailKey,\n excerpt:\n input.excerpt === undefined\n ? (current?.excerpt ?? null)\n : input.excerpt,\n categoryId:\n input.categoryId === undefined\n ? (current?.categoryId ?? null)\n : input.categoryId,\n authorUserId:\n input.authorUserId === undefined\n ? (current?.authorUserId ?? null)\n : input.authorUserId,\n status: input.status ?? current?.status ?? 'draft',\n publishedAt: publishedAt === null ? null : new Date(publishedAt),\n applyPermissionsToRelatedPosts:\n input.applyPermissionsToRelatedPosts ??\n current?.applyPermissionsToRelatedPosts ??\n false,\n };\n }\n\n private async snapshotOf(\n content: TaonCmsContentEntity,\n manager: EntityManager,\n ): Promise<TaonCmsContentSnapshot> {\n //#region @websqlFunc\n return {\n ...this.contentFields({\n ...content,\n status: this.contentStatus(content.status),\n }),\n tagIds: await this.taonCmsContentTagRepository.findTagIds(\n content.id,\n manager,\n ),\n relatedPostIds: content.relatedPosts.map(post => post.id),\n permissionIds: content.permissions.map(permission => permission.id),\n };\n //#endregion\n }\n\n private contentStatus(status: string): TaonCmsContentFields['status'] {\n if (status !== 'draft' && status !== 'published' && status !== 'archived') {\n contentError(`Unsupported stored content status: ${status}.`, 409);\n }\n return status;\n }\n\n private async validateReferences(\n fields: TaonCmsContentFields,\n tagIds: number[],\n permissionIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n if (fields.categoryId !== null) {\n await this.taonCmsCategoryRepository.requireCategory(\n fields.categoryId,\n manager,\n );\n }\n await this.tags.requireTags(tagIds, manager);\n await this.requirePermissions(permissionIds, manager);\n //#endregion\n }\n\n private async requirePermissions(\n permissionIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n if (!permissionIds.length) {\n return;\n }\n const permissions = await manager\n .getRepository<TaonPermissionEntity>(TaonPermissionEntity)\n .findBy({ id: In(permissionIds) });\n const foundIds = new Set(permissions.map(permission => permission.id));\n const missingId = permissionIds.find(id => !foundIds.has(id));\n if (missingId !== undefined) {\n contentError(`Permission ${missingId} does not exist.`, 404);\n }\n //#endregion\n }\n\n private async requireAvailableSlug(\n slug: string,\n manager: EntityManager,\n contentId?: number,\n ): Promise<void> {\n //#region @websqlFunc\n const existing = await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .findOneBy({ slug });\n if (existing && existing.id !== contentId) {\n contentError(`Slug \"${slug}\" is already in use.`, 409);\n }\n //#endregion\n }\n\n private async replaceRelatedPosts(\n id: number,\n relatedPostIds: number[],\n previousIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n if (relatedPostIds.includes(id)) {\n contentError('A post cannot relate to itself.');\n }\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n if (relatedPostIds.length) {\n const posts = await repository.findBy({ id: In(relatedPostIds) });\n const foundIds = new Set(posts.map(post => post.id));\n const missingId = relatedPostIds.find(postId => !foundIds.has(postId));\n if (missingId !== undefined) {\n contentError(`Content ${missingId} does not exist.`, 404);\n }\n }\n const added = relatedPostIds.filter(\n postId => !previousIds.includes(postId),\n );\n const removed = previousIds.filter(\n postId => !relatedPostIds.includes(postId),\n );\n if (added.length || removed.length) {\n await repository\n .createQueryBuilder()\n .relation('relatedPosts')\n .of(id)\n .addAndRemove(added, removed);\n }\n //#endregion\n }\n\n private async replacePermissions(\n id: number,\n permissionIds: number[],\n previousIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const added = permissionIds.filter(\n permissionId => !previousIds.includes(permissionId),\n );\n const removed = previousIds.filter(\n permissionId => !permissionIds.includes(permissionId),\n );\n if (added.length || removed.length) {\n await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .createQueryBuilder()\n .relation('permissions')\n .of(id)\n .addAndRemove(added, removed);\n }\n //#endregion\n }\n\n private async replaceApplicationHook(\n contentId: number,\n hook: TaonCmsApplicationHook | null,\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const repository = manager.getRepository(TaonCmsApplicationHookEntity);\n const current = await repository.findOneBy({ contentId });\n if (hook === null) {\n if (current) {\n current.contentId = null;\n await repository.save(current);\n }\n return;\n }\n const target = await repository.findOneBy({ hook });\n if (!target) {\n contentError(`Application hook \"${hook}\" is not configured.`, 404);\n }\n if (target.contentId !== null && target.contentId !== contentId) {\n contentError(`Application hook \"${hook}\" is already in use.`, 409);\n }\n if (current?.id === target.id) {\n return;\n }\n if (current) {\n current.contentId = null;\n await repository.save(current);\n }\n target.contentId = contentId;\n await repository.save(target);\n //#endregion\n }\n\n private async commitUpdate(\n current: TaonCmsContentEntity,\n expectedVersion: number,\n snapshot: TaonCmsContentSnapshot,\n manager: EntityManager,\n applicationHook?: TaonCmsApplicationHook | null,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n if (current.version !== expectedVersion) {\n contentError('Content has changed. Reload it before editing.', 409);\n }\n await this.requireOwnPermissionEdit(\n current.id,\n snapshot.permissionIds,\n current,\n manager,\n );\n await this.validateReferences(\n snapshot,\n snapshot.tagIds,\n snapshot.permissionIds,\n manager,\n );\n await this.requireAvailableSlug(snapshot.slug, manager, current.id);\n // Preserve the first pre-API version before replacing it.\n const history = await this.taonCmsContentRevisionRepository.listForContent(\n current.id,\n manager,\n );\n if (\n !history.some(revision => revision.revisionNumber === current.version)\n ) {\n await this.taonCmsContentRevisionRepository.recordContent(\n current,\n await this.snapshotOf(current, manager),\n manager,\n );\n }\n const fields = this.contentFields(snapshot);\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n const result = await repository.update(\n { id: current.id, version: expectedVersion },\n { ...fields, version: expectedVersion + 1, updatedAt: new Date() },\n );\n if (result.affected !== 1) {\n contentError('Content has changed. Reload it before editing.', 409);\n }\n await this.taonCmsContentTagRepository.replaceTags(\n current.id,\n snapshot.tagIds,\n manager,\n );\n await this.replaceRelatedPosts(\n current.id,\n [...new Set(snapshot.relatedPostIds ?? [])],\n current.relatedPosts.map(post => post.id),\n manager,\n );\n await this.validatePermissionInheritance(manager);\n await this.replacePermissions(\n current.id,\n [...new Set(snapshot.permissionIds ?? [])],\n current.permissions.map(permission => permission.id),\n manager,\n );\n if (applicationHook !== undefined) {\n await this.replaceApplicationHook(current.id, applicationHook, manager);\n }\n const updated = await this.requireContent(current.id, manager);\n await this.taonCmsContentRevisionRepository.recordContent(\n updated,\n {\n ...fields,\n tagIds: snapshot.tagIds,\n relatedPostIds: updated.relatedPosts.map(post => post.id),\n permissionIds: updated.permissions.map(permission => permission.id),\n },\n manager,\n );\n return updated;\n //#endregion\n }\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}\n","//#region imports\nimport {\n TaonSessionProvider,\n TaonSessionRepository,\n} from '@taon-dev/session/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { ExpressRequest, ExpressResponse, TaonBaseStorageController, TaonController, TaonStorageObject, TaonUploadedFile, apiPrefix, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams } from 'taon/websql-prod';\nimport { UtilsJwt__NS__decode, UtilsJwt__NS__JwtPayload, UtilsJwt__NS__sign, UtilsJwt__NS__verify } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentRepository } from './taon-cms-content.repository';\nimport { contentError } from './taon-cms-content.validation';\n//#endregion\n\n@TaonController<TaonCmsContentStorageController>({\n className: 'TaonCmsContentStorageController',\n // allowedMethods: ['download', 'uploadFormDataToServer'],\n})\nexport class TaonCmsContentStorageController extends TaonBaseStorageController<\n {},\n TaonCmsContentStorageController\n> {\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n private readonly taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n private readonly taonCmsContentRepository = this.injectCustomRepo(\n TaonCmsContentRepository,\n );\n\n private readonly taonSessionProvider =\n this.injectProvider(TaonSessionProvider);\n\n protected async beforeEachRequest({\n req,\n res,\n methodConfig,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentStorageController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async handleUploadFiles(\n files: TaonUploadedFile[],\n queryParams?: {},\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<TaonStorageObject[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n afterFileUploadHook(): void {}\n\n async isMediaObjectAvailable(key: string): Promise<boolean> {\n/* */\n/* */\n return (void 0);\n }\n\n buildStorageDownloadUrl(options: {\n req: ExpressRequest;\n key: string;\n private: boolean;\n token?: string;\n download?: boolean;\n }): string {\n //#region @websqlFunc\n if (!this.ctx) {\n console.trace(`[buildStorageDownloadUrl] accessing without context`);\n return;\n }\n const isLocalhost =\n this.ctx.frontendHostUri.origin.includes('://localhost:');\n\n const urlFromMehtod = this.getThisControllerMethodFullUrl('download');\n // console.log({ urlFromMehtod });\n\n const url = new URL(urlFromMehtod);\n\n url.search = '';\n url.searchParams.set('key', options.key);\n if (options.token) {\n url.searchParams.set('token', options.token);\n }\n if (options.download) {\n url.searchParams.set('download', 'true');\n }\n return (\n `${isLocalhost ? this.ctx.uri.origin : this.ctx.frontendHostUri.origin}` +\n `${url.pathname}${url.search}`\n );\n //#endregion\n }\n\n async createStorageDownloadToken(options: {\n key: string;\n expiresAt: number;\n }): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async verifyStorageDownloadToken(options: {\n key: string;\n token: string;\n }): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async isPublicStorageKey(key: string): Promise<boolean> {\n/* */\n/* */\n return (void 0);\n }\n}","//#region imports\nimport {\n TaonSessionRepository,\n type TaonPermissionEntity,\n} from '@taon-dev/session/websql-prod';\nimport {\n TaonAuthContextRepository,\n TaonSessionCoreAuthorization,\n} from '@taon-dev/session/websql-prod';\nimport { TaonController, TaonBaseCrudController, Query, GET, POST, PUT, DELETE, Body, ExpressRequest, getStatusCode, HttpStatusEnum, ExpressResponse, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport type { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport type { TaonCmsContentRevisionEntity } from '../taon-cms-content-revision/taon-cms-content-revision.entity';\n\nimport { TaonCmsContentStorageController } from './taon-cms-content-storage.controller';\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport type {\n TaonCmsCreateContent,\n TaonCmsRestoreContent,\n TaonCmsUpdateContent,\n TaonCmsPermissionConfiguration,\n} from './taon-cms-content.models';\nimport { TaonCmsContentRepository } from './taon-cms-content.repository';\nimport { contentError } from './taon-cms-content.validation';\n//#endregion\n\n@TaonController<TaonCmsContentController>({\n //#region controller options\n className: 'TaonCmsContentController',\n allowedMethods: [\n 'getAll',\n 'getBy',\n 'createContent',\n 'duplicateContent',\n 'updateContent',\n 'deleteContent',\n 'restoreContent',\n 'listRevisions',\n 'listRelatedPosts',\n 'listCourses',\n 'listPermissions',\n 'getPermissionConfiguration',\n 'listApplicationHooks',\n 'getContentByHook',\n 'getPublicContentByHook',\n 'getVideoLinkBySlug',\n 'getPublicVideoLinkBySlug',\n 'getAudioLinkBySlug',\n 'getPublicAudioLinkBySlug',\n 'getAttachmentLinkBySlug',\n 'getPublicAttachmentLinkBySlug',\n 'getThumbnailLinkBySlug',\n 'getPublicThumbnailLinkBySlug',\n 'listTagIds',\n 'addRelatedPost',\n 'deleteRelatedPost',\n 'paginationQuery',\n ],\n //#endregion\n})\nexport class TaonCmsContentController extends TaonBaseCrudController<TaonCmsContentEntity> {\n //#region fields & getters\n entityClassResolveFn: () => typeof TaonCmsContentEntity = () =>\n TaonCmsContentEntity;\n\n private readonly taonCmsContentRepository = this.injectCustomRepo(\n TaonCmsContentRepository,\n );\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n private readonly taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n private readonly taonCmsContentStorageController = this.injectController(\n TaonCmsContentStorageController,\n );\n //#endregion\n\n //#region methods / before each request\n protected async beforeEachRequest({\n req,\n res,\n methodConfig,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get video link by slug\n @GET()\n getVideoLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'video', false, req, t);\n //#endregion\n }\n\n //#region methods / get public video link by slug\n @GET()\n getPublicVideoLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'video', true, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get audio link by slug\n @GET()\n getAudioLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'audio', false, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get public audio link by slug\n @GET()\n getPublicAudioLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'audio', true, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get attachment link by slug\n @GET()\n getAttachmentLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'attachment', false, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get public attachment link by slug\n @GET()\n getPublicAttachmentLinkBySlug(\n @Query('slug') slug: string,\n ): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'attachment', true, req, t);\n //#endregion\n }\n //#endregion\n //#endregion\n\n //#region methods / get media link\n @GET()\n getThumbnailLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'thumbnail', false, req, t);\n //#endregion\n }\n\n @GET()\n getPublicThumbnailLinkBySlug(\n @Query('slug') slug: string,\n ): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'thumbnail', true, req, t);\n //#endregion\n }\n\n @GET()\n listCourses(): Taon__NS__Response<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listCourses();\n //#endregion\n }\n\n @GET()\n listTagIds(@Query('id') id: number): Taon__NS__Response<number[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listTagIds(id);\n //#endregion\n }\n\n private async getMediaLinkBySlug(\n slug: string,\n type: 'video' | 'audio' | 'attachment' | 'thumbnail',\n publicOnly: boolean,\n req: ExpressRequest,\n t: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentController>['t'],\n ): Promise<string> {\n //#region @websqlFunc\n const content =\n await this.taonCmsContentRepository.getContentBySlugForMedia(slug);\n if (!content) {\n contentError(t.gettext('Content was not found.'), 404);\n }\n const field =\n type === 'video'\n ? 'videoKey'\n : type === 'audio'\n ? 'audioKey'\n : type === 'thumbnail'\n ? 'thumbnailKey'\n : 'attachmentKey';\n const key = content![field];\n if (!key) {\n contentError(\n t.gettext('Content has no [[ type ]] media.', { type }),\n 404,\n );\n }\n if (\n !(await this.taonCmsContentStorageController.isMediaObjectAvailable(key!))\n ) {\n contentError(t.gettext('The media file was not found in storage.'), 404);\n }\n await this.requireReadAccess(content!, publicOnly, req, t);\n\n const isPrivate = !publicOnly;\n const token = isPrivate\n ? await this.taonCmsContentStorageController.createStorageDownloadToken({\n key: key!,\n expiresAt: Date.now() + 5 * 60 * 1000,\n })\n : undefined;\n return this.taonCmsContentStorageController.buildStorageDownloadUrl({\n req,\n key: key!,\n private: isPrivate,\n token,\n download: type === 'attachment',\n });\n //#endregion\n }\n\n //#region methods / require read access\n private async requireReadAccess(\n content: TaonCmsContentEntity,\n publicOnly: boolean,\n req: ExpressRequest,\n t: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentController>['t'],\n ): Promise<void> {\n //#region @websqlFunc\n\n const { permissions } =\n await this.taonCmsContentRepository.getPermissionConfiguration(\n content.id,\n );\n const isPublic = content.status === 'published' && permissions.length === 0;\n if (publicOnly) {\n if (!isPublic) {\n contentError(\n t.gettext('This content is not publicly accessible.'),\n 403,\n );\n }\n } else {\n await this.taonSessionRepository.throwIfNotAuthenticated({ req });\n const context = await this.taonAuthContextRepository.getContext(\n req.userId,\n req.sessionId,\n );\n const userPermissionCodes = new Set<string>(context?.permissions ?? []);\n const hasPermission = permissions.some(permission =>\n userPermissionCodes.has(permission.code),\n );\n if (!context?.isSuperUser && !isPublic && !hasPermission) {\n contentError(t.gettext('You do not have access to this content.'), 403);\n }\n }\n //#endregion\n }\n //#endregion\n //#endregion\n\n //#region methods / get by id\n @GET()\n getBySlug(@Query(`slug`) slug: string): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => {\n const model = await this.db.findOne({\n where: {\n slug,\n },\n });\n return model;\n };\n //#endregion\n }\n //#endregion\n\n //#region methods / create content\n @POST()\n createContent(\n @Body() input: TaonCmsCreateContent,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.createContent(input);\n //#endregion\n }\n //#endregion\n\n //#region methods / update content\n @PUT()\n updateContent(\n @Query('id') id: number,\n @Body() input: TaonCmsUpdateContent,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.updateContent(id, input);\n //#endregion\n }\n //#endregion\n\n @POST()\n duplicateContent(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.duplicateContent(id);\n //#endregion\n }\n\n //#region methods / delete content\n @DELETE()\n deleteContent(\n @Query('id') id: number,\n @Query('expectedVersion') expectedVersion: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.archiveContent(id, expectedVersion);\n //#endregion\n }\n //#endregion\n\n //#region methods / restore content\n @POST()\n restoreContent(\n @Query('id') id: number,\n @Body() input: TaonCmsRestoreContent,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.restoreContent(id, input);\n //#endregion\n }\n //#endregion\n\n //#region methods / list related posts\n @GET()\n listRelatedPosts(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listRelatedPosts(id);\n //#endregion\n }\n //#endregion\n\n //#region methods / list permissions\n @GET()\n listPermissions(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonPermissionEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listPermissions(id);\n //#endregion\n }\n //#endregion\n\n //#region methods / get permission configuration\n @GET()\n getPermissionConfiguration(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsPermissionConfiguration> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.getPermissionConfiguration(id);\n //#endregion\n }\n //#endregion\n\n //#region methods / list application hooks\n @GET()\n listApplicationHooks(): Taon__NS__Response<TaonCmsApplicationHookEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listApplicationHooks();\n //#endregion\n }\n //#endregion\n\n //#region methods / get content by hook\n @GET()\n getContentByHook(@Query('hook') hook: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, _res, { t }) => {\n const content =\n await this.taonCmsContentRepository.getContentForHook(hook);\n if (!content) {\n return '';\n }\n await this.requireReadAccess(content, false, req, t);\n return content.body ?? '';\n };\n //#endregion\n }\n //#endregion\n\n //#region methods / get public content by hook\n @GET()\n getPublicContentByHook(@Query('hook') hook: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, _res, { t }) => {\n const content =\n await this.taonCmsContentRepository.getContentForHook(hook);\n if (!content) {\n return '';\n }\n await this.requireReadAccess(content, true, req, t);\n return content.body ?? '';\n };\n //#endregion\n }\n //#endregion\n\n //#region methods / add related post\n @POST()\n addRelatedPost(\n @Query('id') id: number,\n @Query('relatedPostId') relatedPostId: number,\n @Query('expectedVersion') expectedVersion: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.addRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n );\n //#endregion\n }\n //#endregion\n\n //#region methods / delete related post\n @DELETE()\n deleteRelatedPost(\n @Query('id') id: number,\n @Query('relatedPostId') relatedPostId: number,\n @Query('expectedVersion') expectedVersion: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.deleteRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n );\n //#endregion\n }\n //#endregion\n\n //#region methods / list revisions\n @GET()\n listRevisions(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsContentRevisionEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listRevisions(id);\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentMiddleware',\n})\nexport class TaonCmsContentMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentProvider',\n})\nexport class TaonCmsContentProvider extends TaonBaseProvider {\n public siteName: string;\n\n async _(): Promise<void> {\n if (!this.siteName) {\n throw new Error(`Please provide siteName in TaonCmsContentProvider`);\n }\n }\n}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentProvider } from './taon-cms-content.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentSubscriber>({\n className: 'TaonCmsContentSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentProvider = this.injectProvider(TaonCmsContentProvider);\n listenTo(): typeof TaonCmsContentEntity {\n return TaonCmsContentEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryAbstractContext } from '../taon-cms-category/taon-cms-category.abstract.context';\nimport { TaonCmsContentRevisionAbstractContext } from '../taon-cms-content-revision/taon-cms-content-revision.abstract.context';\nimport { TaonCmsContentTagAbstractContext } from '../taon-cms-content-tag/taon-cms-content-tag.abstract.context';\nimport { TaonCmsTagAbstractContext } from '../taon-cms-tag/taon-cms-tag.abstract.context';\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\n\nimport { TaonCmsContentController } from './taon-cms-content.controller';\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentMiddleware } from './taon-cms-content.middleware';\nimport { TaonCmsContentProvider } from './taon-cms-content.provider';\nimport { TaonCmsContentRepository } from './taon-cms-content.repository';\nimport { TaonCmsContentSubscriber } from './taon-cms-content.subscriber';\nimport { TaonCmsContentStorageController } from './taon-cms-content-storage.controller';\n\n//#endregion\n\nexport const TaonCmsContentAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentAbstractContext',\n abstract: true,\n contexts: {\n TaonBaseContext,\n TaonCmsCategoryAbstractContext,\n TaonCmsTagAbstractContext,\n TaonCmsContentTagAbstractContext,\n TaonCmsContentRevisionAbstractContext,\n },\n entities: { TaonCmsApplicationHookEntity, TaonCmsContentEntity },\n controllers: { TaonCmsContentController, TaonCmsContentStorageController },\n repositories: { TaonCmsContentRepository },\n providers: { TaonCmsContentProvider },\n middlewares: { TaonCmsContentMiddleware },\n subscribers: { TaonCmsContentSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentAssetDefaultsValues } from './taon-cms-content-asset.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentAssetEntity',\n createTable: true,\n})\nexport class TaonCmsContentAssetEntity extends TaonBaseEntity<TaonCmsContentAssetEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n contentId: number | null;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n type: string;\n // image | video | audio | file\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n storageProvider: string;\n // r2 | filesystem | s3\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n bucket: string | null;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n key: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n originalFilename: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n mimeType: string | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n size: number | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n durationSeconds: number | null;\n\n //#region @websql\n @Column({ type: 'simple-json', nullable: true })\n //#endregion\n metadata: Record<string, any> | null;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentAssetRepository',\n})\nexport class TaonCmsContentAssetRepository extends TaonBaseRepository<TaonCmsContentAssetEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentAssetEntity = () => TaonCmsContentAssetEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetRepository } from './taon-cms-content-asset.repository';\n//#endregion\n\n@TaonController<TaonCmsContentAssetController>({\n className: 'TaonCmsContentAssetController',\n allowedMethods: []\n})\nexport class TaonCmsContentAssetController extends TaonBaseCrudController<TaonCmsContentAssetEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentAssetEntity = () => TaonCmsContentAssetEntity;\n\n taonCmsContentAssetRepository = this.injectCustomRepo(TaonCmsContentAssetRepository);\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsContentAssetRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsContentAssetController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentAssetProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentAssetProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentAssetMiddleware',\n})\nexport class TaonCmsContentAssetMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetProvider } from './taon-cms-content-asset.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentAssetSubscriber>({\n className: 'TaonCmsContentAssetSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentAssetSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentAssetProvider = this.injectProvider(TaonCmsContentAssetProvider);\n listenTo(): typeof TaonCmsContentAssetEntity {\n return TaonCmsContentAssetEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetController } from './taon-cms-content-asset.controller';\nimport { TaonCmsContentAssetRepository } from './taon-cms-content-asset.repository';\nimport { TaonCmsContentAssetProvider } from './taon-cms-content-asset.provider';\nimport { TaonCmsContentAssetMiddleware } from './taon-cms-content-asset.middleware';\nimport { TaonCmsContentAssetSubscriber } from './taon-cms-content-asset.subscriber';\n//#endregion\n\nexport const TaonCmsContentAssetAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentAssetAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentAssetEntity },\n controllers: { TaonCmsContentAssetController },\n repositories: { TaonCmsContentAssetRepository },\n providers: { TaonCmsContentAssetProvider },\n middlewares: { TaonCmsContentAssetMiddleware },\n subscribers: { TaonCmsContentAssetSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentPermissionDefaultsValues } from './taon-cms-content-permission.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentPermissionEntity',\n createTable: true,\n})\nexport class TaonCmsContentPermissionEntity extends TaonBaseEntity<TaonCmsContentPermissionEntity> {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ type: 'integer', default: 0 })\n version: number;\n\n @Column({ type: 'integer' })\n contentId: number;\n\n @Column({ type: 'varchar' })\n type: string;\n // public | authenticated | permission | role |\n // purchase | subscription\n\n @Column({ type: 'integer', nullable: true })\n permissionId: number | null;\n\n @Column({ type: 'integer', nullable: true })\n roleId: number | null;\n\n @Column({ type: 'integer', nullable: true })\n productId: number | null;\n\n @Column({ type: 'varchar', nullable: true })\n stripePriceId: string | null;\n\n @Column({ type: 'simple-json', nullable: true })\n config: Record<string, any> | null;\n\n @Column({ type: 'datetime' })\n createdAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentPermissionRepository',\n})\nexport class TaonCmsContentPermissionRepository extends TaonBaseRepository<TaonCmsContentPermissionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentPermissionEntity = () => TaonCmsContentPermissionEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionRepository } from './taon-cms-content-permission.repository';\n//#endregion\n\n@TaonController<TaonCmsContentPermissionController>({\n className: 'TaonCmsContentPermissionController',\n allowedMethods: []\n})\nexport class TaonCmsContentPermissionController extends TaonBaseCrudController<TaonCmsContentPermissionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentPermissionEntity = () => TaonCmsContentPermissionEntity;\n\n taonCmsContentPermissionRepository = this.injectCustomRepo(TaonCmsContentPermissionRepository);\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsContentPermissionRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsContentPermissionController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentPermissionProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentPermissionProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentPermissionMiddleware',\n})\nexport class TaonCmsContentPermissionMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionProvider } from './taon-cms-content-permission.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentPermissionSubscriber>({\n className: 'TaonCmsContentPermissionSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentPermissionSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentPermissionProvider = this.injectProvider(TaonCmsContentPermissionProvider);\n listenTo(): typeof TaonCmsContentPermissionEntity {\n return TaonCmsContentPermissionEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionController } from './taon-cms-content-permission.controller';\nimport { TaonCmsContentPermissionRepository } from './taon-cms-content-permission.repository';\nimport { TaonCmsContentPermissionProvider } from './taon-cms-content-permission.provider';\nimport { TaonCmsContentPermissionMiddleware } from './taon-cms-content-permission.middleware';\nimport { TaonCmsContentPermissionSubscriber } from './taon-cms-content-permission.subscriber';\n//#endregion\n\nexport const TaonCmsContentPermissionAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentPermissionAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentPermissionEntity },\n controllers: { TaonCmsContentPermissionController },\n repositories: { TaonCmsContentPermissionRepository },\n providers: { TaonCmsContentPermissionProvider },\n middlewares: { TaonCmsContentPermissionMiddleware },\n subscribers: { TaonCmsContentPermissionSubscriber },\n}));\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { TaonSessionAbstractContext } from '@taon-dev/session/websql-prod';\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryAbstractContext } from './taon-cms-category/taon-cms-category.abstract.context';\nimport { TaonCmsCommentAbstractContext } from './taon-cms-comment/taon-cms-comment.abstract.context';\nimport { TaonCmsContentAbstractContext } from './taon-cms-content/taon-cms-content.abstract.context';\nimport { TaonCmsContentAssetAbstractContext } from './taon-cms-content-asset/taon-cms-content-asset.abstract.context';\nimport { TaonCmsContentPermissionAbstractContext } from './taon-cms-content-permission/taon-cms-content-permission.abstract.context';\nimport { TaonCmsContentRevisionAbstractContext } from './taon-cms-content-revision/taon-cms-content-revision.abstract.context';\nimport { TaonCmsContentTagAbstractContext } from './taon-cms-content-tag/taon-cms-content-tag.abstract.context';\nimport { TaonCmsTagAbstractContext } from './taon-cms-tag/taon-cms-tag.abstract.context';\n\nexport const TaonCmsAbstractContext = createContext(() => ({\n contextName: 'TaonCmsAbstractContext',\n abstract: true,\n contexts: {\n TaonCmsCategoryAbstractContext,\n TaonCmsCommentAbstractContext,\n TaonCmsContentAbstractContext,\n TaonCmsContentAssetAbstractContext,\n TaonCmsContentPermissionAbstractContext,\n TaonCmsContentRevisionAbstractContext,\n TaonCmsContentTagAbstractContext,\n TaonCmsTagAbstractContext,\n TaonSessionAbstractContext,\n },\n}));\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","import { Resource__NS__Cookies, Resource__NS__create, Resource__NS__globalInterceptors, Resource__NS__listenErrors, Resource__NS__methodsInterceptors } from 'ng2-rest/websql-prod';\nimport { Observable } from 'rxjs';\n\nconst progressCallbacks = new WeakMap<FormData, (percentage: number) => void>();\n\n// Keep Taon's middleware, retries and response decoding; replace only the\n// final Fetch transport for uploads that request browser upload events.\nexport function trackCmsUpload(\n url: string,\n body: FormData,\n onProgress: (percentage: number) => void,\n): () => void {\n const key = `cms-upload-progress-POST-${new URL(url).pathname}`;\n if (!Resource__NS__methodsInterceptors.has(key)) {\n Resource__NS__methodsInterceptors.set(key, {\n intercept: ({ req, next }) => {\n if (!(req.body instanceof FormData)) {\n return next.handle(req);\n }\n const uploadBody = req.body;\n const callback = progressCallbacks.get(uploadBody);\n if (!callback) {\n return next.handle(req);\n }\n return new Observable<Response>(subscriber => {\n const xhr = new XMLHttpRequest();\n xhr.open(req.method || 'POST', req.url);\n xhr.withCredentials = req.credentials === 'include';\n new Headers(req.headers).forEach((value, name) => {\n // The browser must supply the multipart boundary.\n if (name.toLowerCase() !== 'content-type') {\n xhr.setRequestHeader(name, value);\n }\n });\n xhr.upload.onprogress = event => {\n if (event.lengthComputable && event.total > 0) {\n callback(\n Math.min(100, Math.floor((event.loaded * 100) / event.total)),\n );\n }\n };\n xhr.onload = () => {\n const headers = new Headers();\n for (const line of xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/)) {\n const separator = line.indexOf(':');\n if (separator > 0) {\n headers.append(\n line.slice(0, separator),\n line.slice(separator + 1).trim(),\n );\n }\n }\n subscriber.next(\n new Response(\n [204, 205, 304].includes(xhr.status) ? null : xhr.responseText,\n {\n status: xhr.status,\n statusText: xhr.statusText,\n headers,\n },\n ),\n );\n subscriber.complete();\n };\n xhr.onerror = () =>\n subscriber.error(new Error('Media upload network error.'));\n xhr.ontimeout = () =>\n subscriber.error(new Error('Media upload timed out.'));\n xhr.onabort = () =>\n subscriber.error(new Error('Media upload was cancelled.'));\n const abort = () => xhr.abort();\n req.signal?.addEventListener('abort', abort, { once: true });\n if (req.signal?.aborted) {\n subscriber.error(new Error('Media upload was cancelled.'));\n } else {\n callback(0);\n xhr.send(uploadBody);\n }\n return () => {\n req.signal?.removeEventListener('abort', abort);\n if (xhr.readyState !== XMLHttpRequest.DONE) {\n xhr.abort();\n }\n };\n });\n },\n });\n }\n progressCallbacks.set(body, onProgress);\n return () => progressCallbacks.delete(body);\n}","//#region imports\nimport { Injectable } from '@angular/core';\nimport type { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { TaonBaseAngularService, TaonStorageObject, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\nimport type { TaonCmsContentRevisionEntity } from '../taon-cms-content-revision/taon-cms-content-revision.entity';\n\nimport { TaonCmsContentStorageController } from './taon-cms-content-storage.controller';\nimport { TaonCmsContentController } from './taon-cms-content.controller';\nimport type { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport type {\n TaonCmsCreateContent,\n TaonCmsRestoreContent,\n TaonCmsUpdateContent,\n TaonCmsPermissionConfiguration,\n} from './taon-cms-content.models';\nimport { trackCmsUpload } from './taon-cms-upload-progress';\n\n//#endregion\n\n@Injectable()\nexport class TaonCmsContentApiService<\n HOOKS extends TaonCmsApplicationHook = TaonCmsApplicationHook,\n> extends TaonBaseAngularService {\n //#region fields & getters\n protected readonly taonCmsContentController = this.injectController(\n TaonCmsContentController,\n );\n\n protected readonly taonCmsContentStorageController = this.injectController(\n TaonCmsContentStorageController,\n );\n\n public get crudController(): TaonCmsContentController {\n return this.taonCmsContentController;\n }\n\n public get frontendUrl(): string {\n return this.ctx.frontendHostUri.origin;\n }\n\n public getPostUrl(slug: string): string {\n return `${this.frontendUrl}/posts/${encodeURIComponent(slug)}`;\n }\n //#endregion\n\n //#region API / get by id\n public async getById(id: number): Promise<TaonCmsContentEntity> {\n return (await this.taonCmsContentController.getBy(id).request()).body.json;\n }\n //#endregion\n\n //#region API / get by slug\n public async getBySlug(slug: string): Promise<TaonCmsContentEntity> {\n return (await this.taonCmsContentController.getBySlug(slug).request()).body\n .json;\n }\n //#endregion\n\n //#region API / get video link by slug\n /**\n * Get link to private video\n */\n public getVideoLinkBySlug(slug: string): Observable<string> {\n return this.taonCmsContentController\n .getVideoLinkBySlug(slug)\n .request()\n .observable.pipe(\n map(res => res.body.text),\n catchError(err => {\n console.error(err);\n return of('');\n }),\n );\n }\n //#endregion\n\n //#region API / get public video link by slug\n public async getPublicVideoLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getPublicVideoLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get audio link by slug\n public getAudioLinkBySlug(slug: string): Observable<string> {\n return this.taonCmsContentController\n .getAudioLinkBySlug(slug)\n .request()\n .observable.pipe(\n map(res => res.body.text),\n catchError(err => {\n console.error(err);\n return of('');\n }),\n );\n }\n //#endregion\n\n //#region API / get public audio link by slug\n public async getPublicAudioLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getPublicAudioLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get attachment link by slug\n public async getAttachmentLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getAttachmentLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get public attachment link by slug\n public async getPublicAttachmentLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getPublicAttachmentLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get content by hook\n public getContentByHook(hook: HOOKS): Observable<string> {\n return this.taonCmsContentController.getContentByHook(hook)\n .request!().observable.pipe(map(res => res.body.text));\n }\n //#endregion\n\n //#region API / get public content by hook\n public getPublicContentByHook(hook: HOOKS): Observable<string> {\n return this.taonCmsContentController.getPublicContentByHook(hook)\n .request!().observable.pipe(\n map(res => res.body.text),\n catchError(() => of('---')),\n );\n }\n //#endregion\n\n //#region API / list application hooks\n public listApplicationHooks(): Observable<TaonCmsApplicationHookEntity[]> {\n return this.taonCmsContentController.listApplicationHooks()\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / upload media\n public async uploadMedia(\n file: File,\n onProgress?: (percentage: number) => void,\n ): Promise<TaonStorageObject> {\n const formData = new FormData();\n formData.append('file', file);\n const stopTracking = onProgress\n ? trackCmsUpload(\n this.taonCmsContentStorageController.getThisControllerMethodFullUrl(\n 'uploadFormDataToServer',\n ),\n formData,\n onProgress,\n )\n : undefined;\n try {\n const response = await this.taonCmsContentStorageController\n .uploadFormDataToServer(formData)\n .request();\n const objects = response.body.json;\n if (!Array.isArray(objects) || objects.length !== 1 || !objects[0]?.key) {\n throw new Error('The upload did not return a media key.');\n }\n onProgress?.(100);\n return objects[0];\n } finally {\n stopTracking?.();\n }\n }\n //#endregion\n\n //#region API / list assets\n public listAssets(): Observable<TaonStorageObject[]> {\n return this.taonCmsContentStorageController\n .list({})\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / get asset url\n public async getAssetUrl(key: string): Promise<string> {\n return (\n await this.taonCmsContentStorageController\n .getPrivateUrl(key, { expiresInSeconds: 5 * 60 })\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / create content\n public listTagIds(id: number): Observable<number[]> {\n return this.taonCmsContentController\n .listTagIds(id)\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n public async getThumbnailLinkBySlug(\n slug: string,\n publicOnly = false,\n ): Promise<string> {\n const response = publicOnly\n ? await this.taonCmsContentController\n .getPublicThumbnailLinkBySlug(slug)\n .request()\n : await this.taonCmsContentController\n .getThumbnailLinkBySlug(slug)\n .request();\n return response.body.text;\n }\n\n public createContent(\n input: TaonCmsCreateContent,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.createContent(input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / duplicate content\n public duplicateContent(id: number): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.duplicateContent(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / update content\n public updateContent(\n id: number,\n input: TaonCmsUpdateContent,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.updateContent(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / delete content\n public deleteContent(\n id: number,\n expectedVersion: number,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.deleteContent(id, expectedVersion)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / restore content\n public restoreContent(\n id: number,\n input: TaonCmsRestoreContent,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.restoreContent(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / list revisions\n public listRevisions(id: number): Observable<TaonCmsContentRevisionEntity[]> {\n return this.taonCmsContentController.listRevisions(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / list related posts\n public listCourses(): Observable<TaonCmsContentEntity[]> {\n return this.taonCmsContentController.listCourses()\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n public listRelatedPosts(id: number): Observable<TaonCmsContentEntity[]> {\n return this.taonCmsContentController.listRelatedPosts(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / list permissions\n public listPermissions(id: number): Observable<TaonPermissionEntity[]> {\n return this.taonCmsContentController.listPermissions(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / get permission configuration\n public getPermissionConfiguration(\n id: number,\n ): Observable<TaonCmsPermissionConfiguration> {\n return this.taonCmsContentController.getPermissionConfiguration(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / add related post\n public addRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.addRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n ).request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / delete related post\n public deleteRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.deleteRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n ).request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / get all entites\n /**\n * TODO not good idea if manu posts - refactor later:\n * - add pagination for post selector\n */\n public get allMyEntities$(): Observable<TaonCmsContentEntity[]> {\n return this.taonCmsContentController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n //#endregion\n}","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { type TaonStorageObject, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../taon-cms-content/taon-cms-content-api.service';\n\nconst t = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts', {\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-asset-preview',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule],\n styleUrl: './taon-cms-asset-preview.component.scss',\n templateUrl: './taon-cms-asset-preview.component.html',\n})\nexport class TaonCmsAssetPreviewComponent implements OnInit {\n readonly t = t.for(this);\n\n @Input({ required: true })\n asset!: TaonStorageObject;\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly url = signal('');\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n get previewKind(): 'video' | 'audio' | 'attachment' {\n const contentType = this.asset.contentType?.trim().toLowerCase();\n if (contentType?.startsWith('video/')) {\n return 'video';\n }\n if (contentType?.startsWith('audio/')) {\n return 'audio';\n }\n return 'attachment';\n }\n\n ngOnInit(): void {\n void this.reload();\n }\n\n async reload(): Promise<void> {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.url.set('');\n try {\n const url = new URL(await this.api.getAssetUrl(this.asset.key));\n if (this.previewKind === 'attachment') {\n url.searchParams.set('download', 'true');\n }\n if (!this.destroyRef.destroyed) {\n this.url.set(url.href);\n }\n } catch (error: unknown) {\n if (!this.destroyRef.destroyed) {\n console.error(\n '[taon-cms-asset-preview] Unable to load asset URL',\n error,\n );\n this.error.set(\n this.t.gettext('The asset could not be opened. Please retry.'),\n );\n }\n } finally {\n if (!this.destroyRef.destroyed) {\n this.loading.set(false);\n }\n }\n }\n\n playbackError(): void {\n this.error.set(\n this.t.gettext(\n 'Playback failed or the preview link expired. Please retry.',\n ),\n );\n }\n}","@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading asset preview...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Retry preview') }}\n </button>\n}\n@if (url()) {\n @switch (previewKind) {\n @case ('video') {\n <video\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n }\n @case ('audio') {\n <audio\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n }\n @default {\n <a\n [href]=\"url()\"\n [attr.download]=\"asset.fileName\"\n target=\"_blank\"\n rel=\"noopener\">\n {{ asset.fileName || asset.key }}\n </a>\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize, map } from 'rxjs';\nimport { type TaonStorageObject as TaonStorageObjectBase, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentApiService } from '../taon-cms-content/taon-cms-content-api.service';\n\nimport { TaonCmsAssetPreviewComponent } from './taon-cms-asset-preview.component';\n\nconst t = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts', {\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data')).default}} as any);\n\ntype TaonStorageObject = TaonStorageObjectBase & { keyVisible?: string };\n\n@Component({\n selector: 'taon-cms-assets-backoffice',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n TaonDatatableComponent,\n TaonCmsAssetPreviewComponent,\n ],\n providers: [TaonCmsContentApiService],\n templateUrl: './taon-cms-assets-backoffice.component.html',\n})\nexport class TaonCmsAssetsBackofficeComponent implements OnInit {\n readonly t = t.for(this);\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly assets = signal<TaonStorageObject[]>([]);\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'keyVisible', sortable: true, showExpand: true },\n { header: this.t.gettext('File Name'), field: 'fileName', sortable: true },\n {\n header: this.t.gettext('Content Type'),\n field: 'contentType',\n sortable: true,\n },\n ];\n\n ngOnInit(): void {\n this.reload();\n }\n\n reload(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.api\n .listAssets()\n .pipe(\n map(c => c as TaonStorageObject[]),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: assets =>\n this.assets.set(\n assets.map(c => {\n c.keyVisible = ___NS__first(c.key.split('__'));\n return c;\n }),\n ),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-assets-backoffice] Unable to load assets',\n error,\n );\n this.error.set(\n this.t.gettext('Assets could not be loaded. Please try reloading.'),\n );\n },\n });\n }\n}","<h1>{{ t.gettext('CMS assets') }}</h1>\n<button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload assets') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading assets...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n\n<ng-template\n #preview\n let-asset>\n <taon-cms-asset-preview [asset]=\"asset\" />\n</ng-template>\n\n<taon-datatable\n [data]=\"assets()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['key', 'fileName', 'contentType']\"\n [hideAddButton]=\"true\"\n [expansionTemplate]=\"preview\"\n searchMode=\"advanced\">\n</taon-datatable>\n","import { Routes } from '@angular/router';\n\nexport const TaonCmsAssetsBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-cms-assets-backoffice.component').then(\n m => m.TaonCmsAssetsBackofficeComponent,\n ),\n },\n];\n","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts', {\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'app-taon-cms-backoffice',\n templateUrl: './taon-cms-backoffice.component.html',\n styleUrls: ['./taon-cms-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, RouterOutlet],\n})\nexport class TaonCmsBackofficeComponent {\n readonly t = t.for(this);\n\n componentLoaded = false;\n\n onRouteActivate(component: any): void {\n this.componentLoaded = !!component;\n }\n\n onRouteDeactivate(component: any): void {\n this.componentLoaded = false;\n }\n}","@if (!componentLoaded) {\n <code>\n {{\n t.gettext('In CMS you can manage content and settings for your website.')\n }}\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n","//namespace TaonCmsBackofficeModels\n\n//end of namespace TaonCmsBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport type { TaonAuthContextEntity } from '@taon-dev/session/websql-prod';\nimport { adminLazyRoute as adminLazyRouteBase } from '@taon-dev/ui/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\n//#endregion\n\nconst adminLazyRoute = adminLazyRouteBase<TaonAuthContextEntity>;\nconst t = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts', {\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\nexport const TaonCmsBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-cms-backoffice.component').then(\n m => m.TaonCmsBackofficeComponent,\n ),\n\n children: [\n adminLazyRoute({\n isDisabled: ({ context }) => {\n // console.log('context', { context });\n return !context?.hasAccess.toManageCms;\n },\n path: 'posts',\n menuItem: t.signal.gettext('Posts'),\n expandable: true,\n icon: 'edit',\n loader: () =>\n import('../index').then(m => m.TaonCmsPostsBackofficeRoutes),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => {\n // console.log('context', { context });\n return !context?.hasAccess.toManageCms;\n },\n path: 'courses',\n menuItem: t.signal.gettext('Courses'),\n expandable: false,\n icon: 'school',\n loader: () =>\n import('../index').then(\n m => m.TaonCmsCourseBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => !context?.hasAccess.toManageCms,\n path: 'assets',\n menuItem: t.signal.gettext('Assets'),\n expandable: false,\n icon: 'perm_media',\n loader: () =>\n import('../taon-cms-assets-backoffice/taon-cms-assets-backoffice.routes').then(\n m => m.TaonCmsAssetsBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => !context?.hasAccess.toManageCms,\n path: 'categories',\n menuItem: t.signal.gettext('Categories'),\n expandable: false,\n icon: 'folder',\n loader: () =>\n import('../taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes').then(\n m => m.TaonCmsCategoriesBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => !context?.hasAccess.toManageCms,\n path: 'tags',\n menuItem: t.signal.gettext('Tags'),\n expandable: false,\n icon: 'label',\n loader: () =>\n import('../taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes').then(\n m => m.TaonCmsTagsBackofficeRoutes,\n ),\n }),\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonCmsBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonCmsBackofficeRoutes;","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryController } from './taon-cms-category.controller';\nimport type { TaonCmsCategoryFields } from './taon-cms-taxonomy.validation';\n\n@Injectable()\nexport class TaonCmsCategoryApiService extends TaonBaseAngularService {\n protected readonly taonCmsCategoryController = this.injectController(\n TaonCmsCategoryController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsCategoryEntity[]> {\n return this.taonCmsCategoryController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n save(\n id: number | null,\n input: TaonCmsCategoryFields,\n ): Observable<TaonCmsCategoryEntity> {\n return this.taonCmsCategoryController\n .saveCategory(id, input)\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n delete(id: number): Observable<void> {\n return this.taonCmsCategoryController\n .deleteCategory(id)\n .request()\n .observable.pipe(map(() => undefined));\n }\n}","import type { TaonCmsCategoryEntity } from './taon-cms-category.entity';\n\nexport const TaonCmsCategoryDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsCategoryEntity>;","export enum TaonCmsCategoryState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsCategoryState } from './taon-cms-category.models';\n\n//namespace TaonCmsCategoryUtils\n\n export function TaonCmsCategoryUtils__NS__isActive(state: string): state is TaonCmsCategoryState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsCategoryUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentController } from './taon-cms-comment.controller';\n\n@Injectable()\nexport class TaonCmsCommentApiService extends TaonBaseAngularService {\n protected readonly taonCmsCommentController = this.injectController(TaonCmsCommentController);\n\n public get allMyEntities$(): Observable<TaonCmsCommentEntity[]> {\n return this.taonCmsCommentController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n public helloWorld(user:string): Observable<string> {\n return this.taonCmsCommentController.helloWord(user).request!().observable.pipe(\n map(res => res.responseText as string),\n );\n }\n}","import type { TaonCmsCommentEntity } from './taon-cms-comment.entity';\n\nexport const TaonCmsCommentDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsCommentEntity>;","export enum TaonCmsCommentState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsCommentState } from './taon-cms-comment.models';\n\n//namespace TaonCmsCommentUtils\n\n export function TaonCmsCommentUtils__NS__isActive(state: string): state is TaonCmsCommentState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsCommentUtils\n","import { Injectable } from '@angular/core';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonCmsContentProvider } from './taon-cms-content.provider';\n\n@Injectable()\nexport class TaonCmsContentConfigService extends TaonBaseAngularService {\n taonCmsContentProvider = this.injectProvider(TaonCmsContentProvider);\n\n get siteName(): string {\n return this.taonCmsContentProvider.siteName;\n }\n}\n","import type { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentType } from './taon-cms-content.models';\n\nexport const TaonCmsContentDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n type: TaonCmsContentType.Normal,\n videoKey: null,\n audioKey: null,\n attachmentKey: null,\n thumbnailKey: null,\n} as Partial<TaonCmsContentEntity>;\n","import { TaonCmsContentState } from './taon-cms-content.models';\n\n//namespace TaonCmsContentUtils\n\n export function TaonCmsContentUtils__NS__isActive(state: string): state is TaonCmsContentState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentUtils\n","export interface TaonCmsTemplateContext {\n frontendUrl?: string | null;\n site?: { name?: string | null } | null;\n post?: {\n title?: string | null;\n url?: string | null;\n id?: number | null;\n thumbnailUrl?: string | null;\n } | null;\n}\n\nexport type TaonCmsTemplateVariable =\n | 'frontendUrl'\n | 'site.name'\n | 'currentYear'\n | 'post.title'\n | 'post.url'\n | 'post.id'\n | 'post.thumbnailUrl';\n\n/**\n * Resolves allowlisted values as HTML text/attribute data, not markup.\n * The returned HTML must still pass through the renderer's HTML sanitizer.\n */\nexport function resolveTemplateVariables(\n content: string | null | undefined,\n context: TaonCmsTemplateContext,\n): string {\n const values = new Map<string, string | number | null | undefined>([\n ['frontendUrl', context.frontendUrl],\n ['site.name', context.site?.name],\n ['currentYear', new Date().getFullYear()],\n ['post.title', context.post?.title],\n ['post.url', context.post?.url],\n ['post.id', context.post?.id],\n ['post.thumbnailUrl', context.post?.thumbnailUrl],\n ]);\n return (content ?? '').replace(\n /\\{\\{\\s*([a-zA-Z][a-zA-Z0-9]*(?:\\.[a-zA-Z][a-zA-Z0-9]*)*)\\s*\\}\\}/g,\n (placeholder: string, name: string) => {\n const value = values.get(name);\n if (value === null || value === undefined) {\n return placeholder;\n }\n return String(value)\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n },\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetController } from './taon-cms-content-asset.controller';\n\n@Injectable()\nexport class TaonCmsContentAssetApiService extends TaonBaseAngularService {\n protected readonly taonCmsContentAssetController = this.injectController(\n TaonCmsContentAssetController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsContentAssetEntity[]> {\n return this.taonCmsContentAssetController.getAll()\n .request!().observable.pipe(map(res => res.body?.json));\n }\n\n public helloWorld(user: string): Observable<string> {\n return this.taonCmsContentAssetController.helloWord(user)\n .request!().observable.pipe(map(res => res.responseText as string));\n }\n}","import type { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\n\nexport const TaonCmsContentAssetDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentAssetEntity>;","export enum TaonCmsContentAssetState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentAssetState } from './taon-cms-content-asset.models';\n\n//namespace TaonCmsContentAssetUtils\n\n export function TaonCmsContentAssetUtils__NS__isActive(state: string): state is TaonCmsContentAssetState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentAssetUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionController } from './taon-cms-content-permission.controller';\n\n@Injectable()\nexport class TaonCmsContentPermissionApiService extends TaonBaseAngularService {\n protected readonly taonCmsContentPermissionController = this.injectController(\n TaonCmsContentPermissionController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsContentPermissionEntity[]> {\n return this.taonCmsContentPermissionController.getAll()\n .request!().observable.pipe(map(res => res.body?.json));\n }\n\n public helloWorld(user: string): Observable<string> {\n return this.taonCmsContentPermissionController.helloWord(user)\n .request!().observable.pipe(map(res => res.responseText as string));\n }\n}","import type { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\n\nexport const TaonCmsContentPermissionDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentPermissionEntity>;","export enum TaonCmsContentPermissionState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentPermissionState } from './taon-cms-content-permission.models';\n\n//namespace TaonCmsContentPermissionUtils\n\n export function TaonCmsContentPermissionUtils__NS__isActive(state: string): state is TaonCmsContentPermissionState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentPermissionUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentController } from '../taon-cms-content/taon-cms-content.controller';\nimport type { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport type { TaonCmsRestoreContent } from '../taon-cms-content/taon-cms-content.models';\n\nimport type { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionController } from './taon-cms-content-revision.controller';\n\n@Injectable()\nexport class TaonCmsContentRevisionApiService extends TaonBaseAngularService {\n protected readonly contentController = this.injectController(\n TaonCmsContentController,\n );\n\n protected readonly taonCmsContentRevisionController = this.injectController(\n TaonCmsContentRevisionController,\n );\n\n public listRevisions(id: number): Observable<TaonCmsContentRevisionEntity[]> {\n return this.contentController.listRevisions(id).request!().observable.pipe(\n map(res => res.body.json),\n );\n }\n\n public restoreContent(\n id: number,\n input: TaonCmsRestoreContent,\n ): Observable<TaonCmsContentEntity> {\n return this.contentController.restoreContent(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n public get allMyEntities$(): Observable<TaonCmsContentRevisionEntity[]> {\n return this.taonCmsContentRevisionController.getAll()\n .request!().observable.pipe(map(res => res.body?.json));\n }\n}","import type { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\n\nexport const TaonCmsContentRevisionDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentRevisionEntity>;","export enum TaonCmsContentRevisionState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentRevisionState } from './taon-cms-content-revision.models';\n\n//namespace TaonCmsContentRevisionUtils\n\n export function TaonCmsContentRevisionUtils__NS__isActive(state: string): state is TaonCmsContentRevisionState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentRevisionUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagController } from './taon-cms-content-tag.controller';\n\n@Injectable()\nexport class TaonCmsContentTagApiService extends TaonBaseAngularService {\n protected readonly taonCmsContentTagController = this.injectController(\n TaonCmsContentTagController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsContentTagEntity[]> {\n return this.taonCmsContentTagController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n}","import type { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\n\nexport const TaonCmsContentTagDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentTagEntity>;","export enum TaonCmsContentTagState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentTagState } from './taon-cms-content-tag.models';\n\n//namespace TaonCmsContentTagUtils\n\n export function TaonCmsContentTagUtils__NS__isActive(state: string): state is TaonCmsContentTagState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentTagUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagController } from './taon-cms-tag.controller';\nimport type { TaonCmsTaxonomyFields } from '../taon-cms-category/taon-cms-taxonomy.validation';\n\n@Injectable()\nexport class TaonCmsTagApiService extends TaonBaseAngularService {\n private readonly taonCmsTagController =\n this.injectController(TaonCmsTagController);\n\n get allMyEntities$(): Observable<TaonCmsTagEntity[]> {\n return this.taonCmsTagController\n .getAll()\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n save(\n id: number | null,\n input: TaonCmsTaxonomyFields,\n ): Observable<TaonCmsTagEntity> {\n return this.taonCmsTagController\n .saveTag(id, input)\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n delete(id: number): Observable<void> {\n return this.taonCmsTagController\n .deleteTag(id)\n .request()\n .observable.pipe(map(() => undefined));\n }\n}","import type { TaonCmsTagEntity } from './taon-cms-tag.entity';\n\nexport const TaonCmsTagDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsTagEntity>;","export enum TaonCmsTagState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsTagState } from './taon-cms-tag.models';\n\n//namespace TaonCmsTagUtils\n\n export function TaonCmsTagUtils__NS__isActive(state: string): state is TaonCmsTagState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsTagUtils\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ActivatedRoute } from '@angular/router';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport {\n TaonConfirmDialogComponent,\n TaonDatatableComponent,\n} from '@taon-dev/ui/websql-prod';\nimport { Observable, finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryApiService } from '../taon-cms-category/taon-cms-category-api.service';\nimport type { TaonCmsCategoryEntity } from '../taon-cms-category/taon-cms-category.entity';\nimport type { TaonCmsCategoryFields } from '../taon-cms-category/taon-cms-taxonomy.validation';\nimport { TaonCmsTagApiService } from '../taon-cms-tag/taon-cms-tag-api.service';\nimport type { TaonCmsTagEntity } from '../taon-cms-tag/taon-cms-tag.entity';\n\nconst t = Translation.for('src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts', {\"src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data')).default}} as any);\ntype TaxonomyRow = TaonCmsCategoryEntity | TaonCmsTagEntity;\n\n@Component({\n selector: 'taon-cms-taxonomy-backoffice',\n templateUrl: './taon-cms-taxonomy-backoffice.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n TaonDatatableComponent,\n ],\n providers: [TaonCmsCategoryApiService, TaonCmsTagApiService],\n styles: [\n `\n :host {\n display: block;\n }\n form {\n display: grid;\n gap: 1rem;\n max-width: 640px;\n margin-block: 1.5rem;\n }\n .actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n `,\n ],\n})\nexport class TaonCmsTaxonomyBackofficeComponent {\n readonly t = t.for(this);\n readonly isCategory =\n inject(ActivatedRoute).snapshot.data['taxonomy'] === 'category';\n private readonly categories = inject(TaonCmsCategoryApiService);\n private readonly tags = inject(TaonCmsTagApiService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly dialog = inject(MatDialog);\n readonly rows = signal<TaxonomyRow[]>([]);\n readonly busy = signal(false);\n readonly error = signal('');\n readonly editing = signal(false);\n editingId: number | null = null;\n draft: TaonCmsCategoryFields = this.emptyDraft();\n\n readonly columns: MtxGridColumn[] = [\n { header: this.t.gettext('Name'), field: 'name', sortable: true },\n { header: this.t.gettext('Slug'), field: 'slug', sortable: true },\n ...(this.isCategory\n ? [\n {\n header: this.t.gettext('Parent Category'),\n field: 'parentName',\n sortable: true,\n },\n {\n header: this.t.gettext('Sort Order'),\n field: 'sortOrder',\n sortable: true,\n },\n ]\n : [\n {\n header: this.t.gettext('Description'),\n field: 'description',\n sortable: true,\n },\n ]),\n {\n header: this.t.gettext('Actions'),\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'edit',\n tooltip: this.t.gettext('Edit'),\n disabled: () => this.busy(),\n click: (row: TaxonomyRow) => this.edit(row),\n },\n {\n type: 'icon',\n icon: 'delete',\n tooltip: this.t.gettext('Delete'),\n disabled: () => this.busy(),\n click: (row: TaxonomyRow) => this.delete(row),\n },\n ],\n },\n ];\n\n ngOnInit(): void {\n this.reload();\n }\n\n reload(): void {\n if (this.busy()) {\n return;\n }\n const request: Observable<TaxonomyRow[]> = this.isCategory\n ? this.categories.allMyEntities$\n : this.tags.allMyEntities$;\n this.run(request, rows => this.rows.set(rows));\n }\n\n tableRows() {\n return this.rows().map(row => ({\n ...row,\n parentName:\n 'parentCategoryId' in row\n ? (this.rows().find(parent => parent.id === row.parentCategoryId)\n ?.name ?? '')\n : '',\n }));\n }\n\n parentOptions(): TaonCmsCategoryEntity[] {\n const categories = this.rows().filter(\n (row): row is TaonCmsCategoryEntity => 'parentCategoryId' in row,\n );\n return categories.filter(category => {\n const visited = new Set<number>();\n let current: TaonCmsCategoryEntity | undefined = category;\n while (current) {\n if (current.id === this.editingId || visited.has(current.id)) {\n return false;\n }\n visited.add(current.id);\n current = categories.find(\n parent => parent.id === current?.parentCategoryId,\n );\n }\n return true;\n });\n }\n\n edit(row?: TaxonomyRow): void {\n if (this.busy()) {\n return;\n }\n this.editingId = row?.id ?? null;\n this.draft = row\n ? {\n name: row.name,\n slug: row.slug,\n description: row.description,\n parentCategoryId:\n 'parentCategoryId' in row ? row.parentCategoryId : null,\n sortOrder: 'sortOrder' in row ? row.sortOrder : 0,\n }\n : this.emptyDraft();\n this.error.set('');\n this.editing.set(true);\n }\n\n save(): void {\n if (this.busy()) {\n return;\n }\n const request: Observable<TaxonomyRow> = this.isCategory\n ? this.categories.save(this.editingId, this.draft)\n : this.tags.save(this.editingId, this.draft);\n this.run(request, saved => {\n this.editing.set(false);\n this.rows.update(rows => [\n ...rows.filter(row => row.id !== saved.id),\n saved,\n ]);\n });\n }\n\n delete(row: TaxonomyRow): void {\n if (this.busy()) {\n return;\n }\n this.dialog\n .open(TaonConfirmDialogComponent, {\n data: {\n title: this.isCategory\n ? this.t.gettext('Delete category?')\n : this.t.gettext('Delete tag?'),\n message: this.t.gettext(\n 'Only unused items can be deleted. This cannot be undone.',\n ),\n confirmText: this.t.gettext('Delete'),\n },\n })\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n if (confirmed) {\n this.run(\n this.isCategory\n ? this.categories.delete(row.id)\n : this.tags.delete(row.id),\n () => {\n if (this.editingId === row.id) {\n this.editing.set(false);\n }\n this.rows.update(rows => rows.filter(item => item.id !== row.id));\n },\n );\n }\n });\n }\n\n private run<T>(request: Observable<T>, next: (value: T) => void): void {\n if (this.busy()) {\n return;\n }\n this.busy.set(true);\n this.error.set('');\n request\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.busy.set(false)),\n )\n .subscribe({\n next: value => {\n this.busy.set(false);\n next(value);\n },\n error: (error: unknown) => {\n console.error('[taon-cms-taxonomy] Operation failed', error);\n this.error.set(\n this.t.gettext(\n 'The operation failed. Check for duplicate names or slugs, invalid parents, or items still used by posts or child categories, then reload and try again.',\n ),\n );\n },\n });\n }\n\n private emptyDraft(): TaonCmsCategoryFields {\n return {\n name: '',\n slug: '',\n description: '',\n parentCategoryId: null,\n sortOrder: 0,\n };\n }\n}","<h1>{{ isCategory ? t.gettext('Categories') : t.gettext('Tags') }}</h1>\n<div class=\"actions\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"edit()\">\n {{ isCategory ? t.gettext('Create category') : t.gettext('Create tag') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload') }}\n </button>\n</div>\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n@if (busy()) {\n <p role=\"status\">{{ t.gettext('Loading...') }}</p>\n}\n@if (editing()) {\n <form\n #form=\"ngForm\"\n (ngSubmit)=\"save()\">\n <h2>{{ editingId === null ? t.gettext('Create') : t.gettext('Edit') }}</h2>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Name') }}</mat-label>\n <input\n matInput\n name=\"name\"\n required\n [(ngModel)]=\"draft.name\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Slug') }}</mat-label>\n <input\n matInput\n name=\"slug\"\n required\n [(ngModel)]=\"draft.slug\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Description') }}</mat-label>\n <textarea\n matInput\n name=\"description\"\n [(ngModel)]=\"draft.description\"\n [disabled]=\"busy()\"></textarea>\n </mat-form-field>\n @if (isCategory) {\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Parent Category') }}</mat-label>\n <mat-select\n name=\"parentCategoryId\"\n [(ngModel)]=\"draft.parentCategoryId\"\n [disabled]=\"busy()\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of parentOptions(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Sort Order') }}</mat-label>\n <input\n matInput\n name=\"sortOrder\"\n type=\"number\"\n step=\"1\"\n required\n [(ngModel)]=\"draft.sortOrder\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n }\n <div class=\"actions\">\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"\n busy() || form.invalid || !draft.name.trim() || !draft.slug.trim()\n \">\n {{ t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"editing.set(false)\">\n {{ t.gettext('Cancel') }}\n </button>\n </div>\n </form>\n}\n<taon-datatable\n [data]=\"tableRows()\"\n [columns]=\"columns\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\">\n</taon-datatable>\n","import { Routes } from '@angular/router';\n\nexport const TaonCmsCategoriesBackofficeRoutes: Routes = [\n {\n path: '',\n data: { taxonomy: 'category' },\n loadComponent: () =>\n import('./taon-cms-taxonomy-backoffice.component').then(\n m => m.TaonCmsTaxonomyBackofficeComponent,\n ),\n },\n];\n\nexport const TaonCmsTagsBackofficeRoutes: Routes = [\n {\n path: '',\n data: { taxonomy: 'tag' },\n loadComponent: () =>\n import('./taon-cms-taxonomy-backoffice.component').then(\n m => m.TaonCmsTaxonomyBackofficeComponent,\n ),\n },\n];\n","import { DestroyRef, Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { TaonConfirmDialogComponent } from '@taon-dev/ui/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts', {\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\n@Directive()\nexport abstract class TaonCmsPostTableActions {\n private readonly actionsTranslation = t.for(this);\n\n readonly taonCmsContentApiService = inject(TaonCmsContentApiService);\n\n readonly deleting = signal<number | null>(null);\n\n readonly duplicating = signal(false);\n\n readonly error = signal('');\n\n protected readonly destroyRef = inject(DestroyRef);\n\n protected readonly postPath: string[] = [];\n\n private readonly dialog = inject(MatDialog);\n\n private readonly route = inject(ActivatedRoute);\n\n private readonly router = inject(Router);\n\n readonly actionsColumn: MtxGridColumn = {\n header: this.actionsTranslation.gettext('Actions'),\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'content_copy',\n tooltip: this.actionsTranslation.gettext('Duplicate post'),\n disabled: () => this.duplicating(),\n click: (post: TaonCmsContentEntity) => this.duplicate(post),\n },\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: this.actionsTranslation.gettext('Post details'),\n click: (post: TaonCmsContentEntity) => this.openDetails(post),\n },\n {\n type: 'icon',\n icon: 'delete',\n tooltip: this.actionsTranslation.gettext('Delete (archive) post'),\n disabled: (post: TaonCmsContentEntity) =>\n post.status === 'archived' || this.deleting() !== null,\n click: (post: TaonCmsContentEntity) => this.delete(post),\n },\n ],\n };\n\n abstract reload(): void;\n\n add(): void {\n this.openPost('new');\n }\n\n openDetails(post: TaonCmsContentEntity): void {\n this.openPost(post.id);\n }\n\n private openPost(id: number | 'new'): void {\n const postsRoute = this.route.parent;\n if (!postsRoute) {\n this.error.set(\n this.actionsTranslation.gettext('The Post details route is unavailable.'),\n );\n return;\n }\n void this.router.navigate([...this.postPath, id], { relativeTo: postsRoute });\n }\n\n duplicate(post: TaonCmsContentEntity): void {\n if (this.duplicating()) {\n return;\n }\n this.duplicating.set(true);\n this.error.set('');\n this.taonCmsContentApiService\n .duplicateContent(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.duplicating.set(false)),\n )\n .subscribe({\n next: duplicate => this.openDetails(duplicate),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-posts-backoffice] Unable to duplicate post',\n error,\n );\n this.error.set(\n this.actionsTranslation.gettext(\n 'The post could not be duplicated. Please try again.',\n ),\n );\n },\n });\n }\n\n delete(post: TaonCmsContentEntity): void {\n if (this.deleting() !== null || post.status === 'archived') {\n return;\n }\n this.deleting.set(post.id);\n const ref = this.dialog.open(TaonConfirmDialogComponent, {\n data: {\n title: this.actionsTranslation.gettext('Delete post?'),\n message: this.actionsTranslation.gettext(\n 'This archives the post. It can be restored from its revisions.',\n ),\n confirmText: this.actionsTranslation.gettext('Delete'),\n },\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n if (!confirmed) {\n this.deleting.set(null);\n return;\n }\n this.error.set('');\n this.taonCmsContentApiService\n .deleteContent(post.id, post.version)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.deleting.set(null)),\n )\n .subscribe({\n next: () => this.reload(),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-posts-backoffice] Unable to delete post',\n error,\n );\n this.error.set(\n this.actionsTranslation.gettext(\n 'The post could not be deleted. Refresh the table before retrying.',\n ),\n );\n },\n });\n });\n }\n}","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts', {\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-course-contents',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, TaonDatatableComponent],\n templateUrl: './taon-cms-course-contents.component.html',\n})\nexport class TaonCmsCourseContentsComponent implements OnInit {\n readonly t = t.for(this);\n\n @Input({ required: true })\n course!: TaonCmsContentEntity;\n\n @Input({ required: true })\n actionsColumn!: MtxGridColumn;\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly posts = signal<TaonCmsContentEntity[]>([]);\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n columns: MtxGridColumn[] = [];\n\n ngOnInit(): void {\n this.columns = [\n { header: 'ID', field: 'id', sortable: true },\n { header: this.t.gettext('Title'), field: 'title', sortable: true },\n { header: this.t.gettext('Status'), field: 'status', sortable: true },\n this.actionsColumn,\n ];\n this.reload();\n }\n\n reload(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.api.listRelatedPosts(this.course.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: posts =>\n this.posts.set(posts.filter(post => post.status !== 'archived')),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-course-contents] Unable to load related posts',\n error,\n );\n this.error.set(\n this.t.gettext('Course contents could not be loaded. Please retry.'),\n );\n },\n });\n }\n}","<section [attr.aria-label]=\"t.gettext('Course contents')\">\n <h2>{{ t.gettext('Course contents') }}: {{ course.title }}</h2>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading course contents...') }}</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"reload()\">\n {{ t.gettext('Retry') }}\n </button>\n }\n <taon-datatable\n [pageSize]=\"posts().length || 1\"\n [data]=\"posts()\"\n [columns]=\"columns\"\n [showPaginator]=\"false\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\">\n </taon-datatable>\n</section>\n","import { TaonCmsContentType } from '../../taon-cms-content/taon-cms-content.models';\n\nexport function defaultThumbnailKey(type: TaonCmsContentType): string {\n return `cms-placeholder:${type}`;\n}\n\nexport function defaultThumbnailUrl(key: string): string | null {\n const type = Object.values(TaonCmsContentType).find(\n value => key === defaultThumbnailKey(value),\n );\n if (!type) {\n return null;\n }\n const shapes: Record<TaonCmsContentType, string> = {\n normal:\n '<path d=\"M260 126h120v112H260z M280 152h80m-80 20h80m-80 20h52\" />',\n video:\n '<rect x=\"248\" y=\"132\" width=\"144\" height=\"100\" rx=\"16\"/><path d=\"m308 158 40 24-40 24z\"/>',\n audio: '<path d=\"M280 164v40m20-60v80m20-98v116m20-98v80m20-60v40\"/>',\n attachment:\n '<path d=\"M276 124h60l32 32v84h-92z M336 124v36h32m-70 30h48m-48 22h36\"/>',\n };\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\" viewBox=\"0 0 640 360\"><defs><linearGradient id=\"bg\" x2=\"1\" y2=\"1\"><stop stop-color=\"#eaf0ff\"/><stop offset=\"1\" stop-color=\"#e4f5f0\"/></linearGradient></defs><rect width=\"640\" height=\"360\" rx=\"24\" fill=\"url(#bg)\"/><circle cx=\"320\" cy=\"180\" r=\"112\" fill=\"#fff\" opacity=\".65\"/><g fill=\"none\" stroke=\"#52669a\" stroke-width=\"7\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${shapes[type]}</g></svg>`;\n return `data:image/svg+xml,${encodeURIComponent(svg)}`;\n}\n\nexport function visiblePixelRatio(pixels: Uint8ClampedArray): number {\n let visible = 0;\n for (let index = 0; index < pixels.length; index += 4) {\n const luminance =\n 0.2126 * pixels[index] +\n 0.7152 * pixels[index + 1] +\n 0.0722 * pixels[index + 2];\n if (luminance > 18) {\n visible += 1;\n }\n }\n return pixels.length ? visible / (pixels.length / 4) : 0;\n}\n\nfunction videoEvent(\n video: HTMLVideoElement,\n event: string,\n action: () => void,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n clearTimeout(timeout);\n video.removeEventListener(event, done);\n video.removeEventListener('error', failed);\n };\n const done = () => {\n cleanup();\n resolve();\n };\n const failed = () => {\n cleanup();\n reject(new Error(video.error?.message || 'Video decoding failed.'));\n };\n const timeout = setTimeout(() => {\n cleanup();\n reject(new Error('Video decoding timed out.'));\n }, 15000);\n video.addEventListener(event, done, { once: true });\n video.addEventListener('error', failed, { once: true });\n try {\n action();\n } catch (error: unknown) {\n cleanup();\n reject(error);\n }\n });\n}\n\nexport async function generateVideoThumbnail(file: Blob): Promise<Blob> {\n const video = document.createElement('video');\n const url = URL.createObjectURL(file);\n try {\n video.muted = true;\n video.playsInline = true;\n video.preload = 'auto';\n await videoEvent(video, 'loadeddata', () => {\n video.src = url;\n video.load();\n });\n if (!video.videoWidth || !video.videoHeight) {\n throw new Error('The video has no decodable dimensions.');\n }\n const analysis = document.createElement('canvas');\n analysis.width = 64;\n analysis.height = Math.max(\n 1,\n Math.round((64 * video.videoHeight) / video.videoWidth),\n );\n const context = analysis.getContext('2d', { willReadFrequently: true });\n if (!context) {\n throw new Error('Canvas is unavailable.');\n }\n const seek = async (time: number) => {\n if (Math.abs(video.currentTime - time) > 0.001) {\n await videoEvent(video, 'seeked', () => {\n video.currentTime = time;\n });\n }\n };\n const end = Number.isFinite(video.duration)\n ? Math.min(5, Math.max(0, video.duration - 0.01))\n : 5;\n let bestTime = 0;\n let bestRatio = -1;\n let found = false;\n for (let time = 0; time <= end; time += 0.25) {\n await seek(time);\n context.drawImage(video, 0, 0, analysis.width, analysis.height);\n const ratio = visiblePixelRatio(\n context.getImageData(0, 0, analysis.width, analysis.height).data,\n );\n if (ratio > bestRatio) {\n bestRatio = ratio;\n bestTime = time;\n }\n // Small highlights or a subject in a dark scene are enough.\n if (ratio >= 0.02) {\n found = true;\n break;\n }\n }\n if (!found) {\n await seek(bestTime);\n }\n const canvas = document.createElement('canvas');\n const scale = Math.min(1, 1280 / video.videoWidth, 720 / video.videoHeight);\n canvas.width = Math.max(1, Math.round(video.videoWidth * scale));\n canvas.height = Math.max(1, Math.round(video.videoHeight * scale));\n const output = canvas.getContext('2d');\n if (!output) {\n throw new Error('Canvas is unavailable.');\n }\n output.drawImage(video, 0, 0, canvas.width, canvas.height);\n return await new Promise<Blob>((resolve, reject) => {\n canvas.toBlob(\n blob =>\n blob\n ? resolve(blob)\n : reject(new Error('Thumbnail encoding failed.')),\n 'image/webp',\n 0.85,\n );\n });\n } finally {\n try {\n video.pause();\n video.removeAttribute('src');\n video.load();\n } finally {\n URL.revokeObjectURL(url);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { defaultThumbnailUrl } from '../taon-cms-post/taon-cms-thumbnail';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts', {\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-course-cover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule],\n templateUrl: './taon-cms-course-cover.component.html',\n styles: [`\n :host {\n display: block;\n }\n img {\n display: block;\n max-height: 50px;\n max-width: 90px;\n width: auto;\n height: auto;\n object-fit: contain;\n }\n `],\n})\nexport class TaonCmsCourseCoverComponent implements OnInit {\n readonly t = t.for(this);\n\n @Input({ required: true })\n post!: TaonCmsContentEntity;\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly url = signal('');\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n ngOnInit(): void {\n void this.reload();\n }\n\n async reload(): Promise<void> {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.url.set('');\n this.error.set('');\n try {\n const url =\n defaultThumbnailUrl(this.post.thumbnailKey ?? '') ??\n await this.api.getThumbnailLinkBySlug(this.post.slug);\n if (!url) {\n throw new Error('The thumbnail URL is empty.');\n }\n if (!this.destroyRef.destroyed) {\n this.url.set(url);\n }\n } catch (error: unknown) {\n console.error('[taon-cms-course-cover] Unable to load thumbnail', error);\n if (!this.destroyRef.destroyed) {\n this.failed();\n }\n } finally {\n if (!this.destroyRef.destroyed) {\n this.loading.set(false);\n }\n }\n }\n\n failed(): void {\n this.url.set('');\n this.error.set(this.t.gettext('Cover unavailable. Retry'));\n }\n}","@if (url()) {\n <img [src]=\"url()\" [alt]=\"post.title\" (error)=\"failed()\" />\n}\n@if (error()) {\n <button mat-button type=\"button\" (click)=\"reload()\">{{ error() }}</button>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n TemplateRef,\n ViewChild,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsPostTableActions } from '../taon-cms-posts-backoffice/taon-cms-post-table-actions.directive';\n\nimport { TaonCmsCourseContentsComponent } from './taon-cms-course-contents.component';\nimport { TaonCmsCourseCoverComponent } from './taon-cms-course-cover.component';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts', {\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-course-backoffice',\n templateUrl: './taon-cms-course-backoffice.component.html',\n styleUrls: ['./taon-cms-course-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n MatIconModule,\n TaonDatatableComponent,\n TaonCmsCourseContentsComponent,\n TaonCmsCourseCoverComponent,\n ],\n providers: [TaonCmsContentApiService],\n})\nexport class TaonCmsCourseBackofficeComponent\n extends TaonCmsPostTableActions\n implements OnInit {\n readonly t = t.for(this);\n\n @ViewChild('coverTemplate', { static: true })\n readonly coverTemplate!: TemplateRef<unknown>;\n\n @ViewChild('visibilityTemplate', { static: true })\n readonly visibilityTemplate!: TemplateRef<unknown>;\n\n protected override readonly postPath = ['../posts'];\n\n readonly courses = signal<TaonCmsContentEntity[]>([]);\n\n readonly loading = signal(false);\n\n columns: MtxGridColumn[] = [];\n\n ngOnInit(): void {\n this.columns = [\n { header: 'ID', field: 'id', sortable: true, showExpand: true },\n {\n header: this.t.gettext('Cover'),\n field: 'thumbnailKey',\n cellTemplate: this.coverTemplate,\n width: '110px',\n },\n { header: this.t.gettext('Title'), field: 'title', sortable: true },\n {\n header: this.t.gettext('Visibility'),\n field: 'status',\n sortable: true,\n cellTemplate: this.visibilityTemplate,\n },\n this.actionsColumn,\n ].map(column => ({\n ...column,\n class: (post: TaonCmsContentEntity) =>\n post?.status === 'published' ? 'cms-course-public' : 'cms-course-private',\n }));\n this.reload();\n }\n\n reload(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.taonCmsContentApiService.listCourses()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: courses => this.courses.set(courses),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-course-backoffice] Unable to load courses',\n error,\n );\n this.error.set(\n this.t.gettext('Courses could not be loaded. Please try reloading.'),\n );\n },\n });\n }\n}","<h1>{{ t.gettext('Courses') }}</h1>\n<h2 style=\"color: goldenrod;\">{{ t.gettext('Course is just a post with related posts and thumbnail. Any non archived post can be course.') }}</h2>\n<button mat-button type=\"button\" [disabled]=\"loading()\" (click)=\"reload()\">\n {{ t.gettext('Reload courses') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading courses...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [data]=\"courses()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #coverTemplate let-post>\n <taon-cms-course-cover [post]=\"post\"></taon-cms-course-cover>\n</ng-template>\n<ng-template #visibilityTemplate let-post>\n <span class=\"visibility\">\n <mat-icon aria-hidden=\"true\">\n {{ post.status === 'published' ? 'lock_open' : 'lock' }}\n </mat-icon>\n {{ post.status === 'published' ? t.gettext('Public') : t.gettext('Private') }}\n </span>\n</ng-template>\n<ng-template #expansionTemplate let-course>\n <taon-cms-course-contents\n [course]=\"course\"\n [actionsColumn]=\"actionsColumn\">\n </taon-cms-course-contents>\n</ng-template>\n","//namespace TaonCmsCourseBackofficeModels\n\n//end of namespace TaonCmsCourseBackofficeModels\n","import { Routes } from '@angular/router';\n\nexport const TaonCmsCourseBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-cms-course-backoffice.component').then(\n m => m.TaonCmsCourseBackofficeComponent,\n ),\n },\n];\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n SecurityContext,\n inject,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Directive({\n selector: '[taonCmsEditable]',\n})\nexport class TaonCmsEditableDirective {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef)\n .nativeElement;\n private readonly sanitizer = inject(DomSanitizer);\n private value = '';\n private composing = false;\n\n @Input() taonCmsEditableFormat: 'text' | 'html' = 'text';\n @Input() taonCmsEditableSingleLine = false;\n @Output() readonly taonCmsEditableChange = new EventEmitter<string>();\n\n @Input()\n set taonCmsEditable(value: string) {\n if (value === this.value) {\n return;\n }\n this.value = value;\n this.render();\n }\n\n @HostListener('compositionstart')\n compositionStart(): void {\n this.composing = true;\n }\n\n @HostListener('compositionend')\n compositionEnd(): void {\n this.composing = false;\n this.onInput();\n }\n\n @HostListener('input')\n onInput(): void {\n if (this.composing) {\n return;\n }\n const text = this.element.innerText;\n this.value =\n this.taonCmsEditableFormat === 'html'\n ? this.sanitize(this.element.innerHTML)\n : this.taonCmsEditableSingleLine\n ? text.replace(/\\s*\\n\\s*/g, ' ')\n : text;\n // Remember emitted values so Angular does not rewrite the DOM/caret on input.\n this.taonCmsEditableChange.emit(this.value);\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onInput();\n this.render();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.taonCmsEditableSingleLine && event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const selection = this.element.ownerDocument.getSelection();\n if (!selection?.rangeCount || !event.clipboardData) {\n return;\n }\n const range = selection.getRangeAt(0);\n if (!this.element.contains(range.commonAncestorContainer)) {\n return;\n }\n const pasted = event.clipboardData.getData('text/plain');\n const text = this.taonCmsEditableSingleLine\n ? pasted.replace(/\\s*\\n\\s*/g, ' ')\n : pasted;\n range.deleteContents();\n const node = this.element.ownerDocument.createTextNode(text);\n range.insertNode(node);\n range.setStartAfter(node);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n this.onInput();\n }\n\n private sanitize(value: string): string {\n return this.sanitizer.sanitize(SecurityContext.HTML, value) ?? '';\n }\n\n private render(): void {\n if (this.taonCmsEditableFormat === 'html') {\n this.element.innerHTML = this.sanitize(this.value);\n } else {\n this.element.textContent = this.value;\n }\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n HostListener,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsContentRevisionApiService } from '../../taon-cms-content-revision/taon-cms-content-revision-api.service';\nimport type { TaonCmsContentRevisionEntity } from '../../taon-cms-content-revision/taon-cms-content-revision.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts', {\"src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-revision-chooser',\n templateUrl: './taon-cms-revision-chooser.component.html',\n styleUrls: ['./taon-cms-revision-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePipe, MatButtonModule, MatDialogModule, MatRadioModule],\n providers: [TaonCmsContentRevisionApiService],\n})\nexport class TaonCmsRevisionChooserComponent {\n readonly t = t.for(this);\n\n readonly post = inject<TaonCmsContentEntity>(MAT_DIALOG_DATA);\n\n readonly revisions = signal<TaonCmsContentRevisionEntity[]>([]);\n\n readonly selected = signal<number | null>(null);\n\n readonly loading = signal(false);\n\n readonly applying = signal(false);\n\n readonly error = signal('');\n\n private readonly api = inject(TaonCmsContentRevisionApiService);\n\n private readonly ref = inject(\n MatDialogRef<TaonCmsRevisionChooserComponent, TaonCmsContentEntity>,\n );\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n this.load();\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onEscape(event: KeyboardEvent): void {\n event.stopPropagation();\n this.ref.close();\n }\n\n load(): void {\n if (this.loading() || this.applying()) {\n return;\n }\n this.selected.set(null);\n this.loading.set(true);\n this.error.set('');\n this.api\n .listRevisions(this.post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: revisions =>\n this.revisions.set(\n [...revisions].sort((a, b) => b.revisionNumber - a.revisionNumber),\n ),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-revision-chooser] Unable to load revisions',\n error,\n );\n this.error.set(\n this.t.gettext('Revisions could not be loaded. Please try again.'),\n );\n },\n });\n }\n\n apply(): void {\n const revisionNumber = this.selected();\n if (this.loading() || this.applying()) {\n return;\n }\n if (revisionNumber === null) {\n this.error.set(this.t.gettext('Select a revision to restore.'));\n return;\n }\n this.applying.set(true);\n this.error.set('');\n this.api\n .restoreContent(this.post.id, {\n revisionNumber,\n expectedVersion: this.post.version,\n })\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.applying.set(false)),\n )\n .subscribe({\n next: post => this.ref.close(post),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-revision-chooser] Unable to restore revision',\n error,\n );\n this.error.set(\n this.t.gettext(\n 'The revision could not be restored. If the post changed, close and reopen it to load its latest version.',\n ),\n );\n },\n });\n }\n\n cancel(): void {\n if (!this.applying()) {\n this.ref.close();\n }\n }\n}","<h2 mat-dialog-title>{{ t.gettext('Restore a revision') }}</h2>\n<mat-dialog-content>\n <p>\n {{\n t.gettext(\n 'Restoring replaces the post, including its status, with the selected revision.'\n )\n }}\n </p>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading revisions...') }}</p>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Post revisions')\"\n [value]=\"selected()\"\n (change)=\"selected.set($event.value)\"\n [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button\n [value]=\"revision.revisionNumber\"\n [disabled]=\"!revision.snapshot\">\n <strong>{{\n t.gettext('Revision [[ revisionNumber ]]', {\n revisionNumber: revision.revisionNumber,\n })\n }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (\n revision.createdByUserId !== null &&\n revision.createdByUserId !== undefined\n ) {\n <span>{{\n t.gettext('User [[ userId ]]', {\n userId: revision.createdByUserId,\n })\n }}</span>\n }\n @if (!revision.snapshot) {\n <span>{{ t.gettext('Legacy revision - cannot be restored') }}</span>\n }\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No revisions are available.') }}</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading() || applying()\"\n (click)=\"load()\">\n {{ t.gettext('Reload revisions') }}\n </button>\n }\n @if (applying()) {\n <p role=\"status\">{{ t.gettext('Restoring...') }}</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"applying()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || applying() || selected() === null\"\n (click)=\"apply()\">\n {{ t.gettext('Apply') }}\n </button>\n</mat-dialog-actions>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts', {\"src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html\":{\"en-US\":async () => (await import('./i18n/taon-related-post-chooser.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-related-post-chooser.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-related-post-chooser.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data')).default}} as any);\n\nexport interface TaonRelatedPostChooserData {\n postId?: number;\n excludedIds: number[];\n}\n\n@Component({\n selector: 'taon-related-post-chooser',\n templateUrl: './taon-related-post-chooser.component.html',\n styleUrls: ['./taon-related-post-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, MatDialogModule, MatRadioModule],\n providers: [TaonCmsContentApiService],\n})\nexport class TaonRelatedPostChooserComponent {\n readonly t = t.for(this);\n\n readonly data = inject<TaonRelatedPostChooserData>(MAT_DIALOG_DATA);\n readonly posts = signal<TaonCmsContentEntity[]>([]);\n readonly selected = signal<number | null>(null);\n readonly query = signal('');\n readonly loading = signal(false);\n readonly error = signal('');\n readonly filteredPosts = computed(() => {\n const query = this.query().trim().toLowerCase();\n return this.posts().filter(\n post =>\n post.id !== this.data.postId &&\n !this.data.excludedIds.includes(post.id) &&\n `${post.id} ${post.title} ${post.slug}`.toLowerCase().includes(query),\n );\n });\n\n private readonly api = inject(TaonCmsContentApiService);\n private readonly ref = inject(\n MatDialogRef<TaonRelatedPostChooserComponent, TaonCmsContentEntity>,\n );\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n this.load();\n }\n\n load(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.selected.set(null);\n this.error.set('');\n this.api.allMyEntities$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: posts => this.posts.set(posts),\n error: (error: unknown) => {\n console.error(\n '[taon-related-post-chooser] Unable to load posts',\n error,\n );\n this.error.set(\n this.t.gettext('Posts could not be loaded. Please try again.'),\n );\n },\n });\n }\n\n search(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n this.query.set(event.target.value);\n this.selected.set(null);\n }\n }\n\n choose(): void {\n if (this.loading() || this.error()) {\n return;\n }\n const post = this.filteredPosts().find(post => post.id === this.selected());\n if (!post) {\n this.error.set(this.t.gettext('Select a related post.'));\n return;\n }\n this.ref.close(post);\n }\n\n cancel(): void {\n this.ref.close();\n }\n}","<h2 mat-dialog-title>{{ t.gettext('Add related post') }}</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>{{ t.gettext('Search posts') }}</span>\n <input\n type=\"search\"\n [attr.aria-label]=\"t.gettext('Search posts by ID, title or slug')\"\n [value]=\"query()\"\n [disabled]=\"loading()\"\n (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading posts...') }}</p>\n } @else if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n <button\n mat-button\n type=\"button\"\n (click)=\"load()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Related post')\"\n [value]=\"selected()\"\n (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 }}\n <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No matching posts available.') }}</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || !!error() || selected() === null\"\n (click)=\"choose()\">\n {{ t.gettext('Add related post') }}\n </button>\n</mat-dialog-actions>\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { TaonPermissionApiService } from '@taon-dev/session/websql-prod';\nimport type { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\nimport { TaonConfirmDialogComponent } from '@taon-dev/ui/websql-prod';\nimport { Editor, NgxEditorModule, toHTML } from 'ngx-editor';\nimport type { Toolbar } from 'ngx-editor';\nimport {\n Observable,\n Subscription,\n finalize,\n firstValueFrom,\n forkJoin,\n of,\n take,\n} from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsApplicationHookEntity } from '../../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport type { TaonCmsApplicationHook } from '../../taon-cms-application-hooks';\nimport { TaonCmsCategoryApiService } from '../../taon-cms-category/taon-cms-category-api.service';\nimport type { TaonCmsCategoryEntity } from '../../taon-cms-category/taon-cms-category.entity';\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport { TaonCmsContentConfigService } from '../../taon-cms-content/taon-cms-content.config.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport type { TaonCmsUpdateContent } from '../../taon-cms-content/taon-cms-content.models';\nimport { TaonCmsContentType } from '../../taon-cms-content/taon-cms-content.models';\nimport { resolveTemplateVariables } from '../../taon-cms-content/taon-cms-template-variables';\nimport type { TaonCmsTemplateVariable } from '../../taon-cms-content/taon-cms-template-variables';\nimport { TaonCmsTagApiService } from '../../taon-cms-tag/taon-cms-tag-api.service';\nimport type { TaonCmsTagEntity } from '../../taon-cms-tag/taon-cms-tag.entity';\nimport { TaonCmsRevisionChooserComponent } from '../taon-cms-revision-chooser/taon-cms-revision-chooser.component';\nimport { TaonRelatedPostChooserComponent } from '../taon-related-post-chooser/taon-related-post-chooser.component';\nimport type { TaonRelatedPostChooserData } from '../taon-related-post-chooser/taon-related-post-chooser.component';\n\nimport { TaonCmsEditableDirective } from './taon-cms-editable.directive';\nimport type { TaonCmsPostDraft, TaonCmsPostMode } from './taon-cms-post.models';\nimport {\n defaultThumbnailKey,\n defaultThumbnailUrl,\n generateVideoThumbnail,\n} from './taon-cms-thumbnail';\n\n//#endregion\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts', {\"src/lib/taon-posts/taon-cms-post/taon-cms-post.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-post.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-post',\n templateUrl: './taon-cms-post.component.html',\n styleUrls: ['./taon-cms-post.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatMenuModule,\n MatTabsModule,\n NgxEditorModule,\n MatChipsModule,\n MatProgressBarModule,\n MatRadioModule,\n MatSelectModule,\n TaonCmsEditableDirective,\n ],\n providers: [\n TaonCmsContentApiService,\n TaonCmsContentConfigService,\n TaonPermissionApiService,\n TaonCmsCategoryApiService,\n TaonCmsTagApiService,\n ],\n})\nexport class TaonCmsPostComponent {\n readonly t = t.for(this);\n\n //#region fields and getters\n readonly post = input<TaonCmsContentEntity | null>(null);\n\n readonly mode = model<TaonCmsPostMode>('view');\n\n readonly changed = output<TaonCmsContentEntity>();\n\n readonly deleted = output<TaonCmsContentEntity>();\n\n readonly duplicated = output<TaonCmsContentEntity>();\n\n readonly cancelled = output<void>();\n\n readonly currentPost = signal<TaonCmsContentEntity | null>(null);\n\n readonly placeholderShortIntro = this.t.signal.gettext(\n 'A short introduction...',\n );\n\n readonly placeholderTitle = this.t.signal.gettext('Title');\n\n readonly placeholderTellYourStory =\n this.t.signal.gettext('Tell your story...');\n\n readonly draft = signal<TaonCmsPostDraft>({\n type: TaonCmsContentType.Normal,\n title: '',\n slug: '',\n excerpt: '',\n body: '',\n videoKey: null,\n audioKey: null,\n attachmentKey: null,\n thumbnailKey: null,\n categoryId: null,\n tagIds: [],\n });\n\n readonly postTypes = [\n {\n value: TaonCmsContentType.Normal,\n label: this.t.gettext('Normal post'),\n },\n { value: TaonCmsContentType.Video, label: this.t.gettext('Video post') },\n { value: TaonCmsContentType.Audio, label: this.t.gettext('Audio post') },\n {\n value: TaonCmsContentType.Attachment,\n label: this.t.gettext('Attachment post'),\n },\n ];\n\n private readonly mediaAttachments = [\n {\n type: TaonCmsContentType.Video,\n key: 'videoKey',\n heading: this.t.gettext('Video Attachment'),\n uploadLabel: this.t.gettext('Upload video'),\n accept: 'video/*',\n },\n {\n type: TaonCmsContentType.Audio,\n key: 'audioKey',\n heading: this.t.gettext('Audio Attachment'),\n uploadLabel: this.t.gettext('Upload audio'),\n accept: 'audio/*',\n },\n {\n type: TaonCmsContentType.Attachment,\n key: 'attachmentKey',\n heading: this.t.gettext('File Attachment'),\n uploadLabel: this.t.gettext('Upload file'),\n accept: '',\n },\n ] as const;\n\n readonly mediaAttachment = computed(() =>\n this.mediaAttachments.find(media => media.type === this.draft().type),\n );\n\n readonly busy = signal(false);\n\n readonly thumbnailPreviewUrl = signal('');\n\n readonly thumbnailError = signal('');\n\n private readonly thumbnailReference = computed(\n () => this.draft().thumbnailKey,\n );\n\n private readonly thumbnailSlug = computed(() => this.draft().slug);\n\n readonly taxonomyLoading = signal(false);\n\n readonly taxonomyError = signal('');\n\n readonly categories = signal<TaonCmsCategoryEntity[]>([]);\n\n readonly tags = signal<TaonCmsTagEntity[]>([]);\n\n readonly tagSearch = signal('');\n\n readonly filteredTags = computed(() => {\n const query = this.tagSearch().trim().toLowerCase();\n return this.tags().filter(\n tag =>\n !this.draft().tagIds.includes(tag.id) &&\n `${tag.name} ${tag.slug}`.toLowerCase().includes(query),\n );\n });\n\n readonly selectedTags = computed(() =>\n this.tags().filter(tag => this.draft().tagIds.includes(tag.id)),\n );\n\n private readonly categoryApi = inject(TaonCmsCategoryApiService);\n\n private readonly tagApi = inject(TaonCmsTagApiService);\n\n private taxonomyLoad?: Subscription;\n\n private editorSession = 0;\n\n private thumbnailObjectUrl = '';\n\n private readonly stagedThumbnail = signal<{\n key: string | null;\n url: string;\n } | null>(null);\n\n readonly uploading = signal(false);\n\n readonly uploadProgress = signal(0);\n\n readonly mediaPreviewUrl = signal('');\n\n readonly mediaPreviewLoading = signal(false);\n\n readonly mediaPreviewError = signal('');\n\n private readonly mediaFileNames = signal<Record<string, string>>({});\n\n private readonly uploadedMediaPreview = signal<{\n key: string;\n url: string;\n fileName: string;\n } | null>(null);\n\n private mediaPreviewRequest = 0;\n\n private mediaPreviewSignature = '';\n\n readonly dialogOpen = signal(false);\n\n readonly error = signal('');\n\n readonly relatedPosts = signal<TaonCmsContentEntity[]>([]);\n\n readonly relatedPostsLoading = signal(false);\n\n readonly relatedPostsError = signal('');\n\n readonly applicationHooks = signal<TaonCmsApplicationHookEntity[]>([]);\n\n readonly applicationHooksLoading = signal(false);\n\n readonly applicationHooksError = signal('');\n\n readonly useAsApplicationHook = signal(false);\n\n readonly selectedApplicationHook = signal<TaonCmsApplicationHook | null>(\n null,\n );\n\n readonly permissions = signal<TaonPermissionEntity[]>([]);\n\n readonly applyPermissionsToRelatedPosts = signal(false);\n\n readonly permissionSource = signal<{ id: number; title: string } | null>(\n null,\n );\n\n readonly permissionsLoading = signal(false);\n\n readonly permissionsError = signal('');\n\n readonly permissionOptions = signal<TaonPermissionEntity[]>([]);\n\n readonly permissionOptionsLoading = signal(false);\n\n readonly permissionOptionsError = signal('');\n\n readonly selectedPermissionId = signal<number | null>(null);\n\n readonly availablePermissions = computed(() => {\n const assignedIds = new Set(\n this.permissions().map(permission => permission.id),\n );\n return this.permissionOptions().filter(\n permission => !assignedIds.has(permission.id),\n );\n });\n\n readonly editing = computed(\n () => this.mode() === 'edit' || this.mode() === 'add',\n );\n\n readonly canSave = computed(\n () =>\n !!this.draft().title.trim() &&\n !!this.draft().slug.trim() &&\n !this.relatedPostsLoading() &&\n !this.relatedPostsError() &&\n !this.applicationHooksLoading() &&\n !this.applicationHooksError() &&\n (!this.useAsApplicationHook() || !!this.selectedApplicationHook()) &&\n !this.permissionsLoading() &&\n !this.permissionsError() &&\n !this.taxonomyLoading() &&\n !this.taxonomyError(),\n );\n\n readonly canPublish = computed(() => {\n const post = this.currentPost();\n return !!post && post.status !== 'published';\n });\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly contentConfig = inject(TaonCmsContentConfigService);\n\n readonly contentTab = signal(0);\n\n readonly contentEditor = signal<Editor | null>(null);\n\n readonly rawContent =\n viewChild<ElementRef<HTMLTextAreaElement>>('rawContent');\n\n private loadingEditorContent = false;\n\n readonly contentToolbar: Toolbar = [\n [{ heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }],\n ['bold', 'italic', 'underline', 'strike'],\n ['ordered_list', 'bullet_list'],\n ['blockquote', 'code'],\n ['link', 'image'],\n ['text_color', 'background_color'],\n ['align_left', 'align_center', 'align_right', 'align_justify'],\n ['horizontal_rule', 'format_clear'],\n ['undo', 'redo'],\n ];\n\n readonly resolvedBody = computed(() => {\n const draft = this.draft();\n return resolveTemplateVariables(draft.body, {\n frontendUrl: this.api.frontendUrl,\n site: { name: this.contentConfig.siteName },\n post: {\n title: draft.title,\n url: draft.slug ? this.api.getPostUrl(draft.slug) : null,\n id: this.currentPost()?.id,\n thumbnailUrl: this.thumbnailPreviewUrl() || null,\n },\n });\n });\n\n private readonly permissionApi = inject(TaonPermissionApiService);\n\n private readonly dialog = inject(MatDialog);\n\n private readonly destroyRef = inject(DestroyRef);\n\n private relatedPostsLoad?: Subscription;\n\n private applicationHooksLoad?: Subscription;\n\n private permissionsLoad?: Subscription;\n //#endregion\n\n //#region constructor\n constructor() {\n const editor = new Editor({\n attributes: {\n 'aria-label': this.t.gettext('Post body'),\n style: 'min-height: 20rem',\n },\n });\n\n this.contentEditor.set(editor);\n\n const editorChanges = editor.valueChanges.subscribe(document => {\n if (!this.editing() || this.loadingEditorContent) {\n return;\n }\n\n this.updateDraft('body', toHTML(document, editor.schema));\n });\n\n // React to post input changes.\n effect(() => {\n const post = this.post();\n\n untracked(() => {\n this.setPost(post);\n\n // Synchronize editor only because the POST changed externally.\n this.loadingEditorContent = true;\n\n try {\n editor.setContent(this.draft().body);\n } finally {\n this.loadingEditorContent = false;\n }\n });\n });\n\n // Enable/disable editor without recreating it.\n effect(() => {\n const disabled = this.busy() || this.dialogOpen() || !this.editing();\n\n editor.view.setProps({\n editable: () => !disabled,\n });\n });\n\n // Load edit-mode dependencies.\n effect(() => {\n if (this.editing()) {\n untracked(() => {\n this.loadApplicationHooks();\n this.loadPermissionOptions();\n this.loadTaxonomy();\n });\n }\n });\n\n // Thumbnail preview handling.\n effect(onCleanup => {\n const key = this.thumbnailReference();\n const slug = this.thumbnailSlug();\n const editing = this.editing();\n const staged = this.stagedThumbnail();\n\n let active = true;\n\n onCleanup(() => {\n active = false;\n });\n\n this.thumbnailError.set('');\n this.thumbnailPreviewUrl.set('');\n\n if (staged && staged.key === key) {\n this.thumbnailPreviewUrl.set(staged.url);\n return;\n }\n\n if (!key) {\n return;\n }\n\n const placeholder = defaultThumbnailUrl(key);\n\n if (placeholder) {\n this.thumbnailPreviewUrl.set(placeholder);\n return;\n }\n\n if (!slug) {\n return;\n }\n\n const load = async () => {\n if (editing) {\n return this.api.getAssetUrl(key);\n }\n\n try {\n return await this.api.getThumbnailLinkBySlug(slug, true);\n } catch {\n return this.api.getThumbnailLinkBySlug(slug);\n }\n };\n\n void load()\n .then(url => {\n if (active && !this.destroyRef.destroyed) {\n this.thumbnailPreviewUrl.set(url);\n }\n })\n .catch((error: unknown) => {\n console.error('[taon-cms-post] Unable to load thumbnail', error);\n\n if (active && !this.destroyRef.destroyed) {\n this.thumbnailError.set(\n this.t.gettext('The thumbnail could not be loaded.'),\n );\n }\n });\n });\n\n // Media preview handling.\n effect(() => {\n const media = this.mediaAttachment();\n const key = media ? this.draft()[media.key] : null;\n\n const slug = this.draft().slug;\n const editing = this.editing();\n\n const viewing = !!this.currentPost() && this.mode() !== 'add';\n\n const stagedPreview = this.uploadedMediaPreview();\n\n if ((!editing && !viewing) || !media || !key) {\n this.mediaPreviewSignature = '';\n this.mediaPreviewRequest += 1;\n this.mediaPreviewUrl.set('');\n this.mediaPreviewLoading.set(false);\n this.mediaPreviewError.set('');\n return;\n }\n\n if (stagedPreview?.key === key) {\n const signature = `upload:${key}:${stagedPreview.url}`;\n\n if (signature === this.mediaPreviewSignature) {\n return;\n }\n\n this.mediaPreviewSignature = signature;\n this.mediaPreviewRequest += 1;\n\n this.mediaPreviewUrl.set(stagedPreview.url);\n\n this.mediaPreviewLoading.set(false);\n this.mediaPreviewError.set('');\n\n return;\n }\n\n if (!slug) {\n this.mediaPreviewSignature = '';\n this.mediaPreviewRequest += 1;\n this.mediaPreviewUrl.set('');\n this.mediaPreviewLoading.set(false);\n this.mediaPreviewError.set('');\n return;\n }\n\n const signature = `${this.mode()}:${media.type}:${slug}:${key}`;\n\n if (signature === this.mediaPreviewSignature) {\n return;\n }\n\n this.mediaPreviewSignature = signature;\n\n const requestId = ++this.mediaPreviewRequest;\n\n this.mediaPreviewUrl.set('');\n this.mediaPreviewLoading.set(true);\n this.mediaPreviewError.set('');\n\n const getLink = editing\n ? this.getMediaLink(slug, media.type)\n : this.getMediaLinkForView(slug, media.type);\n\n void getLink\n .then(url => {\n if (\n requestId === this.mediaPreviewRequest &&\n !this.destroyRef.destroyed\n ) {\n this.mediaPreviewUrl.set(url);\n }\n })\n .catch((error: unknown) => {\n console.error('[taon-cms-post] Unable to load media preview', error);\n\n if (\n requestId === this.mediaPreviewRequest &&\n !this.destroyRef.destroyed\n ) {\n this.mediaPreviewError.set(\n this.t.gettext(\n 'Media preview could not be loaded. Please reopen the editor to try again.',\n ),\n );\n }\n })\n .finally(() => {\n if (\n requestId === this.mediaPreviewRequest &&\n !this.destroyRef.destroyed\n ) {\n this.mediaPreviewLoading.set(false);\n }\n });\n });\n\n // Destroy ngx-editor ONLY when this component is actually destroyed.\n this.destroyRef.onDestroy(() => {\n editorChanges.unsubscribe();\n editor.destroy();\n\n if (this.contentEditor() === editor) {\n this.contentEditor.set(null);\n }\n\n this.releaseThumbnailPreview();\n });\n }\n //#endregion\n\n //#region methods / load related posts\n loadTaxonomy(): void {\n this.taxonomyLoad?.unsubscribe();\n const session = this.editorSession;\n const postId = this.currentPost()?.id;\n this.taxonomyLoading.set(true);\n this.taxonomyError.set('');\n this.taxonomyLoad = forkJoin({\n categories: this.categoryApi.allMyEntities$,\n tags: this.tagApi.allMyEntities$,\n tagIds: postId ? this.api.listTagIds(postId) : of([] as number[]),\n })\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.taxonomyLoading.set(false)),\n )\n .subscribe({\n next: result => {\n if (session === this.editorSession) {\n this.categories.set(\n result.categories.sort(\n (a, b) =>\n a.sortOrder - b.sortOrder || a.name.localeCompare(b.name),\n ),\n );\n this.tags.set(result.tags);\n this.updateDraft('tagIds', result.tagIds);\n }\n },\n error: (error: unknown) => {\n console.error(\n '[taon-cms-post] Unable to load categories and tags',\n error,\n );\n this.taxonomyError.set(\n this.t.gettext(\n 'Categories and tags could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n\n addTag(id: number): void {\n if (!this.draft().tagIds.includes(id)) {\n this.updateDraft('tagIds', [...this.draft().tagIds, id]);\n }\n }\n\n removeTag(id: number): void {\n this.updateDraft(\n 'tagIds',\n this.draft().tagIds.filter(selected => selected !== id),\n );\n }\n\n filterTags(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n this.tagSearch.set(event.target.value);\n }\n }\n\n applyDefaultThumbnail(): void {\n if (!this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n this.releaseThumbnailPreview();\n this.stagedThumbnail.set(null);\n this.updateDraft('thumbnailKey', defaultThumbnailKey(this.draft().type));\n }\n\n async thumbnailSelected(event: Event): Promise<void> {\n if (!(event.target instanceof HTMLInputElement)) {\n return;\n }\n const input = event.target;\n const file = input.files?.[0];\n input.value = '';\n if (!file || !this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n if (!file.type.startsWith('image/')) {\n this.error.set(\n this.t.gettext('Please select an image for the thumbnail.'),\n );\n return;\n }\n this.busy.set(true);\n this.error.set('');\n try {\n await this.storeThumbnail(file, this.editorSession);\n } catch (error: unknown) {\n console.error('[taon-cms-post] Unable to upload thumbnail', error);\n this.error.set(\n this.t.gettext(\n 'The thumbnail could not be uploaded. Please try again.',\n ),\n );\n } finally {\n this.busy.set(false);\n }\n }\n\n private async storeThumbnail(file: File, session: number): Promise<void> {\n if (session !== this.editorSession || this.destroyRef.destroyed) {\n return;\n }\n const previousPreview = this.thumbnailPreviewUrl();\n const previousStaged = this.stagedThumbnail();\n const preview = URL.createObjectURL(file);\n this.stagedThumbnail.set({ key: this.draft().thumbnailKey, url: preview });\n this.thumbnailPreviewUrl.set(preview);\n try {\n const object = await this.api.uploadMedia(file);\n if (session === this.editorSession && !this.destroyRef.destroyed) {\n this.releaseThumbnailPreview();\n this.thumbnailObjectUrl = preview;\n this.stagedThumbnail.set({ key: object.key, url: preview });\n this.updateDraft('thumbnailKey', object.key);\n }\n } catch (error: unknown) {\n if (session === this.editorSession) {\n this.stagedThumbnail.set(previousStaged);\n this.thumbnailPreviewUrl.set(previousPreview);\n }\n throw error;\n } finally {\n if (this.thumbnailObjectUrl !== preview) {\n URL.revokeObjectURL(preview);\n }\n }\n }\n\n private releaseThumbnailPreview(): void {\n if (this.thumbnailObjectUrl) {\n URL.revokeObjectURL(this.thumbnailObjectUrl);\n this.thumbnailObjectUrl = '';\n }\n }\n\n loadRelatedPosts(): void {\n if (this.busy() || this.relatedPostsLoading()) {\n return;\n }\n const post = this.requirePost();\n if (!post) {\n return;\n }\n this.relatedPostsLoading.set(true);\n this.relatedPostsError.set('');\n this.relatedPostsLoad = this.api\n .listRelatedPosts(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.relatedPostsLoading.set(false)),\n )\n .subscribe({\n next: posts => this.relatedPosts.set(posts),\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to load related posts', error);\n this.relatedPostsError.set(\n this.t.gettext(\n 'Related posts could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / add related post\n addRelatedPost(): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.relatedPostsLoading() ||\n this.relatedPostsError()\n ) {\n return;\n }\n this.dialogOpen.set(true);\n const ref = this.dialog.open<\n TaonRelatedPostChooserComponent,\n TaonRelatedPostChooserData,\n TaonCmsContentEntity\n >(TaonRelatedPostChooserComponent, {\n data: {\n postId: this.currentPost()?.id,\n excludedIds: this.relatedPosts().map(post => post.id),\n },\n width: '560px',\n maxWidth: '95vw',\n disableClose: true,\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(post => {\n this.dialogOpen.set(false);\n if (\n post &&\n post.id !== this.currentPost()?.id &&\n !this.relatedPosts().some(related => related.id === post.id)\n ) {\n this.relatedPosts.update(posts => [...posts, post]);\n }\n });\n }\n //#endregion\n\n //#region methods / remove related post\n removeRelatedPost(id: number): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.relatedPostsLoading() ||\n this.relatedPostsError()\n ) {\n return;\n }\n this.relatedPosts.update(posts => posts.filter(post => post.id !== id));\n }\n //#endregion\n\n //#region methods / application hooks\n loadApplicationHooks(): void {\n if (this.applicationHooksLoading()) {\n return;\n }\n this.applicationHooksLoading.set(true);\n this.applicationHooksError.set('');\n this.applicationHooksLoad = this.api\n .listApplicationHooks()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.applicationHooksLoading.set(false)),\n )\n .subscribe({\n next: hooks => {\n this.applicationHooks.set(hooks);\n this.setApplicationHookSelection(this.currentPost(), hooks);\n },\n error: (error: unknown) => {\n console.error(\n '[taon-cms-post] Unable to load application hooks',\n error,\n );\n this.applicationHooksError.set(\n this.t.gettext(\n 'Application hooks could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n\n setUseAsApplicationHook(enabled: boolean): void {\n this.useAsApplicationHook.set(enabled);\n }\n\n applicationHookInUseByAnotherPost(\n applicationHook: TaonCmsApplicationHookEntity,\n ): boolean {\n return (\n applicationHook.contentId !== null &&\n applicationHook.contentId !== this.currentPost()?.id\n );\n }\n\n applicationHookLabel(hook: TaonCmsApplicationHook): string {\n return hook.split('-').join('_').toUpperCase();\n }\n //#endregion\n\n //#region methods / load permissions\n loadPermissions(): void {\n if (this.permissionsLoading()) {\n return;\n }\n const post = this.requirePost();\n if (!post) {\n return;\n }\n this.permissionsLoading.set(true);\n this.permissionsError.set('');\n this.permissionsLoad = this.api\n .getPermissionConfiguration(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.permissionsLoading.set(false)),\n )\n .subscribe({\n next: configuration => {\n this.permissions.set(configuration.permissions);\n this.permissionSource.set(configuration.source);\n },\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to load permissions', error);\n this.permissionsError.set(\n this.t.gettext(\n 'Permissions could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / add permission\n addPermission(): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.permissionSource() ||\n this.permissionsLoading() ||\n this.permissionsError()\n ) {\n return;\n }\n const permissionId = this.selectedPermissionId();\n const permission = this.availablePermissions().find(\n item => item.id === permissionId,\n );\n if (permission) {\n this.permissions.update(permissions => [...permissions, permission]);\n this.selectedPermissionId.set(null);\n }\n }\n //#endregion\n\n //#region methods / remove permission\n removePermission(id: number): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.permissionSource() ||\n this.permissionsLoading() ||\n this.permissionsError()\n ) {\n return;\n }\n this.permissions.update(items =>\n items.filter(permission => permission.id !== id),\n );\n }\n //#endregion\n\n //#region methods / load permission options\n loadPermissionOptions(): void {\n if (\n this.permissionOptionsLoading() ||\n this.permissionOptions().length > 0\n ) {\n return;\n }\n this.permissionOptionsLoading.set(true);\n this.permissionOptionsError.set('');\n this.permissionApi.allMyEntities$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.permissionOptionsLoading.set(false)),\n )\n .subscribe({\n next: permissions => this.permissionOptions.set(permissions),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-post] Unable to load permission options',\n error,\n );\n this.permissionOptionsError.set(\n this.t.gettext(\n 'Available permissions could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / update draft\n updateRawContent(event: Event): void {\n if (event.target instanceof HTMLTextAreaElement) {\n this.updateDraft('body', event.target.value);\n }\n }\n\n insertVariable(variable: TaonCmsTemplateVariable): void {\n if (!this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n const text = `{{${variable}}}`;\n if (this.contentTab() === 1) {\n const textarea = this.rawContent()?.nativeElement;\n if (textarea) {\n textarea.setRangeText(\n text,\n textarea.selectionStart,\n textarea.selectionEnd,\n 'end',\n );\n this.updateDraft('body', textarea.value);\n textarea.focus();\n }\n } else if (this.contentTab() === 0) {\n const editor = this.contentEditor();\n editor?.commands.insertText(text).exec();\n editor?.view.focus();\n }\n }\n\n updateDraft<K extends keyof TaonCmsPostDraft>(\n field: K,\n value: TaonCmsPostDraft[K],\n ): void {\n this.draft.update(draft => ({ ...draft, [field]: value }));\n }\n //#endregion\n\n //#region methods / file selected\n async fileSelected(event: Event): Promise<void> {\n if (!(event.target instanceof HTMLInputElement)) {\n this.error.set(this.t.gettext('Unable to read the selected media file.'));\n return;\n }\n const input = event.target;\n const file = input.files?.[0];\n if (!file) {\n return;\n }\n const media = this.mediaAttachment();\n if (!media || !this.editing() || this.busy() || this.dialogOpen()) {\n input.value = '';\n return;\n }\n const session = this.editorSession;\n this.busy.set(true);\n this.uploading.set(true);\n this.uploadProgress.set(0);\n this.error.set('');\n try {\n const object = await this.api.uploadMedia(file, percentage => {\n if (!this.destroyRef.destroyed) {\n this.uploadProgress.set(percentage);\n }\n });\n if (!this.destroyRef.destroyed && this.editorSession === session) {\n const fileName = object.fileName || file.name;\n this.mediaFileNames.update(names => ({\n ...names,\n [object.key]: fileName,\n }));\n if (object.downloadUrl) {\n this.uploadedMediaPreview.set({\n key: object.key,\n url: this.uploadedMediaUrl(object.downloadUrl, media.type),\n fileName,\n });\n }\n this.updateDraft(media.key, object.key);\n if (media.type === TaonCmsContentType.Video) {\n try {\n const blob = await generateVideoThumbnail(file);\n const extension = blob.type === 'image/webp' ? 'webp' : 'png';\n await this.storeThumbnail(\n new File([blob], `thumbnail.${extension}`, { type: blob.type }),\n session,\n );\n } catch (error: unknown) {\n console.error(\n '[taon-cms-post] Unable to generate thumbnail',\n error,\n );\n this.error.set(\n this.t.gettext(\n 'The video was uploaded, but its thumbnail could not be generated. Upload a thumbnail or apply a default placeholder.',\n ),\n );\n }\n }\n }\n } catch (error: unknown) {\n console.error('[taon-cms-post] Unable to upload media', error);\n this.error.set(\n this.t.gettext('The media could not be uploaded. Please try again.'),\n );\n } finally {\n this.busy.set(false);\n this.uploading.set(false);\n this.uploadProgress.set(0);\n input.value = '';\n }\n }\n //#endregion\n\n //#region methods / remove media\n removeMedia(): void {\n const media = this.mediaAttachment();\n if (!media || !this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n this.uploadedMediaPreview.set(null);\n this.updateDraft(media.key, null);\n }\n //#endregion\n\n //#region methods / uploaded media URL\n private uploadedMediaUrl(url: string, type: TaonCmsContentType): string {\n if (type !== TaonCmsContentType.Attachment) {\n return url;\n }\n const parsedUrl = new URL(url);\n parsedUrl.searchParams.set('download', 'true');\n return parsedUrl.href;\n }\n //#endregion\n\n //#region methods / get media link\n private getMediaLink(\n slug: string,\n type: TaonCmsContentType,\n ): Promise<string> {\n switch (type) {\n case TaonCmsContentType.Video:\n return firstValueFrom(this.api.getVideoLinkBySlug(slug));\n case TaonCmsContentType.Audio:\n return firstValueFrom(this.api.getAudioLinkBySlug(slug));\n case TaonCmsContentType.Attachment:\n return this.api.getAttachmentLinkBySlug(slug);\n default:\n return Promise.reject(new Error('This post type has no media.'));\n }\n }\n //#endregion\n\n //#region methods / get media link for viewing\n private async getMediaLinkForView(\n slug: string,\n type: TaonCmsContentType,\n ): Promise<string> {\n try {\n switch (type) {\n case TaonCmsContentType.Video:\n return await this.api.getPublicVideoLinkBySlug(slug);\n case TaonCmsContentType.Audio:\n return await this.api.getPublicAudioLinkBySlug(slug);\n case TaonCmsContentType.Attachment:\n return await this.api.getPublicAttachmentLinkBySlug(slug);\n default:\n throw new Error('This post type has no media.');\n }\n } catch {\n return this.getMediaLink(slug, type);\n }\n }\n //#endregion\n\n //#region methods / media file name\n mediaFileName(key: string): string {\n const fileName = this.mediaFileNames()[key];\n if (fileName) {\n return fileName;\n }\n const uploaded = this.uploadedMediaPreview();\n if (uploaded?.key === key) {\n return uploaded.fileName;\n }\n const storedName = key.split('/').pop() || key;\n return storedName.replace(/^[0-9a-f-]{36}__/i, '');\n }\n //#endregion\n\n //#region methods / update slug\n updateSlug(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n this.updateDraft('slug', event.target.value);\n }\n }\n //#endregion\n\n //#region methods / edit\n edit(): void {\n if (this.mode() !== 'view' || this.busy() || this.dialogOpen()) {\n return;\n }\n if (!this.requirePost()) {\n return;\n }\n this.error.set('');\n this.mode.set('edit');\n }\n //#endregion\n\n //#region methods / cancel\n cancel(): void {\n if (this.busy() || this.dialogOpen()) {\n return;\n }\n this.setPost(this.currentPost());\n this.error.set('');\n if (this.editing()) {\n this.mode.set('view');\n }\n this.cancelled.emit();\n }\n //#endregion\n\n //#region methods / save\n save(): void {\n if (this.busy() || this.dialogOpen() || !this.editing()) {\n return;\n }\n if (!this.canSave()) {\n this.error.set(this.t.gettext('A title and slug are required.'));\n return;\n }\n if (this.mode() === 'add') {\n this.persist(\n this.api.createContent({\n ...this.draft(),\n relatedPostIds: this.relatedPosts().map(post => post.id),\n permissionIds: this.permissions().map(permission => permission.id),\n applyPermissionsToRelatedPosts: this.applyPermissionsToRelatedPosts(),\n applicationHook: this.useAsApplicationHook()\n ? this.selectedApplicationHook()\n : null,\n }),\n );\n } else {\n const post = this.requirePost();\n if (post) {\n this.persist(this.api.updateContent(post.id, this.updateInput(post)));\n }\n }\n }\n //#endregion\n\n //#region methods / publish\n publish(): void {\n if (\n this.busy() ||\n this.dialogOpen() ||\n !this.canPublish() ||\n this.mode() === 'view-clean' ||\n this.mode() === 'add'\n ) {\n return;\n }\n if (this.editing() && !this.canSave()) {\n this.error.set(this.t.gettext('A title and slug are required.'));\n return;\n }\n const post = this.requirePost();\n if (post) {\n this.persist(\n this.api.updateContent(post.id, {\n ...(this.editing()\n ? this.updateInput(post)\n : { expectedVersion: post.version }),\n status: 'published',\n publishedAt: new Date(),\n }),\n );\n }\n }\n //#endregion\n\n //#region methods / unpublish\n unpublish(): void {\n const post = this.currentPost();\n if (\n !post ||\n post.status !== 'published' ||\n this.busy() ||\n this.dialogOpen() ||\n this.mode() === 'view-clean' ||\n this.mode() === 'add'\n ) {\n return;\n }\n this.persist(\n this.api.updateContent(post.id, {\n expectedVersion: post.version,\n status: 'draft',\n }),\n );\n }\n //#endregion\n\n //#region methods / revert\n revert(): void {\n const post = this.requirePost();\n if (\n !post ||\n this.busy() ||\n this.dialogOpen() ||\n this.mode() === 'view-clean'\n ) {\n return;\n }\n this.dialogOpen.set(true);\n const ref = this.dialog.open<\n TaonCmsRevisionChooserComponent,\n TaonCmsContentEntity,\n TaonCmsContentEntity\n >(TaonCmsRevisionChooserComponent, {\n data: post,\n width: '560px',\n maxWidth: '95vw',\n disableClose: true,\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(restored => {\n this.dialogOpen.set(false);\n if (restored) {\n this.acceptPost(restored);\n }\n });\n }\n //#endregion\n\n //#region methods / delete\n delete(): void {\n const post = this.requirePost();\n if (\n !post ||\n this.busy() ||\n this.dialogOpen() ||\n this.mode() === 'view-clean'\n ) {\n return;\n }\n this.dialogOpen.set(true);\n const ref = this.dialog.open(TaonConfirmDialogComponent, {\n data: {\n title: this.t.gettext('Delete post?'),\n message: this.t.gettext(\n 'This archives the post. It can be restored from its revisions.',\n ),\n confirmText: this.t.gettext('Delete'),\n },\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n this.dialogOpen.set(false);\n if (confirmed) {\n this.persist(this.api.deleteContent(post.id, post.version), true);\n }\n });\n }\n //#endregion\n\n //#region methods / duplicate\n duplicate(): void {\n if (this.busy() || this.dialogOpen() || this.mode() === 'view-clean') {\n return;\n }\n const post = this.requirePost();\n if (!post) {\n return;\n }\n this.busy.set(true);\n this.error.set('');\n this.api\n .duplicateContent(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.busy.set(false)),\n )\n .subscribe({\n next: duplicate => this.duplicated.emit(duplicate),\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to duplicate post', error);\n this.error.set(\n this.t.gettext(\n 'The post could not be duplicated. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / update input\n private updateInput(post: TaonCmsContentEntity): TaonCmsUpdateContent {\n return {\n ...this.draft(),\n relatedPostIds: this.relatedPosts().map(related => related.id),\n ...(this.permissionSource()\n ? {}\n : {\n permissionIds: this.permissions().map(permission => permission.id),\n }),\n applyPermissionsToRelatedPosts: this.applyPermissionsToRelatedPosts(),\n applicationHook: this.useAsApplicationHook()\n ? this.selectedApplicationHook()\n : null,\n expectedVersion: post.version,\n };\n }\n //#endregion\n\n //#region methods / require post\n private requirePost(): TaonCmsContentEntity | null {\n const post = this.currentPost();\n if (!post) {\n this.error.set(this.t.gettext('No post is loaded.'));\n }\n return post;\n }\n //#endregion\n\n //#region methods / set post\n private setPost(post: TaonCmsContentEntity | null): void {\n this.editorSession += 1;\n this.taxonomyLoad?.unsubscribe();\n this.taxonomyLoading.set(false);\n this.taxonomyError.set('');\n this.releaseThumbnailPreview();\n this.stagedThumbnail.set(null);\n this.tagSearch.set('');\n this.relatedPostsLoad?.unsubscribe();\n this.applicationHooksLoad?.unsubscribe();\n this.permissionsLoad?.unsubscribe();\n this.relatedPostsLoading.set(false);\n this.relatedPostsError.set('');\n this.applicationHooksLoading.set(false);\n this.applicationHooksError.set('');\n this.permissionsLoading.set(false);\n this.permissionsError.set('');\n this.uploadedMediaPreview.set(null);\n this.mediaPreviewSignature = '';\n this.mediaPreviewRequest += 1;\n this.currentPost.set(post);\n this.relatedPosts.set(post?.relatedPosts ?? []);\n this.permissions.set(post?.permissions ?? []);\n this.permissionSource.set(null);\n this.applyPermissionsToRelatedPosts.set(\n post?.applyPermissionsToRelatedPosts ?? false,\n );\n this.selectedPermissionId.set(null);\n this.setApplicationHookSelection(post, this.applicationHooks());\n this.draft.set({\n type: post?.type ?? TaonCmsContentType.Normal,\n title: post?.title ?? '',\n slug: post?.slug ?? '',\n excerpt: post?.excerpt ?? '',\n body: post?.body ?? '',\n videoKey: post?.videoKey ?? null,\n audioKey: post?.audioKey ?? null,\n attachmentKey: post?.attachmentKey ?? null,\n thumbnailKey: post?.thumbnailKey ?? null,\n categoryId: post?.categoryId ?? null,\n tagIds: [],\n });\n if (\n post &&\n post.relatedPosts === undefined &&\n this.mode() !== 'view-clean'\n ) {\n this.loadRelatedPosts();\n }\n if (post && this.mode() !== 'view-clean') {\n this.loadPermissions();\n }\n if (this.editing()) {\n this.loadTaxonomy();\n }\n }\n //#endregion\n\n private setApplicationHookSelection(\n post: TaonCmsContentEntity | null,\n hooks: TaonCmsApplicationHookEntity[],\n ): void {\n const assignedHook =\n post?.applicationHook !== undefined\n ? post.applicationHook?.hook\n : hooks.find(applicationHook => applicationHook.contentId === post?.id)\n ?.hook;\n this.useAsApplicationHook.set(!!assignedHook);\n this.selectedApplicationHook.set(assignedHook ?? null);\n }\n\n //#region methods / accept post\n private acceptPost(post: TaonCmsContentEntity): void {\n this.setPost(post);\n this.error.set('');\n this.mode.set('view');\n this.changed.emit(post);\n }\n //#endregion\n\n //#region methods / persist\n private persist(\n request: Observable<TaonCmsContentEntity>,\n deleting = false,\n ): void {\n if (this.busy() || this.dialogOpen() || this.mode() === 'view-clean') {\n return;\n }\n this.busy.set(true);\n this.error.set('');\n request\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.busy.set(false)),\n )\n .subscribe({\n next: post => {\n this.acceptPost(post);\n if (deleting) {\n this.deleted.emit(post);\n }\n },\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to save post', error);\n this.error.set(\n this.t.gettext(\n 'The post could not be saved. Check the slug and your connection. If another user changed it, close and reopen the post before retrying.',\n ),\n );\n },\n });\n }\n //#endregion\n}","@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{\n mode() === 'add' ? t.gettext('New draft') : currentPost()?.status\n }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !canSave()\"\n (click)=\"save()\">\n {{ mode() === 'add' ? t.gettext('Add') : t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n } @else if (currentPost()) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"edit()\">\n <mat-icon>edit</mat-icon> {{ t.gettext('Edit') }}\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\"\n (click)=\"publish()\">\n {{ t.gettext('Publish') }}\n </button>\n } @else {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"unpublish()\">\n {{ t.gettext('Unpublish') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"revert()\">\n <mat-icon>history</mat-icon> {{ t.gettext('Revert') }}\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"delete()\">\n <mat-icon>delete</mat-icon> {{ t.gettext('Delete') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"duplicate()\">\n <mat-icon>content_copy</mat-icon> {{ t.gettext('Duplicate') }}\n </button>\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{\n uploading()\n ? t.gettext('Uploading... ') + uploadProgress() + '%'\n : t.gettext('Saving...')\n }}</span>\n }\n </header>\n @if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n }\n}\n\n<article\n class=\"post-article\"\n [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n [attr.aria-label]=\"t.gettext('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\">{{\n type.label\n }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post title')\"\n aria-required=\"true\"\n [attr.data-placeholder]=\"placeholderTitle()\"\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 [attr.aria-label]=\"t.gettext('Post excerpt')\"\n aria-multiline=\"true\"\n [attr.data-placeholder]=\"placeholderShortIntro()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <section class=\"post-content-editor\">\n <mat-tab-group\n [selectedIndex]=\"contentTab()\"\n (selectedIndexChange)=\"contentTab.set($event)\"\n [preserveContent]=\"true\"\n animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('Editor')\">\n @if (contentEditor(); as editor) {\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"contentToolbar\"\n [disabled]=\"busy() || dialogOpen()\" />\n <ngx-editor\n [editor]=\"editor\"\n [placeholder]=\"placeholderTellYourStory()\" />\n }\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Raw')\">\n <textarea\n #rawContent\n class=\"raw-content\"\n [attr.aria-label]=\"t.gettext('Post body HTML')\"\n [value]=\"draft().body\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateRawContent($event)\"\n spellcheck=\"false\"></textarea>\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Preview')\">\n <div\n class=\"post-body content-preview\"\n [innerHTML]=\"resolvedBody()\"></div>\n </mat-tab>\n </mat-tab-group>\n @if (contentTab() !== 2) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !contentEditor()\"\n [matMenuTriggerFor]=\"variableMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ t.gettext('Insert variable') }}\n </button>\n }\n <mat-menu #variableMenu=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"siteVariableMenu\">\n {{ t.gettext('Site') }}\n </button>\n <button mat-menu-item [matMenuTriggerFor]=\"postVariableMenu\">\n {{ t.gettext('Post') }}\n </button>\n </mat-menu>\n <mat-menu #siteVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('frontendUrl')\">\n {{ t.gettext('Frontend URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('site.name')\">\n {{ t.gettext('Site name') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('currentYear')\">\n {{ t.gettext('Current year') }}\n </button>\n </mat-menu>\n <mat-menu #postVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('post.title')\">\n {{ t.gettext('Post title') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.url')\">\n {{ t.gettext('Post URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.id')\">\n {{ t.gettext('Post ID') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.thumbnailUrl')\">\n {{ t.gettext('Post Thumbnail URL') }}\n </button>\n </mat-menu>\n </section>\n <label class=\"slug-field\">\n <span>{{ t.gettext('URL slug') }}</span>\n <input\n [attr.aria-label]=\"t.gettext('URL slug')\"\n [value]=\"draft().slug\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateSlug($event)\"\n [placeholder]=\"t.gettext('my-post')\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section\n class=\"media-attachment\"\n aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (uploading()) {\n <mat-progress-bar\n mode=\"determinate\"\n [value]=\"uploadProgress()\"\n [attr.aria-label]=\"t.gettext('Media upload progress')\" />\n }\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media preview...') }}</p>\n }\n @if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n }\n @if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ t.gettext('Replace') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeMedia()\">\n {{ t.gettext('Remove') }}\n </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\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ media.uploadLabel }}\n </button>\n }\n </section>\n }\n <section\n class=\"post-thumbnail\"\n aria-labelledby=\"thumbnail-heading\">\n <h2 id=\"thumbnail-heading\">{{ t.gettext('Thumbnail') }}</h2>\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n } @else {\n <p>{{ t.gettext('No thumbnail selected.') }}</p>\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <input\n #thumbnailInput\n hidden\n type=\"file\"\n accept=\"image/*\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"thumbnailSelected($event)\" />\n <div class=\"buttons\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"thumbnailInput.click()\">\n {{ t.gettext('Upload Thumbnail') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"applyDefaultThumbnail()\">\n {{ t.gettext('Apply Default Placeholder') }}\n </button>\n </div>\n </section>\n <section\n class=\"post-taxonomy\"\n aria-labelledby=\"category-heading\">\n <h2 id=\"category-heading\">{{ t.gettext('Category and Tags') }}</h2>\n @if (taxonomyLoading()) {\n <p role=\"status\">{{ t.gettext('Loading categories and tags...') }}</p>\n }\n @if (taxonomyError()) {\n <p role=\"alert\">{{ taxonomyError() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"loadTaxonomy()\">\n {{ t.gettext('Try again') }}\n </button>\n }\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Category') }}</mat-label>\n <mat-select\n [value]=\"draft().categoryId\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"updateDraft('categoryId', $event.value)\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of categories(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <h3>{{ t.gettext('Tags') }}</h3>\n <mat-chip-set [attr.aria-label]=\"t.gettext('Selected tags')\">\n @for (tag of selectedTags(); track tag.id) {\n <mat-chip\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (removed)=\"removeTag(tag.id)\">\n {{ tag.name }}\n <button\n matChipRemove\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n [attr.aria-label]=\"\n t.gettext('Remove tag [[ name ]]', { name: tag.name })\n \">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n }\n </mat-chip-set>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Search tags') }}</mat-label>\n <input\n matInput\n [value]=\"tagSearch()\"\n (input)=\"filterTags($event)\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Add tag') }}</mat-label>\n <mat-select\n [value]=\"null\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"addTag($event.value)\">\n @for (tag of filteredTags(); track tag.id) {\n <mat-option [value]=\"tag.id\">{{ tag.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </section>\n <section\n class=\"related-posts\"\n aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">{{ t.gettext('Related posts') }}</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading related posts...') }}</p>\n } @else if (relatedPostsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ relatedPostsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadRelatedPosts()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove related post [[ title ]]', {\n title: post.title,\n })\n \"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No related posts yet.') }}</li>\n }\n </ul>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add related post') }}\n </button>\n }\n </section>\n\n @if (!mediaAttachment()) {\n <section\n class=\"application-hook\"\n aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">\n {{ t.gettext('Application Hook') }}\n </h2>\n @if (applicationHooksLoading()) {\n <p role=\"status\">{{ t.gettext('Loading application hooks...') }}</p>\n } @else if (applicationHooksError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ applicationHooksError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadApplicationHooks()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-checkbox\n [checked]=\"useAsApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"setUseAsApplicationHook($event.checked)\">\n {{ t.gettext('Use as application hook') }}\n </mat-checkbox>\n @if (useAsApplicationHook()) {\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Application Hook') }}</mat-label>\n <mat-select\n [value]=\"selectedApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (selectionChange)=\"selectedApplicationHook.set($event.value)\">\n @for (\n applicationHook of applicationHooks();\n track applicationHook.id\n ) {\n <mat-option\n [value]=\"applicationHook.hook\"\n [disabled]=\"\n applicationHookInUseByAnotherPost(applicationHook)\n \">\n {{ applicationHookLabel(applicationHook.hook) }}\n @if (applicationHookInUseByAnotherPost(applicationHook)) {\n {{\n t.gettext('(in use by post # [[ postId ]])', {\n postId: applicationHook.contentId,\n })\n }}\n }\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No application hooks configured')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n }\n </section>\n }\n <section\n class=\"post-permissions\"\n aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">\n {{ t.gettext('Allow Read only with Permissions') }}\n </h2>\n @if (permissionSource(); as source) {\n <p role=\"note\">\n {{\n t.gettext(\n 'Permissions are inherited from # [[ postId ]] - [[ title ]]. Edit the source post to change them.',\n { postId: source.id, title: source.title }\n )\n }}\n </p>\n }\n @if (permissionsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading assigned permissions...') }}</p>\n } @else if (permissionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadPermissions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove permission [[ name ]]', {\n name: permission.name,\n })\n \"\n [disabled]=\"busy() || dialogOpen() || !!permissionSource()\"\n (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No permissions assigned.') }}</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionOptionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (click)=\"loadPermissionOptions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field\n class=\"w-full\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Permission') }}</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n permissionOptionsLoading() ||\n !!permissionSource()\n \"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (\n permission of availablePermissions();\n track permission.id\n ) {\n <mat-option [value]=\"permission.id\"\n >{{ permission.name }} ({{ permission.code }})</mat-option\n >\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No permissions available')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n !selectedPermissionId() ||\n !!permissionSource()\n \"\n (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Assign permission') }}\n </button>\n </div>\n }\n }\n @if (!permissionSource()) {\n <mat-checkbox\n [checked]=\"applyPermissionsToRelatedPosts()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"applyPermissionsToRelatedPosts.set($event.checked)\">\n {{ t.gettext('Apply permissions to related posts') }}\n </mat-checkbox>\n }\n </section>\n } @else if (currentPost(); as post) {\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div\n class=\"post-body\"\n [innerHTML]=\"resolvedBody()\"></div>\n @if (mediaAttachment(); as media) {\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media...') }}</p>\n } @else if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n } @else if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n }\n }\n } @else {\n <p role=\"status\">{{ t.gettext('No post is loaded.') }}</p>\n }\n</article>\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonCmsPostRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-cms-post.component').then(m => m.TaonCmsPostComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonCmsPostRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonCmsPostRoutes;","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { map } from 'rxjs';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsPostComponent } from '../taon-cms-post/taon-cms-post.component';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts', {\"src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-post-details-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, MatButtonModule, RouterLink, TaonCmsPostComponent],\n template: `\n @if (page$ | async; as page) {\n <a\n mat-button\n routerLink=\"../\"\n >{{ t.gettext('Back to Posts') }}</a\n >\n <taon-cms-post\n [post]=\"page.post\"\n [mode]=\"page.create ? 'add' : 'view'\"\n (changed)=\"onChanged($event, page.create)\"\n (duplicated)=\"openPost($event)\"\n (cancelled)=\"onCancelled(page.create)\" />\n }\n `,\n})\nexport class TaonCmsPostDetailsPageComponent {\n readonly t = t.for(this);\n\n private readonly route = inject(ActivatedRoute);\n\n private readonly router = inject(Router);\n\n readonly page$ = this.route.data.pipe(\n map(data => ({\n create: data['createPost'] === true,\n post: (data['post'] as TaonCmsContentEntity | undefined) ?? null,\n })),\n );\n\n onChanged(post: TaonCmsContentEntity, create: boolean): void {\n if (create) {\n this.openPost(post);\n }\n }\n\n openPost(post: TaonCmsContentEntity): void {\n void this.router.navigate(['../', post.id], { relativeTo: this.route });\n }\n\n onCancelled(create: boolean): void {\n if (create) {\n void this.router.navigate(['../'], { relativeTo: this.route });\n }\n }\n}","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewChild,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsPostTableActions } from './taon-cms-post-table-actions.directive';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts', {\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'app-taon-cms-posts-backoffice',\n templateUrl: './taon-cms-posts-backoffice.component.html',\n styleUrls: ['./taon-cms-posts-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, TaonDatatableComponent],\n providers: [TaonCmsContentApiService],\n})\nexport class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {\n readonly t = t.for(this);\n\n @ViewChild(TaonDatatableComponent)\n readonly datatable!: TaonDatatableComponent;\n\n readonly posts = signal<TaonCmsContentEntity[]>([]);\n\n readonly loading = signal(false);\n\n public get crud() {\n return this.taonCmsContentApiService.crudController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'id', sortable: true },\n { header: this.t.gettext('Title'), field: 'title', sortable: true },\n { header: this.t.gettext('Status'), field: 'status', sortable: true },\n this.actionsColumn,\n ];\n\n reload(): void {\n this.datatable.reload();\n }\n\n ngAfterViewInit(): void {\n this.reload();\n }\n}","<h1>{{ t.gettext('CMS posts') }}</h1>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('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","//namespace TaonCmsPostsBackofficeModels\n\n//end of namespace TaonCmsPostsBackofficeModels\n","//#region imports\nimport { inject } from '@angular/core';\nimport { Routes } from '@angular/router';\nimport { ResolveFn } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts', {\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\nconst resolvePost: ResolveFn<TaonCmsContentEntity> = async route => {\n const id = Number(route.paramMap.get('id'));\n if (!Number.isSafeInteger(id) || id <= 0) {\n throw new Error(t.gettext('Invalid Post ID'));\n }\n const taonCmsContentApiService = inject(TaonCmsContentApiService);\n const post = await taonCmsContentApiService.getById(id);\n if (!post) {\n throw new Error(t.gettext('Post not found'));\n }\n return post;\n};\n\nexport const TaonCmsPostsBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-cms-posts-backoffice.component').then(\n m => m.TaonCmsPostsBackofficeComponent,\n ),\n },\n {\n path: 'new',\n data: { hideInNavigation: true, createPost: true },\n loadComponent: () =>\n import('../taon-cms-post-details-page/taon-cms-post-details-page.component').then(\n m => m.TaonCmsPostDetailsPageComponent,\n ),\n },\n {\n path: ':id',\n data: { hideInNavigation: true },\n providers: [TaonCmsContentApiService],\n resolve: { post: resolvePost },\n loadComponent: () =>\n import('../taon-cms-post-details-page/taon-cms-post-details-page.component').then(\n m => m.TaonCmsPostDetailsPageComponent,\n ),\n },\n];\n\n/**\n * By default exporting TaonCmsPostsBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonCmsPostsBackofficeRoutes;","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './start-cli'; \nexport * from './taon-cms-application-hooks'; \nexport * from './taon-cms.abstract.context'; \nexport * from './taon-cms-application-hook/taon-cms-application-hook.entity'; \nexport * from './taon-cms-assets-backoffice/taon-cms-asset-preview.component'; // @browser\nexport * from './taon-cms-assets-backoffice/taon-cms-assets-backoffice.component'; // @browser\nexport * from './taon-cms-assets-backoffice/taon-cms-assets-backoffice.routes'; // @browser\nexport * from './taon-cms-backoffice/taon-cms-backoffice.component'; // @browser\nexport * from './taon-cms-backoffice/taon-cms-backoffice.models'; \nexport * from './taon-cms-backoffice/taon-cms-backoffice.routes'; // @browser\nexport * from './taon-cms-category/taon-cms-category-api.service'; // @browser\nexport * from './taon-cms-category/taon-cms-category.abstract.context'; \nexport * from './taon-cms-category/taon-cms-category.constants'; \nexport * from './taon-cms-category/taon-cms-category.controller'; \nexport * from './taon-cms-category/taon-cms-category.entity'; \nexport * from './taon-cms-category/taon-cms-category.middleware'; \nexport * from './taon-cms-category/taon-cms-category.models'; \nexport * from './taon-cms-category/taon-cms-category.provider'; \nexport * from './taon-cms-category/taon-cms-category.repository'; \nexport * from './taon-cms-category/taon-cms-category.subscriber'; \nexport * from './taon-cms-category/taon-cms-category.utils'; \nexport * from './taon-cms-category/taon-cms-taxonomy.validation'; \nexport * from './taon-cms-comment/taon-cms-comment-api.service'; // @browser\nexport * from './taon-cms-comment/taon-cms-comment.abstract.context'; \nexport * from './taon-cms-comment/taon-cms-comment.constants'; \nexport * from './taon-cms-comment/taon-cms-comment.controller'; \nexport * from './taon-cms-comment/taon-cms-comment.entity'; \nexport * from './taon-cms-comment/taon-cms-comment.middleware'; \nexport * from './taon-cms-comment/taon-cms-comment.models'; \nexport * from './taon-cms-comment/taon-cms-comment.provider'; \nexport * from './taon-cms-comment/taon-cms-comment.repository'; \nexport * from './taon-cms-comment/taon-cms-comment.subscriber'; \nexport * from './taon-cms-comment/taon-cms-comment.utils'; \nexport * from './taon-cms-content/taon-cms-content-api.service'; // @browser\nexport * from './taon-cms-content/taon-cms-content-storage.controller'; \nexport * from './taon-cms-content/taon-cms-content.abstract.context'; \nexport * from './taon-cms-content/taon-cms-content.config.service'; // @browser\nexport * from './taon-cms-content/taon-cms-content.constants'; \nexport * from './taon-cms-content/taon-cms-content.controller'; \nexport * from './taon-cms-content/taon-cms-content.entity'; \nexport * from './taon-cms-content/taon-cms-content.middleware'; \nexport * from './taon-cms-content/taon-cms-content.models'; \nexport * from './taon-cms-content/taon-cms-content.provider'; \nexport * from './taon-cms-content/taon-cms-content.repository'; \nexport * from './taon-cms-content/taon-cms-content.subscriber'; \nexport * from './taon-cms-content/taon-cms-content.utils'; \nexport * from './taon-cms-content/taon-cms-content.validation'; \nexport * from './taon-cms-content/taon-cms-template-variables'; \nexport * from './taon-cms-content/taon-cms-upload-progress'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset-api.service'; // @browser\nexport * from './taon-cms-content-asset/taon-cms-content-asset.abstract.context'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.constants'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.controller'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.entity'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.middleware'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.models'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.provider'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.repository'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.subscriber'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.utils'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission-api.service'; // @browser\nexport * from './taon-cms-content-permission/taon-cms-content-permission.abstract.context'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.constants'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.controller'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.entity'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.middleware'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.models'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.provider'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.repository'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.subscriber'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.utils'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision-api.service'; // @browser\nexport * from './taon-cms-content-revision/taon-cms-content-revision.abstract.context'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.constants'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.controller'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.entity'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.middleware'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.models'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.provider'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.repository'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.subscriber'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.utils'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag-api.service'; // @browser\nexport * from './taon-cms-content-tag/taon-cms-content-tag.abstract.context'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.constants'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.controller'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.entity'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.middleware'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.models'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.provider'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.repository'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.subscriber'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.utils'; \nexport * from './taon-cms-tag/taon-cms-tag-api.service'; // @browser\nexport * from './taon-cms-tag/taon-cms-tag.abstract.context'; \nexport * from './taon-cms-tag/taon-cms-tag.constants'; \nexport * from './taon-cms-tag/taon-cms-tag.controller'; \nexport * from './taon-cms-tag/taon-cms-tag.entity'; \nexport * from './taon-cms-tag/taon-cms-tag.middleware'; \nexport * from './taon-cms-tag/taon-cms-tag.models'; \nexport * from './taon-cms-tag/taon-cms-tag.provider'; \nexport * from './taon-cms-tag/taon-cms-tag.repository'; \nexport * from './taon-cms-tag/taon-cms-tag.subscriber'; \nexport * from './taon-cms-tag/taon-cms-tag.utils'; \nexport * from './taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component'; // @browser\nexport * from './taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.models'; \nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.routes'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-editable.directive'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-post.component'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-post.models'; \nexport * from './taon-posts/taon-cms-post/taon-cms-post.routes'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-thumbnail'; \nexport * from './taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component'; // @browser\nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive'; // @browser\nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component'; // @browser\nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models'; \nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes'; // @browser\nexport * from './taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component'; // @browser\nexport * from './taon-posts/taon-related-post-chooser/taon-related-post-chooser.component'; // @browser","export * from './migrations';\n/* */\nexport * from './index._auto-generated_';\nexport * from './taon-cms-application-hooks';\n/* */ \nexport default {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["t","map","adminLazyRouteBase","i1","i2","i3","i4","i5","i11","i12"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cms-websql-prod.mjs","sources":["../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-application-hook/taon-cms-application-hook.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-application-hooks.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/migrations/1792506757808_applicaitonHooks.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.validation.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content-storage.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.entity.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.repository.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.controller.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.provider.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.middleware.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.subscriber.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms.abstract.context.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-upload-progress.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-category/taon-cms-category.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-comment/taon-cms-comment.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.config.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-content.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content/taon-cms-template-variables.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-asset/taon-cms-content-asset.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-permission/taon-cms-content-permission.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-revision/taon-cms-content-revision.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-content-tag/taon-cms-content-tag.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag-api.service.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.constants.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-tag/taon-cms-tag.utils.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-editable.directive.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-post.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post/taon-cms-post.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/lib/index.ts","../../../tmp-libs-for-dist-websql-prod/cms/projects/cms/src/cms-websql-prod.ts"],"sourcesContent":["import {\n Column,\n JoinColumn,\n OneToOne,\n PrimaryGeneratedColumn,\n TaonBaseEntity,\n TaonEntity,\n} from 'taon/websql-prod';\n\nimport type { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\nimport { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\n\n@TaonEntity({\n className: 'TaonCmsApplicationHookEntity',\n createTable: true,\n})\nexport class TaonCmsApplicationHookEntity extends TaonBaseEntity<TaonCmsApplicationHookEntity> {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ type: 'varchar', unique: true })\n hook: TaonCmsApplicationHook;\n\n @Column({ type: 'integer', nullable: true, unique: true })\n contentId: number | null;\n\n @OneToOne(\n () => TaonCmsContentEntity,\n content => content.applicationHook,\n { nullable: true, onDelete: 'SET NULL' },\n )\n @JoinColumn({ name: 'contentId', referencedColumnName: 'id' })\n content: TaonCmsContentEntity | null;\n}\n","import { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\n\nexport enum TaonCmsContentType {\n Normal = 'normal',\n Video = 'video',\n Audio = 'audio',\n Attachment = 'attachment',\n}\n\nexport enum TaonCmsContentState {\n Active = 'active',\n Inactive = 'inactive',\n}\n\nexport interface TaonCmsContentFields {\n type: TaonCmsContentType;\n title: string;\n slug: string;\n body: string | null;\n videoKey: string | null;\n audioKey: string | null;\n attachmentKey: string | null;\n thumbnailKey: string | null;\n excerpt: string | null;\n categoryId: number | null;\n authorUserId: number | null;\n status: 'draft' | 'published' | 'archived';\n publishedAt: Date | null;\n applyPermissionsToRelatedPosts: boolean;\n}\n\nexport interface TaonCmsPermissionConfiguration {\n permissions: TaonPermissionEntity[];\n source: { id: number; title: string } | null;\n}\n\nexport interface TaonCmsCreateContent\n extends\n Pick<TaonCmsContentFields, 'title' | 'slug'>,\n Partial<Omit<TaonCmsContentFields, 'title' | 'slug'>> {\n tagIds?: number[];\n relatedPostIds?: number[];\n permissionIds?: number[];\n applicationHook?: TaonCmsApplicationHook | null;\n}\n\nexport interface TaonCmsUpdateContent extends Partial<TaonCmsContentFields> {\n tagIds?: number[];\n relatedPostIds?: number[];\n permissionIds?: number[];\n applicationHook?: TaonCmsApplicationHook | null;\n expectedVersion: number;\n}\n\nexport interface TaonCmsRestoreContent {\n revisionNumber: number;\n expectedVersion: number;\n}\n\nexport interface TaonCmsContentSnapshot extends TaonCmsContentFields {\n tagIds: number[];\n relatedPostIds?: number[];\n permissionIds: number[];\n}\nimport type { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\n","//#region imports\nimport { Column, JoinTable, ManyToMany, OneToOne, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\n\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\n\nimport { TaonCmsContentDefaultsValues } from './taon-cms-content.constants';\nimport { TaonCmsContentType } from './taon-cms-content.models';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentEntity',\n createTable: true,\n})\nexport class TaonCmsContentEntity extends TaonBaseEntity<TaonCmsContentEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'varchar', default: TaonCmsContentType.Normal })\n //#endregion\n type: TaonCmsContentType = TaonCmsContentType.Normal;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n title: string;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n slug: string;\n\n //#region @websql\n @ManyToMany(() => TaonCmsContentEntity)\n @JoinTable({\n name: 'taon_cms_related_posts',\n joinColumn: { name: 'contentId', referencedColumnName: 'id' },\n inverseJoinColumn: { name: 'relatedPostId', referencedColumnName: 'id' },\n })\n //#endregion\n relatedPosts: TaonCmsContentEntity[];\n\n //#region @websql\n @OneToOne(\n () => TaonCmsApplicationHookEntity,\n applicationHook => applicationHook.content,\n )\n //#endregion\n applicationHook: TaonCmsApplicationHookEntity | null;\n\n //#region @websql\n @ManyToMany(() => TaonPermissionEntity)\n @JoinTable({\n name: 'taon_cms_content_permissions',\n joinColumn: { name: 'contentId', referencedColumnName: 'id' },\n inverseJoinColumn: { name: 'permissionId', referencedColumnName: 'id' },\n })\n //#endregion\n permissions: TaonPermissionEntity[];\n\n //#region @websql\n @Column({ type: 'boolean', default: false })\n //#endregion\n applyPermissionsToRelatedPosts: boolean = false;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n excerpt: string | null;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n body: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n videoKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n audioKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n attachmentKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n thumbnailKey: string | null = null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n categoryId: number | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n authorUserId: number | null;\n\n //#region @websql\n @Column({ type: 'varchar', default: 'draft' })\n //#endregion\n status: string;\n // draft | published | archived\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n publishedAt: Date | null;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}","export const TaonCmsApplicationHook = {\n HOME_HERO: 'home-hero',\n HOME_FEATURED_POST: 'home-featured-post',\n SHOP_PROMOTION: 'shop-promotion',\n LOGIN_INFO: 'login-info',\n FOOTER_ABOUT: 'footer-about',\n} as const;\n\nexport type TaonCmsApplicationHook =\n (typeof TaonCmsApplicationHook)[keyof typeof TaonCmsApplicationHook];\n","import { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport { TaonBaseMigration, TaonMigration, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName } from 'taon/websql-prod';\nimport { QueryRunner, Table } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\n\n//#region Migration class for context \"CmsContext\"\n@TaonMigration({\n className: 'CmsContext_1792506757808_applicaitonHooks',\n})\nexport class CmsContext_1792506757808_applicaitonHooks extends TaonBaseMigration {\n APPLICATION_HOOK_TABLE = ClassHelpers__NS__getName(TaonCmsApplicationHookEntity);\n\n CONTENT_TABLE = ClassHelpers__NS__getName(TaonCmsContentEntity);\n\n //#region up\n async up(queryRunner: QueryRunner): Promise<any> {\n await queryRunner.startTransaction();\n try {\n if (!(await queryRunner.hasTable(this.APPLICATION_HOOK_TABLE))) {\n await queryRunner.createTable(\n new Table({\n name: this.APPLICATION_HOOK_TABLE,\n columns: [\n {\n name: 'id',\n type: 'integer',\n isPrimary: true,\n isGenerated: true,\n generationStrategy: 'increment',\n },\n { name: 'hook', type: 'varchar', isUnique: true },\n {\n name: 'contentId',\n type: 'integer',\n isNullable: true,\n isUnique: true,\n },\n ],\n foreignKeys: [\n {\n columnNames: ['contentId'],\n referencedTableName: this.CONTENT_TABLE,\n referencedColumnNames: ['id'],\n onDelete: 'SET NULL',\n },\n ],\n }),\n true,\n );\n }\n\n await this.persistApplicationHooks(queryRunner);\n await queryRunner.commitTransaction();\n } catch (error) {\n console.error('Error in migration:', error);\n await queryRunner.rollbackTransaction();\n throw error;\n }\n }\n //#endregion\n\n //#region down\n async down(queryRunner: QueryRunner): Promise<any> {\n if (await queryRunner.hasTable(this.APPLICATION_HOOK_TABLE)) {\n await queryRunner.dropTable(this.APPLICATION_HOOK_TABLE, true);\n }\n }\n //#endregion\n\n protected getApplicationHooks(): Record<string, string> {\n return TaonCmsApplicationHook;\n }\n\n private async persistApplicationHooks(\n queryRunner: QueryRunner,\n ): Promise<void> {\n const repository = queryRunner.manager.getRepository(\n TaonCmsApplicationHookEntity,\n );\n for (const hook of Object.values(this.getApplicationHooks())) {\n if (!(await repository.findOneBy({ hook: hook as any }))) {\n await repository.save(\n repository.create({ hook: hook as any, contentId: null }),\n );\n }\n }\n }\n}\n//#endregion","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CmsContext_1792506757808_applicaitonHooks } from './1792506757808_applicaitonHooks';\nexport { CmsContext_1792506757808_applicaitonHooks } from './1792506757808_applicaitonHooks';\n// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const MIGRATIONS_CLASSES_FOR_CmsContext = {\n /* 20-10-2026 16:32:37 */ CmsContext_1792506757808_applicaitonHooks,\n};\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';\n","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.cms';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/cms';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.21';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","//#region tnp-helpers cli template\nimport { UtilsJson__NS__AttrJsoncProp, UtilsJson__NS__getAtrributiesFromJsonWithComments, UtilsJson__NS__getAttributiesFromComment, UtilsJson__NS__getValue, UtilsJson__NS__readJson, UtilsJson__NS__readJsonWithComments, UtilsJson__NS__setValue, UtilsJson__NS__validateLodashPath } from 'tnp-core/websql-prod';\nimport { BaseCommandLineFeature, Helpers__NS___fixCommand, Helpers__NS__ActionInstance, Helpers__NS__actionStarted, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsVerboseModeOrTnp, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logTaskDone, Helpers__NS__logTaskStarted, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC } from 'tnp-helpers/websql-prod';\n/* */ \n//#endregion\n\n//#region CLI / global scope\n/**\n * This class is for handling global arguments. *\n * Cli engine will parse: hello:world:from:global:arg to helloWorldFromGlobalArg\n * (lower case, camel case) .. so you don't need to worry about misspelling\n * arguments\n */\nclass $Global extends BaseCommandLineFeature<{}> {\n /**\n * When you execute cli without arguments:`$ cli`\n */\n public _() {\n console.log(`Hello world from cli`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli hello:world:from:global:arg`\n * (or `$ cli helloWorldFromGlobalArg`)\n */\n helloWorldFromGlobalArg() {\n console.log('hello world from global argument!');\n this._exit(0);\n }\n}\n//#endregion\n\n//#region CLI / Version Scope\n/**\n *\n */\nclass $Version extends BaseCommandLineFeature<{\n anyCLIparamsHere: string;\n}> {\n /**\n * When you execute: `$ cli version`\n */\n public _() {\n console.log(`Hello world from version argument`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli version:getFromPackageJson`\n */\n public getFromPackageJson() {\n const ver = UtilsJson__NS__getValue(\n this.project.pathFor('package.json'),\n 'version',\n {\n defaultValue: '<not defined>',\n },\n );\n console.log(`Version from packageJson ${ver}`);\n this._exit(0);\n }\n}\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(\n argsv: string[],\n filename: string,\n): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;","//#region imports\nimport { Column, CustomColumn, TaonBaseAbstractEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsCategoryDefaultsValues } from './taon-cms-category.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsCategoryEntity',\n createTable: true,\n})\nexport class TaonCmsCategoryEntity extends TaonBaseAbstractEntity<TaonCmsCategoryEntity> {\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n parentCategoryId: number | null;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n name: string;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n slug: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n description: string | null;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n sortOrder: number;\n}","import { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentFields } from './taon-cms-content.models';\nimport { TaonCmsContentType } from './taon-cms-content.models';\n\nexport function contentError(message: string, status = 400): never {\n Taon__NS__error({ message, status });\n throw new Error(message);\n}\n\nexport function requireContentId(value: number, name = 'contentId'): void {\n if (!Number.isSafeInteger(value) || value <= 0) {\n contentError(`${name} must be a positive integer.`);\n }\n}\n\nexport function requireContentVersion(\n value: number,\n name = 'expectedVersion',\n): void {\n if (!Number.isSafeInteger(value) || value < 0) {\n contentError(`${name} must be a non-negative integer.`);\n }\n}\n\nexport function validateContentInput(\n input: Partial<TaonCmsContentFields> & {\n tagIds?: number[];\n relatedPostIds?: number[];\n permissionIds?: number[];\n },\n creating = false,\n): void {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n contentError('Content must be an object.');\n }\n if (\n input.type !== undefined &&\n !Object.values(TaonCmsContentType).includes(input.type)\n ) {\n contentError('type must be normal, video, audio, or attachment.');\n }\n for (const field of ['title', 'slug'] as const) {\n if (creating || input[field] !== undefined) {\n if (typeof input[field] !== 'string' || !input[field].trim()) {\n contentError(`${field} must be a non-empty string.`);\n }\n }\n }\n for (const field of [\n 'body',\n 'excerpt',\n 'videoKey',\n 'audioKey',\n 'attachmentKey',\n 'thumbnailKey',\n ] as const) {\n if (\n input[field] !== undefined &&\n input[field] !== null &&\n typeof input[field] !== 'string'\n ) {\n contentError(`${field} must be a string or null.`);\n }\n }\n for (const field of ['categoryId', 'authorUserId'] as const) {\n if (input[field] !== undefined && input[field] !== null) {\n requireContentId(input[field], field);\n }\n }\n if (\n input.applyPermissionsToRelatedPosts !== undefined &&\n typeof input.applyPermissionsToRelatedPosts !== 'boolean'\n ) {\n contentError('applyPermissionsToRelatedPosts must be a boolean.');\n }\n if (\n input.status !== undefined &&\n !['draft', 'published', 'archived'].includes(input.status)\n ) {\n contentError('status must be draft, published, or archived.');\n }\n if (input.publishedAt !== undefined && input.publishedAt !== null) {\n if (\n !(\n input.publishedAt instanceof Date ||\n typeof input.publishedAt === 'string'\n ) ||\n Number.isNaN(new Date(input.publishedAt).getTime())\n ) {\n contentError('publishedAt must be a valid date or null.');\n }\n }\n for (const field of ['tagIds', 'relatedPostIds', 'permissionIds'] as const) {\n const ids = input[field];\n if (ids !== undefined) {\n if (!Array.isArray(ids)) {\n contentError(`${field} must be an array.`);\n }\n for (const id of ids) {\n requireContentId(\n id,\n field === 'tagIds'\n ? 'tagId'\n : field === 'relatedPostIds'\n ? 'relatedPostId'\n : 'permissionId',\n );\n }\n }\n }\n}","import { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nconst t = Translation.for('src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts', {\"src/lib/taon-cms-category/taon-cms-category.controller.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.controller.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.controller.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.controller.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-category.repository.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.repository.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.repository.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.repository.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data')).default}} as any);\n\nexport interface TaonCmsTaxonomyFields {\n name: string;\n slug: string;\n description: string | null;\n}\n\nexport interface TaonCmsCategoryFields extends TaonCmsTaxonomyFields {\n parentCategoryId: number | null;\n sortOrder: number;\n}\n\nexport function validateTaxonomy(input: TaonCmsTaxonomyFields): void {\n if (\n !input ||\n typeof input.name !== 'string' ||\n !input.name.trim() ||\n typeof input.slug !== 'string' ||\n !input.slug.trim() ||\n (input.description !== null && typeof input.description !== 'string')\n ) {\n contentError(\n t.gettext('Name, slug, and a valid description are required.'),\n );\n }\n}\n\nexport function validateCategoryHierarchy(\n id: number | null,\n parentId: number | null,\n categories: { id: number; parentCategoryId: number | null }[],\n): void {\n const visited = new Set<number>();\n if (id !== null) {\n visited.add(id);\n }\n let current = parentId;\n while (current !== null) {\n if (visited.has(current)) {\n contentError(t.gettext('A category cannot be its own ancestor.'));\n }\n visited.add(current);\n const parent = categories.find(category => category.id === current);\n if (!parent) {\n contentError(t.gettext('The parent category does not exist.'));\n }\n current = parent.parentCategoryId;\n }\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport { requireContentId } from '../taon-cms-content/taon-cms-content.validation';\nimport {\n TaonCmsCategoryFields,\n validateCategoryHierarchy,\n validateTaxonomy,\n} from './taon-cms-taxonomy.validation';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-cms-category/taon-cms-category.repository.ts', {\"src/lib/taon-cms-category/taon-cms-category.controller.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.controller.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.controller.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.controller.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-category.repository.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-category.repository.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-category.repository.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-category.repository.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data')).default}} as any);\n\n@TaonRepository({\n className: 'TaonCmsCategoryRepository',\n})\nexport class TaonCmsCategoryRepository extends TaonBaseRepository<TaonCmsCategoryEntity> {\n entityClassResolveFn: () => typeof TaonCmsCategoryEntity = () =>\n TaonCmsCategoryEntity;\n\n async saveCategory(\n id: number | null,\n input: TaonCmsCategoryFields,\n ): Promise<TaonCmsCategoryEntity> {\n //#region @websqlFunc\n validateTaxonomy(input);\n if (!Number.isSafeInteger(input.sortOrder)) {\n contentError(t.gettext('Sort order must be an integer.'));\n }\n if (id !== null) {\n requireContentId(id);\n }\n if (input.parentCategoryId !== null) {\n requireContentId(input.parentCategoryId);\n }\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const repository = manager.getRepository(TaonCmsCategoryEntity);\n if (id !== null) {\n await this.requireCategory(id, manager);\n }\n validateCategoryHierarchy(\n id,\n input.parentCategoryId,\n await repository.find(),\n );\n const slug = input.slug.trim();\n const existing = await repository.findOneBy({ slug });\n if (existing && existing.id !== id) {\n contentError(t.gettext('This category slug is already in use.'), 409);\n }\n return repository.save(\n repository.create({\n ...(id === null ? {} : { id }),\n name: input.name.trim(),\n slug,\n description: input.description,\n sortOrder: input.sortOrder,\n parentCategoryId: input.parentCategoryId,\n }),\n );\n });\n //#endregion\n }\n\n async deleteCategory(id: number): Promise<void> {\n //#region @websqlFunc\n requireContentId(id);\n await this.connection.transaction('SERIALIZABLE', async manager => {\n await this.requireCategory(id, manager);\n const children = await manager\n .getRepository(TaonCmsCategoryEntity)\n .countBy({ parentCategoryId: id });\n const posts = await manager\n .getRepository(TaonCmsContentEntity)\n .countBy({ categoryId: id });\n if (children || posts) {\n contentError(\n t.gettext(\n 'Reassign child categories and posts before deleting this category.',\n ),\n 409,\n );\n }\n await manager.getRepository(TaonCmsCategoryEntity).delete(id);\n });\n //#endregion\n }\n\n async requireCategory(id: number, manager: EntityManager): Promise<void> {\n //#region @websqlFunc\n const category = await manager\n .getRepository<TaonCmsCategoryEntity>(this.target)\n .findOneBy({ id });\n if (!category) {\n contentError(`Category ${id} does not exist.`, 404);\n }\n //#endregion\n }\n}","//#region imports\nimport { TaonSessionRepository } from '@taon-dev/session/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { TaonController, TaonBaseCrudController, Query, GET, POST, DELETE, Body, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryRepository } from './taon-cms-category.repository';\nimport type { TaonCmsCategoryFields } from './taon-cms-taxonomy.validation';\n//#endregion\n\n@TaonController<TaonCmsCategoryController>({\n className: 'TaonCmsCategoryController',\n allowedMethods: ['getAll', 'saveCategory', 'deleteCategory'],\n})\nexport class TaonCmsCategoryController extends TaonBaseCrudController<TaonCmsCategoryEntity> {\n entityClassResolveFn: () => typeof TaonCmsCategoryEntity = () =>\n TaonCmsCategoryEntity;\n\n taonCmsCategoryRepository = this.injectCustomRepo(TaonCmsCategoryRepository);\n\n private readonly sessions = this.injectCustomRepo(TaonSessionRepository);\n\n private readonly auth = this.injectCustomRepo(TaonAuthContextRepository);\n\n protected async beforeEachRequest({\n req,\n res,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsCategoryController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @POST()\n saveCategory(\n @Query('id') id: number | null,\n @Body() input: TaonCmsCategoryFields,\n ): Taon__NS__Response<TaonCmsCategoryEntity> {\n //#region @websqlFunc\n return () => this.taonCmsCategoryRepository.saveCategory(id ?? null, input);\n //#endregion\n }\n\n @DELETE()\n deleteCategory(@Query('id') id: number): Taon__NS__Response<void> {\n //#region @websqlFunc\n return () => this.taonCmsCategoryRepository.deleteCategory(id);\n //#endregion\n }\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsCategoryProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsCategoryProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsCategoryMiddleware',\n})\nexport class TaonCmsCategoryMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryProvider } from './taon-cms-category.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsCategorySubscriber>({\n className: 'TaonCmsCategorySubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsCategorySubscriber extends TaonBaseSubscriberForEntity {\n taonCmsCategoryProvider = this.injectProvider(TaonCmsCategoryProvider);\n listenTo(): typeof TaonCmsCategoryEntity {\n return TaonCmsCategoryEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryController } from './taon-cms-category.controller';\nimport { TaonCmsCategoryRepository } from './taon-cms-category.repository';\nimport { TaonCmsCategoryProvider } from './taon-cms-category.provider';\nimport { TaonCmsCategoryMiddleware } from './taon-cms-category.middleware';\nimport { TaonCmsCategorySubscriber } from './taon-cms-category.subscriber';\n//#endregion\n\nexport const TaonCmsCategoryAbstractContext = createContext(() => ({\n contextName: 'TaonCmsCategoryAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsCategoryEntity },\n controllers: { TaonCmsCategoryController },\n repositories: { TaonCmsCategoryRepository },\n providers: { TaonCmsCategoryProvider },\n middlewares: { TaonCmsCategoryMiddleware },\n subscribers: { TaonCmsCategorySubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsCommentDefaultsValues } from './taon-cms-comment.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsCommentEntity',\n createTable: true,\n})\nexport class TaonCmsCommentEntity extends TaonBaseEntity<TaonCmsCommentEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n contentId: number;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n parentCommentId: number | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n userId: number | null;\n\n //#region @websql\n @Column({ type: 'text' })\n //#endregion\n body: string;\n\n //#region @websql\n @Column({ type: 'varchar', default: 'published' })\n //#endregion\n status: string;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n updatedAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsCommentRepository',\n})\nexport class TaonCmsCommentRepository extends TaonBaseRepository<TaonCmsCommentEntity> {\n entityClassResolveFn: () => typeof TaonCmsCommentEntity = () => TaonCmsCommentEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentRepository } from './taon-cms-comment.repository';\n//#endregion\n\n@TaonController<TaonCmsCommentController>({\n className: 'TaonCmsCommentController',\n allowedMethods: []\n})\nexport class TaonCmsCommentController extends TaonBaseCrudController<TaonCmsCommentEntity> {\n entityClassResolveFn: () => typeof TaonCmsCommentEntity = () => TaonCmsCommentEntity;\n\n taonCmsCommentRepository = this.injectCustomRepo(TaonCmsCommentRepository);\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsCommentRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsCommentController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsCommentProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsCommentProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsCommentMiddleware',\n})\nexport class TaonCmsCommentMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentProvider } from './taon-cms-comment.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsCommentSubscriber>({\n className: 'TaonCmsCommentSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsCommentSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsCommentProvider = this.injectProvider(TaonCmsCommentProvider);\n listenTo(): typeof TaonCmsCommentEntity {\n return TaonCmsCommentEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentController } from './taon-cms-comment.controller';\nimport { TaonCmsCommentRepository } from './taon-cms-comment.repository';\nimport { TaonCmsCommentProvider } from './taon-cms-comment.provider';\nimport { TaonCmsCommentMiddleware } from './taon-cms-comment.middleware';\nimport { TaonCmsCommentSubscriber } from './taon-cms-comment.subscriber';\n//#endregion\n\nexport const TaonCmsCommentAbstractContext = createContext(() => ({\n contextName: 'TaonCmsCommentAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsCommentEntity },\n controllers: { TaonCmsCommentController },\n repositories: { TaonCmsCommentRepository },\n providers: { TaonCmsCommentProvider },\n middlewares: { TaonCmsCommentMiddleware },\n subscribers: { TaonCmsCommentSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport type { TaonCmsContentSnapshot } from '../taon-cms-content/taon-cms-content.models';\n\nimport { TaonCmsContentRevisionDefaultsValues } from './taon-cms-content-revision.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentRevisionEntity',\n createTable: true,\n})\nexport class TaonCmsContentRevisionEntity extends TaonBaseEntity<TaonCmsContentRevisionEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n contentId: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n revisionNumber: number;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n title: string;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n body: string | null;\n\n //#region @websql\n @Column({ type: 'simple-json', nullable: true })\n //#endregion\n snapshot: TaonCmsContentSnapshot | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n createdByUserId: number | null;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\n\nimport type { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport type { TaonCmsContentSnapshot } from '../taon-cms-content/taon-cms-content.models';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentRevisionRepository',\n})\nexport class TaonCmsContentRevisionRepository extends TaonBaseRepository<TaonCmsContentRevisionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentRevisionEntity = () =>\n TaonCmsContentRevisionEntity;\n\n async listForContent(\n contentId: number,\n manager: EntityManager,\n ): Promise<TaonCmsContentRevisionEntity[]> {\n //#region @websqlFunc\n return manager\n .getRepository<TaonCmsContentRevisionEntity>(this.target)\n .find({\n where: { contentId },\n order: { revisionNumber: 'DESC' },\n });\n //#endregion\n }\n\n async requireRevision(\n contentId: number,\n revisionNumber: number,\n manager: EntityManager,\n ): Promise<TaonCmsContentRevisionEntity> {\n //#region @websqlFunc\n const revision = await manager\n .getRepository<TaonCmsContentRevisionEntity>(this.target)\n .findOneBy({ contentId, revisionNumber });\n if (!revision) {\n contentError(\n `Revision ${revisionNumber} of content ${contentId} does not exist.`,\n 404,\n );\n }\n return revision;\n //#endregion\n }\n\n async recordContent(\n content: TaonCmsContentEntity,\n snapshot: TaonCmsContentSnapshot,\n manager: EntityManager,\n ): Promise<TaonCmsContentRevisionEntity> {\n //#region @websqlFunc\n const repository = manager.getRepository<TaonCmsContentRevisionEntity>(\n this.target,\n );\n return repository.save(\n repository.create({\n contentId: content.id,\n revisionNumber: content.version,\n version: 1,\n title: content.title,\n body: content.body,\n snapshot,\n createdByUserId: content.authorUserId,\n createdAt: new Date(),\n }),\n );\n //#endregion\n }\n}\n","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionRepository } from './taon-cms-content-revision.repository';\n//#endregion\n\n@TaonController<TaonCmsContentRevisionController>({\n className: 'TaonCmsContentRevisionController',\n allowedMethods: [],\n})\nexport class TaonCmsContentRevisionController extends TaonBaseCrudController<TaonCmsContentRevisionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentRevisionEntity = () =>\n TaonCmsContentRevisionEntity;\n\n taonCmsContentRevisionRepository = this.injectCustomRepo(\n TaonCmsContentRevisionRepository,\n );\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentRevisionProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentRevisionProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentRevisionMiddleware',\n})\nexport class TaonCmsContentRevisionMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionProvider } from './taon-cms-content-revision.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentRevisionSubscriber>({\n className: 'TaonCmsContentRevisionSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentRevisionSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentRevisionProvider = this.injectProvider(TaonCmsContentRevisionProvider);\n listenTo(): typeof TaonCmsContentRevisionEntity {\n return TaonCmsContentRevisionEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionController } from './taon-cms-content-revision.controller';\nimport { TaonCmsContentRevisionRepository } from './taon-cms-content-revision.repository';\nimport { TaonCmsContentRevisionProvider } from './taon-cms-content-revision.provider';\nimport { TaonCmsContentRevisionMiddleware } from './taon-cms-content-revision.middleware';\nimport { TaonCmsContentRevisionSubscriber } from './taon-cms-content-revision.subscriber';\n//#endregion\n\nexport const TaonCmsContentRevisionAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentRevisionAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentRevisionEntity },\n controllers: { TaonCmsContentRevisionController },\n repositories: { TaonCmsContentRevisionRepository },\n providers: { TaonCmsContentRevisionProvider },\n middlewares: { TaonCmsContentRevisionMiddleware },\n subscribers: { TaonCmsContentRevisionSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, TaonBaseAbstractEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentTagDefaultsValues } from './taon-cms-content-tag.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentTagEntity',\n createTable: true,\n})\nexport class TaonCmsContentTagEntity extends TaonBaseAbstractEntity<TaonCmsContentTagEntity> {\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n contentId: number;\n\n //#region @websql\n @Column({ type: 'integer' })\n //#endregion\n tagId: number;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentTagRepository',\n})\nexport class TaonCmsContentTagRepository extends TaonBaseRepository<TaonCmsContentTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentTagEntity = () =>\n TaonCmsContentTagEntity;\n\n async findTagIds(\n contentId: number,\n manager: EntityManager,\n ): Promise<number[]> {\n //#region @websqlFunc\n const links = await manager\n .getRepository<TaonCmsContentTagEntity>(this.target)\n .find({ where: { contentId }, order: { tagId: 'ASC' } });\n return links.map(link => link.tagId);\n //#endregion\n }\n\n async replaceTags(\n contentId: number,\n tagIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const repository = manager.getRepository<TaonCmsContentTagEntity>(\n this.target,\n );\n await repository.delete({ contentId });\n const links = [...new Set(tagIds)].map(tagId =>\n repository.create({ contentId, tagId }),\n );\n if (links.length) {\n await repository.save(links);\n }\n //#endregion\n }\n}\n","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagRepository } from './taon-cms-content-tag.repository';\n//#endregion\n\n@TaonController<TaonCmsContentTagController>({\n className: 'TaonCmsContentTagController',\n allowedMethods: [],\n})\nexport class TaonCmsContentTagController extends TaonBaseCrudController<TaonCmsContentTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentTagEntity = () =>\n TaonCmsContentTagEntity;\n\n taonCmsContentTagRepository = this.injectCustomRepo(\n TaonCmsContentTagRepository,\n );\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentTagProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentTagProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentTagMiddleware',\n})\nexport class TaonCmsContentTagMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagProvider } from './taon-cms-content-tag.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentTagSubscriber>({\n className: 'TaonCmsContentTagSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentTagSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentTagProvider = this.injectProvider(TaonCmsContentTagProvider);\n listenTo(): typeof TaonCmsContentTagEntity {\n return TaonCmsContentTagEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagController } from './taon-cms-content-tag.controller';\nimport { TaonCmsContentTagRepository } from './taon-cms-content-tag.repository';\nimport { TaonCmsContentTagProvider } from './taon-cms-content-tag.provider';\nimport { TaonCmsContentTagMiddleware } from './taon-cms-content-tag.middleware';\nimport { TaonCmsContentTagSubscriber } from './taon-cms-content-tag.subscriber';\n//#endregion\n\nexport const TaonCmsContentTagAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentTagAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentTagEntity },\n controllers: { TaonCmsContentTagController },\n repositories: { TaonCmsContentTagRepository },\n providers: { TaonCmsContentTagProvider },\n middlewares: { TaonCmsContentTagMiddleware },\n subscribers: { TaonCmsContentTagSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, TaonBaseAbstractEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsTagDefaultsValues } from './taon-cms-tag.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsTagEntity',\n createTable: true,\n})\nexport class TaonCmsTagEntity extends TaonBaseAbstractEntity<TaonCmsTagEntity> {\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n name: string;\n\n //#region @websql\n @Column({ type: 'varchar', unique: true })\n //#endregion\n slug: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n description: string | null;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\nimport { requireContentId } from '../taon-cms-content/taon-cms-content.validation';\nimport { TaonCmsContentTagEntity } from '../taon-cms-content-tag/taon-cms-content-tag.entity';\nimport {\n TaonCmsTaxonomyFields,\n validateTaxonomy,\n} from '../taon-cms-category/taon-cms-taxonomy.validation';\n\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-cms-tag/taon-cms-tag.repository.ts', {\"src/lib/taon-cms-tag/taon-cms-tag.controller.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-tag.controller.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-tag.controller.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-tag/taon-cms-tag.repository.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-tag.repository.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-tag.repository.ts.de-DE.i18n.data')).default}} as any);\n\n@TaonRepository({\n className: 'TaonCmsTagRepository',\n})\nexport class TaonCmsTagRepository extends TaonBaseRepository<TaonCmsTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsTagEntity = () => TaonCmsTagEntity;\n\n async saveTag(\n id: number | null,\n input: TaonCmsTaxonomyFields,\n ): Promise<TaonCmsTagEntity> {\n //#region @websqlFunc\n validateTaxonomy(input);\n if (id !== null) {\n requireContentId(id);\n }\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const repository = manager.getRepository(TaonCmsTagEntity);\n if (id !== null) {\n await this.requireTags([id], manager);\n }\n const name = input.name.trim();\n const slug = input.slug.trim();\n const existing = await repository.find({ where: [{ name }, { slug }] });\n if (existing.some(tag => tag.id !== id)) {\n contentError(\n t.gettext('This tag name or slug is already in use.'),\n 409,\n );\n }\n return repository.save(\n repository.create({\n ...(id === null ? {} : { id }),\n name,\n slug,\n description: input.description,\n }),\n );\n });\n //#endregion\n }\n\n async deleteTag(id: number): Promise<void> {\n //#region @websqlFunc\n requireContentId(id);\n await this.connection.transaction('SERIALIZABLE', async manager => {\n await this.requireTags([id], manager);\n if (\n await manager\n .getRepository(TaonCmsContentTagEntity)\n .countBy({ tagId: id })\n ) {\n contentError(\n t.gettext('Remove this tag from posts before deleting it.'),\n 409,\n );\n }\n await manager.getRepository(TaonCmsTagEntity).delete(id);\n });\n //#endregion\n }\n\n async requireTags(ids: number[], manager: EntityManager): Promise<void> {\n //#region @websqlFunc\n for (const id of new Set(ids)) {\n const tag = await manager\n .getRepository<TaonCmsTagEntity>(this.target)\n .findOneBy({ id });\n if (!tag) {\n contentError(`Tag ${id} does not exist.`, 404);\n }\n }\n //#endregion\n }\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonSessionRepository } from '@taon-dev/session/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { TaonController, TaonBaseCrudController, Query, GET, POST, DELETE, Body, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport type { TaonCmsTaxonomyFields } from '../taon-cms-category/taon-cms-taxonomy.validation';\nimport { contentError } from '../taon-cms-content/taon-cms-content.validation';\n\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagRepository } from './taon-cms-tag.repository';\n//#endregion\n\n@TaonController<TaonCmsTagController>({\n className: 'TaonCmsTagController',\n allowedMethods: ['getAll', 'saveTag', 'deleteTag'],\n})\nexport class TaonCmsTagController extends TaonBaseCrudController<TaonCmsTagEntity> {\n entityClassResolveFn: () => typeof TaonCmsTagEntity = () => TaonCmsTagEntity;\n\n taonCmsTagRepository = this.injectCustomRepo(TaonCmsTagRepository);\n\n private readonly sessions = this.injectCustomRepo(TaonSessionRepository);\n\n private readonly auth = this.injectCustomRepo(TaonAuthContextRepository);\n\n protected async beforeEachRequest({\n req,\n res,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsTagController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n @POST()\n saveTag(\n @Query('id') id: number | null,\n @Body() input: TaonCmsTaxonomyFields,\n ): Taon__NS__Response<TaonCmsTagEntity> {\n //#region @websqlFunc\n return () => this.taonCmsTagRepository.saveTag(id ?? null, input);\n //#endregion\n }\n\n @DELETE()\n deleteTag(@Query('id') id: number): Taon__NS__Response<void> {\n //#region @websqlFunc\n return () => this.taonCmsTagRepository.deleteTag(id);\n //#endregion\n }\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsTagRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsTagController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsTagProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsTagProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsTagMiddleware',\n})\nexport class TaonCmsTagMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagProvider } from './taon-cms-tag.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsTagSubscriber>({\n className: 'TaonCmsTagSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsTagSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsTagProvider = this.injectProvider(TaonCmsTagProvider);\n listenTo(): typeof TaonCmsTagEntity {\n return TaonCmsTagEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagController } from './taon-cms-tag.controller';\nimport { TaonCmsTagRepository } from './taon-cms-tag.repository';\nimport { TaonCmsTagProvider } from './taon-cms-tag.provider';\nimport { TaonCmsTagMiddleware } from './taon-cms-tag.middleware';\nimport { TaonCmsTagSubscriber } from './taon-cms-tag.subscriber';\n//#endregion\n\nexport const TaonCmsTagAbstractContext = createContext(() => ({\n contextName: 'TaonCmsTagAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsTagEntity },\n controllers: { TaonCmsTagController },\n repositories: { TaonCmsTagRepository },\n providers: { TaonCmsTagProvider },\n middlewares: { TaonCmsTagMiddleware },\n subscribers: { TaonCmsTagSubscriber },\n}));\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { In, Raw } from 'taon-typeorm/websql-prod';\nimport type { EntityManager } from 'taon-typeorm/websql-prod';\nimport { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\n\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport type { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\nimport { TaonCmsCategoryRepository } from '../taon-cms-category/taon-cms-category.repository';\nimport type { TaonCmsContentRevisionEntity } from '../taon-cms-content-revision/taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionRepository } from '../taon-cms-content-revision/taon-cms-content-revision.repository';\nimport { TaonCmsContentTagRepository } from '../taon-cms-content-tag/taon-cms-content-tag.repository';\nimport { TaonCmsTagRepository } from '../taon-cms-tag/taon-cms-tag.repository';\n\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentType } from './taon-cms-content.models';\nimport type {\n TaonCmsContentFields,\n TaonCmsContentSnapshot,\n TaonCmsCreateContent,\n TaonCmsRestoreContent,\n TaonCmsUpdateContent,\n TaonCmsPermissionConfiguration,\n} from './taon-cms-content.models';\nimport {\n contentError,\n requireContentId,\n requireContentVersion,\n validateContentInput,\n} from './taon-cms-content.validation';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentRepository',\n})\nexport class TaonCmsContentRepository extends TaonBaseRepository<TaonCmsContentEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentEntity = () =>\n TaonCmsContentEntity;\n\n private readonly taonCmsContentRevisionRepository = this.injectCustomRepo(\n TaonCmsContentRevisionRepository,\n );\n\n private readonly taonCmsContentTagRepository = this.injectCustomRepo(\n TaonCmsContentTagRepository,\n );\n\n private readonly taonCmsCategoryRepository = this.injectCustomRepo(\n TaonCmsCategoryRepository,\n );\n\n private readonly tags = this.injectCustomRepo(TaonCmsTagRepository);\n\n async listTagIds(id: number): Promise<number[]> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction(async manager => {\n await this.requireContent(id, manager);\n return this.taonCmsContentTagRepository.findTagIds(id, manager);\n });\n //#endregion\n }\n\n async createContent(\n input: TaonCmsCreateContent,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n validateContentInput(input, true);\n return this.connection.transaction('SERIALIZABLE', manager =>\n this.createContentWithManager(input, manager),\n );\n //#endregion\n }\n\n async duplicateContent(id: number): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const source = await this.requireContent(id, manager);\n const snapshot = await this.snapshotOf(source, manager);\n const configuration = await this.resolvePermissionConfiguration(\n source,\n manager,\n );\n const titleSuffix = source.title.match(/\\s+COPY(\\d+)$/i);\n const slugSuffix = source.slug.match(/-copy(\\d+)$/i);\n const baseTitle = source.title.replace(/(?:\\s+COPY\\d+)+$/i, '');\n const baseSlug = source.slug.replace(/(?:-copy\\d+)+$/i, '');\n let number =\n Math.max(Number(titleSuffix?.[1] ?? 0), Number(slugSuffix?.[1] ?? 0)) +\n 1;\n const repository = manager.getRepository<TaonCmsContentEntity>(\n this.target,\n );\n while (Number.isSafeInteger(number)) {\n const title = `${baseTitle} COPY${number}`;\n const slug = `${baseSlug}-copy${number}`;\n const existing = await repository.findOne({\n where: [{ title }, { slug }],\n });\n if (!existing) {\n return this.createContentWithManager(\n {\n ...snapshot,\n title,\n slug,\n relatedPostIds: [],\n applicationHook: null,\n // Inherited permissions become independent without related links.\n permissionIds: configuration.permissions.map(\n permission => permission.id,\n ),\n },\n manager,\n );\n }\n number += 1;\n }\n contentError('No available copy number could be generated.', 409);\n });\n //#endregion\n }\n\n private async createContentWithManager(\n input: TaonCmsCreateContent,\n manager: EntityManager,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n const fields = this.contentFields(input);\n const tagIds = [...new Set(input.tagIds ?? [])];\n const relatedPostIds = [...new Set(input.relatedPostIds ?? [])];\n const permissionIds = [...new Set(input.permissionIds ?? [])];\n await this.validateReferences(fields, tagIds, permissionIds, manager);\n await this.requireAvailableSlug(fields.slug, manager);\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n const now = new Date();\n const content = await repository.save(\n repository.create({\n ...fields,\n version: 1,\n createdAt: now,\n updatedAt: now,\n }),\n );\n await this.taonCmsContentTagRepository.replaceTags(\n content.id,\n tagIds,\n manager,\n );\n await this.replaceRelatedPosts(content.id, relatedPostIds, [], manager);\n await this.validatePermissionInheritance(manager);\n await this.replacePermissions(content.id, permissionIds, [], manager);\n await this.replaceApplicationHook(\n content.id,\n input.applicationHook ?? null,\n manager,\n );\n await this.taonCmsContentRevisionRepository.recordContent(\n content,\n { ...fields, tagIds, relatedPostIds, permissionIds },\n manager,\n );\n return this.requireContent(content.id, manager);\n //#endregion\n }\n\n async updateContent(\n id: number,\n input: TaonCmsUpdateContent,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n validateContentInput(input);\n requireContentVersion(input.expectedVersion);\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const current = await this.requireContent(id, manager);\n const snapshot = await this.snapshotOf(current, manager);\n const fields = this.contentFields(input, snapshot);\n const tagIds =\n input.tagIds === undefined\n ? snapshot.tagIds\n : [...new Set(input.tagIds)];\n const relatedPostIds =\n input.relatedPostIds === undefined\n ? snapshot.relatedPostIds\n : [...new Set(input.relatedPostIds)];\n const permissionIds =\n input.permissionIds === undefined\n ? snapshot.permissionIds\n : [...new Set(input.permissionIds)];\n return this.commitUpdate(\n current,\n input.expectedVersion,\n { ...fields, tagIds, relatedPostIds, permissionIds },\n manager,\n input.applicationHook,\n );\n });\n //#endregion\n }\n\n async archiveContent(\n id: number,\n expectedVersion: number,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n return this.updateContent(id, { status: 'archived', expectedVersion });\n //#endregion\n }\n\n async restoreContent(\n id: number,\n input: TaonCmsRestoreContent,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n if (!input || typeof input !== 'object') {\n contentError('Restore input must be an object.');\n }\n requireContentVersion(input.revisionNumber, 'revisionNumber');\n requireContentVersion(input.expectedVersion);\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const current = await this.requireContent(id, manager);\n const revision =\n await this.taonCmsContentRevisionRepository.requireRevision(\n id,\n input.revisionNumber,\n manager,\n );\n if (!revision.snapshot) {\n contentError(\n 'This legacy revision has no complete snapshot and cannot be restored.',\n 409,\n );\n }\n const storedSnapshot = revision.snapshot;\n const snapshotFields: (keyof TaonCmsContentSnapshot)[] = [\n 'type',\n 'title',\n 'slug',\n 'body',\n 'excerpt',\n 'categoryId',\n 'authorUserId',\n 'status',\n 'publishedAt',\n 'tagIds',\n ];\n if (snapshotFields.some(field => storedSnapshot[field] === undefined)) {\n contentError(\n 'This revision has an incomplete snapshot and cannot be restored.',\n 409,\n );\n }\n validateContentInput(revision.snapshot, true);\n const snapshot = {\n // Older complete snapshots predate primary media; preserve those keys.\n ...this.contentFields(\n revision.snapshot,\n await this.snapshotOf(current, manager),\n ),\n tagIds: revision.snapshot.tagIds,\n relatedPostIds: revision.snapshot.relatedPostIds ?? [],\n permissionIds: revision.snapshot.permissionIds ?? [],\n };\n return this.commitUpdate(\n current,\n input.expectedVersion,\n snapshot,\n manager,\n );\n });\n //#endregion\n }\n\n async listRevisions(id: number): Promise<TaonCmsContentRevisionEntity[]> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction(async manager => {\n await this.requireContent(id, manager);\n return this.taonCmsContentRevisionRepository.listForContent(id, manager);\n });\n //#endregion\n }\n\n async listCourses(): Promise<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n return this.connection\n .getRepository<TaonCmsContentEntity>(this.target)\n .createQueryBuilder('content')\n .innerJoin('content.relatedPosts', 'relatedPost')\n .where('content.status != :archived', { archived: 'archived' })\n .andWhere('content.thumbnailKey IS NOT NULL')\n .andWhere('content.thumbnailKey != :empty', { empty: '' })\n .distinct(true)\n .orderBy('content.id', 'ASC')\n .getMany();\n //#endregion\n }\n\n async listRelatedPosts(id: number): Promise<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n requireContentId(id);\n return this.connection.transaction(\n async manager => (await this.requireContent(id, manager)).relatedPosts,\n );\n //#endregion\n }\n\n async listPermissions(id: number): Promise<TaonPermissionEntity[]> {\n //#region @websqlFunc\n requireContentId(id);\n return (await this.getPermissionConfiguration(id)).permissions;\n //#endregion\n }\n\n async getPermissionConfiguration(\n id: number,\n skipTransaction = false,\n ): Promise<TaonCmsPermissionConfiguration> {\n //#region @websqlFunc\n requireContentId(id);\n if (skipTransaction) {\n const manager = this.connection.manager;\n const post = await this.requireContent(id, manager);\n return await this.resolvePermissionConfiguration(post, manager);\n }\n return this.connection.transaction(async manager => {\n const post = await this.requireContent(id, manager);\n return await this.resolvePermissionConfiguration(post, manager);\n });\n //#endregion\n }\n\n private async resolvePermissionConfiguration(\n post: TaonCmsContentEntity,\n manager: EntityManager,\n ): Promise<TaonCmsPermissionConfiguration> {\n //#region @websqlFunc\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n let source = post;\n const visited = new Set<number>();\n while (true) {\n if (visited.has(source.id)) {\n contentError('Permission inheritance contains a cycle.', 409);\n }\n visited.add(source.id);\n const parents = await repository.find({\n where: {\n applyPermissionsToRelatedPosts: true,\n relatedPosts: { id: source.id },\n },\n relations: { permissions: true },\n });\n if (parents.length > 1) {\n contentError(\n 'A post cannot inherit permissions from multiple sources.',\n 409,\n );\n }\n if (!parents.length) {\n return {\n permissions: source.permissions,\n source:\n source.id === post.id\n ? null\n : { id: source.id, title: source.title },\n };\n }\n source = parents[0];\n }\n //#endregion\n }\n\n private async validatePermissionInheritance(\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const parents = await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .find({\n where: { applyPermissionsToRelatedPosts: true },\n relations: { relatedPosts: true },\n });\n const sources = new Map<number, number>();\n for (const parent of parents) {\n for (const child of parent.relatedPosts) {\n if (sources.has(child.id)) {\n contentError(\n `Content ${child.id} would inherit permissions from multiple sources.`,\n 409,\n );\n }\n sources.set(child.id, parent.id);\n }\n }\n for (const id of sources.keys()) {\n const visited = new Set<number>();\n let current: number | undefined = id;\n while (current !== undefined) {\n if (visited.has(current)) {\n contentError('Permission inheritance cannot contain cycles.', 409);\n }\n visited.add(current);\n current = sources.get(current);\n }\n }\n //#endregion\n }\n\n private async requireOwnPermissionEdit(\n id: number,\n permissionIds: number[],\n current: TaonCmsContentEntity,\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const configuration = await this.resolvePermissionConfiguration(\n current,\n manager,\n );\n const ownIds = new Set(\n current.permissions.map(permission => permission.id),\n );\n if (\n configuration.source &&\n (ownIds.size !== new Set(permissionIds).size ||\n permissionIds.some(permissionId => !ownIds.has(permissionId)))\n ) {\n contentError(\n `Content ${id} inherits permissions; edit the source post instead.`,\n 409,\n );\n }\n //#endregion\n }\n\n async listApplicationHooks(): Promise<TaonCmsApplicationHookEntity[]> {\n //#region @websqlFunc\n return this.connection\n .getRepository(TaonCmsApplicationHookEntity)\n .find({ order: { hook: 'ASC' } });\n //#endregion\n }\n\n async getContentByHook(hook: string): Promise<string> {\n //#region @websqlFunc\n return (await this.getContentForHook(hook))?.body ?? '';\n //#endregion\n }\n\n async getContentForHook(hook: string): Promise<TaonCmsContentEntity | null> {\n //#region @websqlFunc\n if (!hook) {\n contentError('Application hook is required.');\n }\n const applicationHook = await this.connection\n .getRepository(TaonCmsApplicationHookEntity)\n .findOne({\n where: { hook: hook as TaonCmsApplicationHook },\n relations: { content: { permissions: true } },\n });\n return applicationHook?.content ?? null;\n //#endregion\n }\n\n //#region methods / media access\n async getContentBySlugForMedia(\n slug: string,\n ): Promise<TaonCmsContentEntity | null> {\n //#region @websqlFunc\n if (!slug) {\n contentError('Content slug is required.');\n }\n return this.connection\n .getRepository<TaonCmsContentEntity>(this.target)\n .findOne({\n where: { slug },\n relations: { permissions: true },\n });\n //#endregion\n }\n\n async isPublicMediaKey(key: string): Promise<boolean> {\n //#region @websqlFunc\n const contents = await this.connection\n .getRepository<TaonCmsContentEntity>(this.target)\n .find({\n where: [\n { videoKey: key },\n { audioKey: key },\n { attachmentKey: key },\n { thumbnailKey: key },\n ],\n relations: { permissions: true },\n });\n if (!contents.length) {\n return false;\n }\n for (const content of contents) {\n if (\n content.status !== 'published' ||\n (await this.getPermissionConfiguration(content.id)).permissions.length >\n 0\n ) {\n return false;\n }\n }\n return true;\n //#endregion\n }\n //#endregion\n\n async addRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n return this.changeRelatedPost(id, relatedPostId, expectedVersion, true);\n //#endregion\n }\n\n async deleteRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n return this.changeRelatedPost(id, relatedPostId, expectedVersion, false);\n //#endregion\n }\n\n private async changeRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n adding: boolean,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n requireContentId(id);\n requireContentId(relatedPostId, 'relatedPostId');\n requireContentVersion(expectedVersion);\n if (id === relatedPostId) {\n contentError('A post cannot relate to itself.');\n }\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const current = await this.requireContent(id, manager);\n await this.requireContent(relatedPostId, manager);\n const snapshot = await this.snapshotOf(current, manager);\n const ids = snapshot.relatedPostIds ?? [];\n snapshot.relatedPostIds = adding\n ? [...new Set([...ids, relatedPostId])]\n : ids.filter(postId => postId !== relatedPostId);\n return this.commitUpdate(current, expectedVersion, snapshot, manager);\n });\n //#endregion\n }\n\n private async requireContent(\n id: number,\n manager: EntityManager,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n const content = await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .findOne({\n where: { id },\n relations: {\n relatedPosts: true,\n permissions: true,\n applicationHook: true,\n },\n });\n if (!content) {\n contentError(`Content ${id} does not exist.`, 404);\n }\n return content;\n //#endregion\n }\n\n private contentFields(\n input: Partial<TaonCmsContentFields>,\n current?: TaonCmsContentFields,\n ): TaonCmsContentFields {\n const type = input.type ?? current?.type ?? TaonCmsContentType.Normal;\n const title = input.title ?? current?.title;\n const slug = input.slug ?? current?.slug;\n if (title === undefined || slug === undefined) {\n contentError('title and slug are required.');\n }\n const publishedAt =\n input.publishedAt === undefined\n ? (current?.publishedAt ?? null)\n : input.publishedAt;\n return {\n type,\n title,\n slug,\n body: input.body === undefined ? (current?.body ?? null) : input.body,\n videoKey:\n input.videoKey === undefined\n ? (current?.videoKey ?? null)\n : input.videoKey,\n audioKey:\n input.audioKey === undefined\n ? (current?.audioKey ?? null)\n : input.audioKey,\n attachmentKey:\n input.attachmentKey === undefined\n ? (current?.attachmentKey ?? null)\n : input.attachmentKey,\n thumbnailKey:\n input.thumbnailKey === undefined\n ? (current?.thumbnailKey ?? null)\n : input.thumbnailKey,\n excerpt:\n input.excerpt === undefined\n ? (current?.excerpt ?? null)\n : input.excerpt,\n categoryId:\n input.categoryId === undefined\n ? (current?.categoryId ?? null)\n : input.categoryId,\n authorUserId:\n input.authorUserId === undefined\n ? (current?.authorUserId ?? null)\n : input.authorUserId,\n status: input.status ?? current?.status ?? 'draft',\n publishedAt: publishedAt === null ? null : new Date(publishedAt),\n applyPermissionsToRelatedPosts:\n input.applyPermissionsToRelatedPosts ??\n current?.applyPermissionsToRelatedPosts ??\n false,\n };\n }\n\n private async snapshotOf(\n content: TaonCmsContentEntity,\n manager: EntityManager,\n ): Promise<TaonCmsContentSnapshot> {\n //#region @websqlFunc\n return {\n ...this.contentFields({\n ...content,\n status: this.contentStatus(content.status),\n }),\n tagIds: await this.taonCmsContentTagRepository.findTagIds(\n content.id,\n manager,\n ),\n relatedPostIds: content.relatedPosts.map(post => post.id),\n permissionIds: content.permissions.map(permission => permission.id),\n };\n //#endregion\n }\n\n private contentStatus(status: string): TaonCmsContentFields['status'] {\n if (status !== 'draft' && status !== 'published' && status !== 'archived') {\n contentError(`Unsupported stored content status: ${status}.`, 409);\n }\n return status;\n }\n\n private async validateReferences(\n fields: TaonCmsContentFields,\n tagIds: number[],\n permissionIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n if (fields.categoryId !== null) {\n await this.taonCmsCategoryRepository.requireCategory(\n fields.categoryId,\n manager,\n );\n }\n await this.tags.requireTags(tagIds, manager);\n await this.requirePermissions(permissionIds, manager);\n //#endregion\n }\n\n private async requirePermissions(\n permissionIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n if (!permissionIds.length) {\n return;\n }\n const permissions = await manager\n .getRepository<TaonPermissionEntity>(TaonPermissionEntity)\n .findBy({ id: In(permissionIds) });\n const foundIds = new Set(permissions.map(permission => permission.id));\n const missingId = permissionIds.find(id => !foundIds.has(id));\n if (missingId !== undefined) {\n contentError(`Permission ${missingId} does not exist.`, 404);\n }\n //#endregion\n }\n\n private async requireAvailableSlug(\n slug: string,\n manager: EntityManager,\n contentId?: number,\n ): Promise<void> {\n //#region @websqlFunc\n const existing = await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .findOneBy({ slug });\n if (existing && existing.id !== contentId) {\n contentError(`Slug \"${slug}\" is already in use.`, 409);\n }\n //#endregion\n }\n\n private async replaceRelatedPosts(\n id: number,\n relatedPostIds: number[],\n previousIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n if (relatedPostIds.includes(id)) {\n contentError('A post cannot relate to itself.');\n }\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n if (relatedPostIds.length) {\n const posts = await repository.findBy({ id: In(relatedPostIds) });\n const foundIds = new Set(posts.map(post => post.id));\n const missingId = relatedPostIds.find(postId => !foundIds.has(postId));\n if (missingId !== undefined) {\n contentError(`Content ${missingId} does not exist.`, 404);\n }\n }\n const added = relatedPostIds.filter(\n postId => !previousIds.includes(postId),\n );\n const removed = previousIds.filter(\n postId => !relatedPostIds.includes(postId),\n );\n if (added.length || removed.length) {\n await repository\n .createQueryBuilder()\n .relation('relatedPosts')\n .of(id)\n .addAndRemove(added, removed);\n }\n //#endregion\n }\n\n private async replacePermissions(\n id: number,\n permissionIds: number[],\n previousIds: number[],\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const added = permissionIds.filter(\n permissionId => !previousIds.includes(permissionId),\n );\n const removed = previousIds.filter(\n permissionId => !permissionIds.includes(permissionId),\n );\n if (added.length || removed.length) {\n await manager\n .getRepository<TaonCmsContentEntity>(this.target)\n .createQueryBuilder()\n .relation('permissions')\n .of(id)\n .addAndRemove(added, removed);\n }\n //#endregion\n }\n\n private async replaceApplicationHook(\n contentId: number,\n hook: TaonCmsApplicationHook | null,\n manager: EntityManager,\n ): Promise<void> {\n //#region @websqlFunc\n const repository = manager.getRepository(TaonCmsApplicationHookEntity);\n const current = await repository.findOneBy({ contentId });\n if (hook === null) {\n if (current) {\n current.contentId = null;\n await repository.save(current);\n }\n return;\n }\n const target = await repository.findOneBy({ hook });\n if (!target) {\n contentError(`Application hook \"${hook}\" is not configured.`, 404);\n }\n if (target.contentId !== null && target.contentId !== contentId) {\n contentError(`Application hook \"${hook}\" is already in use.`, 409);\n }\n if (current?.id === target.id) {\n return;\n }\n if (current) {\n current.contentId = null;\n await repository.save(current);\n }\n target.contentId = contentId;\n await repository.save(target);\n //#endregion\n }\n\n private async commitUpdate(\n current: TaonCmsContentEntity,\n expectedVersion: number,\n snapshot: TaonCmsContentSnapshot,\n manager: EntityManager,\n applicationHook?: TaonCmsApplicationHook | null,\n ): Promise<TaonCmsContentEntity> {\n //#region @websqlFunc\n if (current.version !== expectedVersion) {\n contentError('Content has changed. Reload it before editing.', 409);\n }\n await this.requireOwnPermissionEdit(\n current.id,\n snapshot.permissionIds,\n current,\n manager,\n );\n await this.validateReferences(\n snapshot,\n snapshot.tagIds,\n snapshot.permissionIds,\n manager,\n );\n await this.requireAvailableSlug(snapshot.slug, manager, current.id);\n // Preserve the first pre-API version before replacing it.\n const history = await this.taonCmsContentRevisionRepository.listForContent(\n current.id,\n manager,\n );\n if (\n !history.some(revision => revision.revisionNumber === current.version)\n ) {\n await this.taonCmsContentRevisionRepository.recordContent(\n current,\n await this.snapshotOf(current, manager),\n manager,\n );\n }\n const fields = this.contentFields(snapshot);\n const repository = manager.getRepository<TaonCmsContentEntity>(this.target);\n const result = await repository.update(\n { id: current.id, version: expectedVersion },\n { ...fields, version: expectedVersion + 1, updatedAt: new Date() },\n );\n if (result.affected !== 1) {\n contentError('Content has changed. Reload it before editing.', 409);\n }\n await this.taonCmsContentTagRepository.replaceTags(\n current.id,\n snapshot.tagIds,\n manager,\n );\n await this.replaceRelatedPosts(\n current.id,\n [...new Set(snapshot.relatedPostIds ?? [])],\n current.relatedPosts.map(post => post.id),\n manager,\n );\n await this.validatePermissionInheritance(manager);\n await this.replacePermissions(\n current.id,\n [...new Set(snapshot.permissionIds ?? [])],\n current.permissions.map(permission => permission.id),\n manager,\n );\n if (applicationHook !== undefined) {\n await this.replaceApplicationHook(current.id, applicationHook, manager);\n }\n const updated = await this.requireContent(current.id, manager);\n await this.taonCmsContentRevisionRepository.recordContent(\n updated,\n {\n ...fields,\n tagIds: snapshot.tagIds,\n relatedPostIds: updated.relatedPosts.map(post => post.id),\n permissionIds: updated.permissions.map(permission => permission.id),\n },\n manager,\n );\n return updated;\n //#endregion\n }\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}\n","//#region imports\nimport {\n TaonSessionProvider,\n TaonSessionRepository,\n} from '@taon-dev/session/websql-prod';\nimport { TaonAuthContextRepository } from '@taon-dev/session/websql-prod';\nimport { ExpressRequest, ExpressResponse, TaonBaseStorageController, TaonController, TaonStorageObject, TaonUploadedFile, apiPrefix, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams } from 'taon/websql-prod';\nimport { UtilsJwt__NS__decode, UtilsJwt__NS__JwtPayload, UtilsJwt__NS__sign, UtilsJwt__NS__verify } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentRepository } from './taon-cms-content.repository';\nimport { contentError } from './taon-cms-content.validation';\n//#endregion\n\n@TaonController<TaonCmsContentStorageController>({\n className: 'TaonCmsContentStorageController',\n // allowedMethods: ['download', 'uploadFormDataToServer'],\n})\nexport class TaonCmsContentStorageController extends TaonBaseStorageController<\n {},\n TaonCmsContentStorageController\n> {\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n private readonly taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n private readonly taonCmsContentRepository = this.injectCustomRepo(\n TaonCmsContentRepository,\n );\n\n private readonly taonSessionProvider =\n this.injectProvider(TaonSessionProvider);\n\n protected async beforeEachRequest({\n req,\n res,\n methodConfig,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentStorageController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async handleUploadFiles(\n files: TaonUploadedFile[],\n queryParams?: {},\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<TaonStorageObject[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n afterFileUploadHook(): void {}\n\n async isMediaObjectAvailable(key: string): Promise<boolean> {\n/* */\n/* */\n return (void 0);\n }\n\n buildStorageDownloadUrl(options: {\n req: ExpressRequest;\n key: string;\n private: boolean;\n token?: string;\n download?: boolean;\n }): string {\n //#region @websqlFunc\n if (!this.ctx) {\n console.trace(`[buildStorageDownloadUrl] accessing without context`);\n return;\n }\n const isLocalhost =\n this.ctx.frontendHostUri.origin.includes('://localhost:');\n\n const urlFromMehtod = this.getThisControllerMethodFullUrl('download');\n // console.log({ urlFromMehtod });\n\n const url = new URL(urlFromMehtod);\n\n url.search = '';\n url.searchParams.set('key', options.key);\n if (options.token) {\n url.searchParams.set('token', options.token);\n }\n if (options.download) {\n url.searchParams.set('download', 'true');\n }\n return (\n `${isLocalhost ? this.ctx.uri.origin : this.ctx.frontendHostUri.origin}` +\n `${url.pathname}${url.search}`\n );\n //#endregion\n }\n\n async createStorageDownloadToken(options: {\n key: string;\n expiresAt: number;\n }): Promise<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async verifyStorageDownloadToken(options: {\n key: string;\n token: string;\n }): Promise<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async isPublicStorageKey(key: string): Promise<boolean> {\n/* */\n/* */\n return (void 0);\n }\n}","//#region imports\nimport {\n TaonSessionRepository,\n type TaonPermissionEntity,\n} from '@taon-dev/session/websql-prod';\nimport {\n TaonAuthContextRepository,\n TaonSessionCoreAuthorization,\n} from '@taon-dev/session/websql-prod';\nimport { TaonController, TaonBaseCrudController, Query, GET, POST, PUT, DELETE, Body, ExpressRequest, getStatusCode, HttpStatusEnum, ExpressResponse, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Models__NS__ClassType, Models__NS__ClassTypeKey, Models__NS__ConnectionOptionsLogs, Models__NS__ContextOptions, Models__NS__DatabaseConfig, Models__NS__DatabaseConfigTypeOrm, Models__NS__DatabasesFolder, Models__NS__DBRecreateMode, Models__NS__DBRecreateModeType, Models__NS__FrameworkMode, Models__NS__Http__NS__AsyncResponse, Models__NS__Http__NS__AuthCallBack, Models__NS__Http__NS__ClientAction, Models__NS__Http__NS__ContextENDPOINT, Models__NS__Http__NS__ExpressContext, Models__NS__Http__NS__FormlyFromType, Models__NS__Http__NS__MixResponse, Models__NS__Http__NS__PromiseObservableMix, Models__NS__Http__NS__RequestResults, Models__NS__Http__NS__Response, Models__NS__Http__NS__ResponseFuncOpt, Models__NS__Http__NS__SyncResponse, Models__NS__Http__NS__SyncResponseFunc, Models__NS__Http__NS__TaonStreamResponseOptions, Models__NS__KVDatabaseConfig, Models__NS__MiddlewareType, Models__NS__StartParams, Models__NS__TaonCtrlBeforeEachRequestParams, Models__NS__TaonCtxCloneParams, Models__NS__TaonInitializeParams, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport type { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport type { TaonCmsContentRevisionEntity } from '../taon-cms-content-revision/taon-cms-content-revision.entity';\n\nimport { TaonCmsContentStorageController } from './taon-cms-content-storage.controller';\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport type {\n TaonCmsCreateContent,\n TaonCmsRestoreContent,\n TaonCmsUpdateContent,\n TaonCmsPermissionConfiguration,\n} from './taon-cms-content.models';\nimport { TaonCmsContentRepository } from './taon-cms-content.repository';\nimport { contentError } from './taon-cms-content.validation';\n//#endregion\n\n@TaonController<TaonCmsContentController>({\n //#region controller options\n className: 'TaonCmsContentController',\n allowedMethods: [\n 'getAll',\n 'getBy',\n 'createContent',\n 'duplicateContent',\n 'updateContent',\n 'deleteContent',\n 'restoreContent',\n 'listRevisions',\n 'listRelatedPosts',\n 'listCourses',\n 'listPermissions',\n 'getPermissionConfiguration',\n 'listApplicationHooks',\n 'getContentByHook',\n 'getPublicContentByHook',\n 'getVideoLinkBySlug',\n 'getPublicVideoLinkBySlug',\n 'getAudioLinkBySlug',\n 'getPublicAudioLinkBySlug',\n 'getAttachmentLinkBySlug',\n 'getPublicAttachmentLinkBySlug',\n 'getThumbnailLinkBySlug',\n 'getPublicThumbnailLinkBySlug',\n 'listTagIds',\n 'addRelatedPost',\n 'deleteRelatedPost',\n 'paginationQuery',\n ],\n //#endregion\n})\nexport class TaonCmsContentController extends TaonBaseCrudController<TaonCmsContentEntity> {\n //#region fields & getters\n entityClassResolveFn: () => typeof TaonCmsContentEntity = () =>\n TaonCmsContentEntity;\n\n private readonly taonCmsContentRepository = this.injectCustomRepo(\n TaonCmsContentRepository,\n );\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n private readonly taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n private readonly taonCmsContentStorageController = this.injectController(\n TaonCmsContentStorageController,\n );\n //#endregion\n\n //#region methods / before each request\n protected async beforeEachRequest({\n req,\n res,\n methodConfig,\n t,\n }: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get video link by slug\n @GET()\n getVideoLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'video', false, req, t);\n //#endregion\n }\n\n //#region methods / get public video link by slug\n @GET()\n getPublicVideoLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'video', true, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get audio link by slug\n @GET()\n getAudioLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'audio', false, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get public audio link by slug\n @GET()\n getPublicAudioLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'audio', true, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get attachment link by slug\n @GET()\n getAttachmentLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'attachment', false, req, t);\n //#endregion\n }\n //#endregion\n\n //#region methods / get public attachment link by slug\n @GET()\n getPublicAttachmentLinkBySlug(\n @Query('slug') slug: string,\n ): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'attachment', true, req, t);\n //#endregion\n }\n //#endregion\n //#endregion\n\n //#region methods / get media link\n @GET()\n getThumbnailLinkBySlug(@Query('slug') slug: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'thumbnail', false, req, t);\n //#endregion\n }\n\n @GET()\n getPublicThumbnailLinkBySlug(\n @Query('slug') slug: string,\n ): Taon__NS__Response<string> {\n //#region @websqlFunc\n return (req, _res, { t }) =>\n this.getMediaLinkBySlug(slug, 'thumbnail', true, req, t);\n //#endregion\n }\n\n @GET()\n listCourses(): Taon__NS__Response<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listCourses();\n //#endregion\n }\n\n @GET()\n listTagIds(@Query('id') id: number): Taon__NS__Response<number[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listTagIds(id);\n //#endregion\n }\n\n private async getMediaLinkBySlug(\n slug: string,\n type: 'video' | 'audio' | 'attachment' | 'thumbnail',\n publicOnly: boolean,\n req: ExpressRequest,\n t: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentController>['t'],\n ): Promise<string> {\n //#region @websqlFunc\n const content =\n await this.taonCmsContentRepository.getContentBySlugForMedia(slug);\n if (!content) {\n contentError(t.gettext('Content was not found.'), 404);\n }\n const field =\n type === 'video'\n ? 'videoKey'\n : type === 'audio'\n ? 'audioKey'\n : type === 'thumbnail'\n ? 'thumbnailKey'\n : 'attachmentKey';\n const key = content![field];\n if (!key) {\n contentError(\n t.gettext('Content has no [[ type ]] media.', { type }),\n 404,\n );\n }\n if (\n !(await this.taonCmsContentStorageController.isMediaObjectAvailable(key!))\n ) {\n contentError(t.gettext('The media file was not found in storage.'), 404);\n }\n await this.requireReadAccess(content!, publicOnly, req, t);\n\n const isPrivate = !publicOnly;\n const token = isPrivate\n ? await this.taonCmsContentStorageController.createStorageDownloadToken({\n key: key!,\n expiresAt: Date.now() + 5 * 60 * 1000,\n })\n : undefined;\n return this.taonCmsContentStorageController.buildStorageDownloadUrl({\n req,\n key: key!,\n private: isPrivate,\n token,\n download: type === 'attachment',\n });\n //#endregion\n }\n\n //#region methods / require read access\n private async requireReadAccess(\n content: TaonCmsContentEntity,\n publicOnly: boolean,\n req: ExpressRequest,\n t: Models__NS__TaonCtrlBeforeEachRequestParams<TaonCmsContentController>['t'],\n ): Promise<void> {\n //#region @websqlFunc\n\n const { permissions } =\n await this.taonCmsContentRepository.getPermissionConfiguration(\n content.id,\n );\n const isPublic = content.status === 'published' && permissions.length === 0;\n if (publicOnly) {\n if (!isPublic) {\n contentError(\n t.gettext('This content is not publicly accessible.'),\n 403,\n );\n }\n } else {\n await this.taonSessionRepository.throwIfNotAuthenticated({ req });\n const context = await this.taonAuthContextRepository.getContext(\n req.userId,\n req.sessionId,\n );\n const userPermissionCodes = new Set<string>(context?.permissions ?? []);\n const hasPermission = permissions.some(permission =>\n userPermissionCodes.has(permission.code),\n );\n if (!context?.isSuperUser && !isPublic && !hasPermission) {\n contentError(t.gettext('You do not have access to this content.'), 403);\n }\n }\n //#endregion\n }\n //#endregion\n //#endregion\n\n //#region methods / get by id\n @GET()\n getBySlug(@Query(`slug`) slug: string): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => {\n const model = await this.db.findOne({\n where: {\n slug,\n },\n });\n return model;\n };\n //#endregion\n }\n //#endregion\n\n //#region methods / create content\n @POST()\n createContent(\n @Body() input: TaonCmsCreateContent,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.createContent(input);\n //#endregion\n }\n //#endregion\n\n //#region methods / update content\n @PUT()\n updateContent(\n @Query('id') id: number,\n @Body() input: TaonCmsUpdateContent,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.updateContent(id, input);\n //#endregion\n }\n //#endregion\n\n @POST()\n duplicateContent(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.duplicateContent(id);\n //#endregion\n }\n\n //#region methods / delete content\n @DELETE()\n deleteContent(\n @Query('id') id: number,\n @Query('expectedVersion') expectedVersion: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.archiveContent(id, expectedVersion);\n //#endregion\n }\n //#endregion\n\n //#region methods / restore content\n @POST()\n restoreContent(\n @Query('id') id: number,\n @Body() input: TaonCmsRestoreContent,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.restoreContent(id, input);\n //#endregion\n }\n //#endregion\n\n //#region methods / list related posts\n @GET()\n listRelatedPosts(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsContentEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listRelatedPosts(id);\n //#endregion\n }\n //#endregion\n\n //#region methods / list permissions\n @GET()\n listPermissions(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonPermissionEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listPermissions(id);\n //#endregion\n }\n //#endregion\n\n //#region methods / get permission configuration\n @GET()\n getPermissionConfiguration(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsPermissionConfiguration> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.getPermissionConfiguration(id);\n //#endregion\n }\n //#endregion\n\n //#region methods / list application hooks\n @GET()\n listApplicationHooks(): Taon__NS__Response<TaonCmsApplicationHookEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listApplicationHooks();\n //#endregion\n }\n //#endregion\n\n //#region methods / get content by hook\n @GET()\n getContentByHook(@Query('hook') hook: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, _res, { t }) => {\n const content =\n await this.taonCmsContentRepository.getContentForHook(hook);\n if (!content) {\n return '';\n }\n await this.requireReadAccess(content, false, req, t);\n return content.body ?? '';\n };\n //#endregion\n }\n //#endregion\n\n //#region methods / get public content by hook\n @GET()\n getPublicContentByHook(@Query('hook') hook: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, _res, { t }) => {\n const content =\n await this.taonCmsContentRepository.getContentForHook(hook);\n if (!content) {\n return '';\n }\n await this.requireReadAccess(content, true, req, t);\n return content.body ?? '';\n };\n //#endregion\n }\n //#endregion\n\n //#region methods / add related post\n @POST()\n addRelatedPost(\n @Query('id') id: number,\n @Query('relatedPostId') relatedPostId: number,\n @Query('expectedVersion') expectedVersion: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.addRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n );\n //#endregion\n }\n //#endregion\n\n //#region methods / delete related post\n @DELETE()\n deleteRelatedPost(\n @Query('id') id: number,\n @Query('relatedPostId') relatedPostId: number,\n @Query('expectedVersion') expectedVersion: number,\n ): Taon__NS__Response<TaonCmsContentEntity> {\n //#region @websqlFunc\n return async () =>\n this.taonCmsContentRepository.deleteRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n );\n //#endregion\n }\n //#endregion\n\n //#region methods / list revisions\n @GET()\n listRevisions(\n @Query('id') id: number,\n ): Taon__NS__Response<TaonCmsContentRevisionEntity[]> {\n //#region @websqlFunc\n return async () => this.taonCmsContentRepository.listRevisions(id);\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentMiddleware',\n})\nexport class TaonCmsContentMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentProvider',\n})\nexport class TaonCmsContentProvider extends TaonBaseProvider {\n public siteName: string;\n\n async _(): Promise<void> {\n if (!this.siteName) {\n throw new Error(`Please provide siteName in TaonCmsContentProvider`);\n }\n }\n}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentProvider } from './taon-cms-content.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentSubscriber>({\n className: 'TaonCmsContentSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentProvider = this.injectProvider(TaonCmsContentProvider);\n listenTo(): typeof TaonCmsContentEntity {\n return TaonCmsContentEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryAbstractContext } from '../taon-cms-category/taon-cms-category.abstract.context';\nimport { TaonCmsContentRevisionAbstractContext } from '../taon-cms-content-revision/taon-cms-content-revision.abstract.context';\nimport { TaonCmsContentTagAbstractContext } from '../taon-cms-content-tag/taon-cms-content-tag.abstract.context';\nimport { TaonCmsTagAbstractContext } from '../taon-cms-tag/taon-cms-tag.abstract.context';\nimport { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\n\nimport { TaonCmsContentController } from './taon-cms-content.controller';\nimport { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentMiddleware } from './taon-cms-content.middleware';\nimport { TaonCmsContentProvider } from './taon-cms-content.provider';\nimport { TaonCmsContentRepository } from './taon-cms-content.repository';\nimport { TaonCmsContentSubscriber } from './taon-cms-content.subscriber';\nimport { TaonCmsContentStorageController } from './taon-cms-content-storage.controller';\n\n//#endregion\n\nexport const TaonCmsContentAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentAbstractContext',\n abstract: true,\n contexts: {\n TaonBaseContext,\n TaonCmsCategoryAbstractContext,\n TaonCmsTagAbstractContext,\n TaonCmsContentTagAbstractContext,\n TaonCmsContentRevisionAbstractContext,\n },\n entities: { TaonCmsApplicationHookEntity, TaonCmsContentEntity },\n controllers: { TaonCmsContentController, TaonCmsContentStorageController },\n repositories: { TaonCmsContentRepository },\n providers: { TaonCmsContentProvider },\n middlewares: { TaonCmsContentMiddleware },\n subscribers: { TaonCmsContentSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentAssetDefaultsValues } from './taon-cms-content-asset.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentAssetEntity',\n createTable: true,\n})\nexport class TaonCmsContentAssetEntity extends TaonBaseEntity<TaonCmsContentAssetEntity> {\n //#region @websql\n @PrimaryGeneratedColumn()\n //#endregion\n id: number;\n\n //#region @websql\n @Column({ type: 'integer', default: 0 })\n //#endregion\n version: number;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n contentId: number | null;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n type: string;\n // image | video | audio | file\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n storageProvider: string;\n // r2 | filesystem | s3\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n bucket: string | null;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n key: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n originalFilename: string | null;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n mimeType: string | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n size: number | null;\n\n //#region @websql\n @Column({ type: 'integer', nullable: true })\n //#endregion\n durationSeconds: number | null;\n\n //#region @websql\n @Column({ type: 'simple-json', nullable: true })\n //#endregion\n metadata: Record<string, any> | null;\n\n //#region @websql\n @Column({ type: 'datetime' })\n //#endregion\n createdAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentAssetRepository',\n})\nexport class TaonCmsContentAssetRepository extends TaonBaseRepository<TaonCmsContentAssetEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentAssetEntity = () => TaonCmsContentAssetEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetRepository } from './taon-cms-content-asset.repository';\n//#endregion\n\n@TaonController<TaonCmsContentAssetController>({\n className: 'TaonCmsContentAssetController',\n allowedMethods: []\n})\nexport class TaonCmsContentAssetController extends TaonBaseCrudController<TaonCmsContentAssetEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentAssetEntity = () => TaonCmsContentAssetEntity;\n\n taonCmsContentAssetRepository = this.injectCustomRepo(TaonCmsContentAssetRepository);\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsContentAssetRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsContentAssetController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentAssetProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentAssetProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentAssetMiddleware',\n})\nexport class TaonCmsContentAssetMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetProvider } from './taon-cms-content-asset.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentAssetSubscriber>({\n className: 'TaonCmsContentAssetSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentAssetSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentAssetProvider = this.injectProvider(TaonCmsContentAssetProvider);\n listenTo(): typeof TaonCmsContentAssetEntity {\n return TaonCmsContentAssetEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetController } from './taon-cms-content-asset.controller';\nimport { TaonCmsContentAssetRepository } from './taon-cms-content-asset.repository';\nimport { TaonCmsContentAssetProvider } from './taon-cms-content-asset.provider';\nimport { TaonCmsContentAssetMiddleware } from './taon-cms-content-asset.middleware';\nimport { TaonCmsContentAssetSubscriber } from './taon-cms-content-asset.subscriber';\n//#endregion\n\nexport const TaonCmsContentAssetAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentAssetAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentAssetEntity },\n controllers: { TaonCmsContentAssetController },\n repositories: { TaonCmsContentAssetRepository },\n providers: { TaonCmsContentAssetProvider },\n middlewares: { TaonCmsContentAssetMiddleware },\n subscribers: { TaonCmsContentAssetSubscriber },\n}));\n","//#region imports\nimport { Column, CustomColumn, PrimaryGeneratedColumn, TaonBaseAbstractEntity, TaonBaseEntity, TaonEntity, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentPermissionDefaultsValues } from './taon-cms-content-permission.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonCmsContentPermissionEntity',\n createTable: true,\n})\nexport class TaonCmsContentPermissionEntity extends TaonBaseEntity<TaonCmsContentPermissionEntity> {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ type: 'integer', default: 0 })\n version: number;\n\n @Column({ type: 'integer' })\n contentId: number;\n\n @Column({ type: 'varchar' })\n type: string;\n // public | authenticated | permission | role |\n // purchase | subscription\n\n @Column({ type: 'integer', nullable: true })\n permissionId: number | null;\n\n @Column({ type: 'integer', nullable: true })\n roleId: number | null;\n\n @Column({ type: 'integer', nullable: true })\n productId: number | null;\n\n @Column({ type: 'varchar', nullable: true })\n stripePriceId: string | null;\n\n @Column({ type: 'simple-json', nullable: true })\n config: Record<string, any> | null;\n\n @Column({ type: 'datetime' })\n createdAt: Date;\n}","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql-prod';\nimport { Raw } from 'taon-typeorm/websql-prod';\n\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonCmsContentPermissionRepository',\n})\nexport class TaonCmsContentPermissionRepository extends TaonBaseRepository<TaonCmsContentPermissionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentPermissionEntity = () => TaonCmsContentPermissionEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport { TaonController, TaonBaseCrudController, Query, GET, ClassHelpers__NS__asyncHandler, ClassHelpers__NS__ensureClassConfig, ClassHelpers__NS__ensureMethodConfig, ClassHelpers__NS__getClassConfig, ClassHelpers__NS__getClassFnFromObject, ClassHelpers__NS__getControllerConfigs, ClassHelpers__NS__getFullInternalName, ClassHelpers__NS__getMethodsNames, ClassHelpers__NS__getName, ClassHelpers__NS__getOrginalClass, ClassHelpers__NS__getUniqueKey, ClassHelpers__NS__hasParentClassWithName, ClassHelpers__NS__isContextClassObject, ClassHelpers__NS__mapFnError, ClassHelpers__NS__setName, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionRepository } from './taon-cms-content-permission.repository';\n//#endregion\n\n@TaonController<TaonCmsContentPermissionController>({\n className: 'TaonCmsContentPermissionController',\n allowedMethods: []\n})\nexport class TaonCmsContentPermissionController extends TaonBaseCrudController<TaonCmsContentPermissionEntity> {\n entityClassResolveFn: () => typeof TaonCmsContentPermissionEntity = () => TaonCmsContentPermissionEntity;\n\n taonCmsContentPermissionRepository = this.injectCustomRepo(TaonCmsContentPermissionRepository);\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon__NS__Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonCmsContentPermissionRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers__NS__getName(TaonCmsContentPermissionController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}","//#region imports\nimport { TaonBaseProvider, TaonProvider, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\nimport { Injectable } from '@angular/core';\n//#endregion\n\n@TaonProvider({\n className: 'TaonCmsContentPermissionProvider',\n})\n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonCmsContentPermissionProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseMiddleware, TaonMiddleware, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonCmsContentPermissionMiddleware',\n})\nexport class TaonCmsContentPermissionMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql-prod';\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionProvider } from './taon-cms-content-permission.provider';\n//#endregion\n\n@TaonSubscriber<TaonCmsContentPermissionSubscriber>({\n className: 'TaonCmsContentPermissionSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonCmsContentPermissionSubscriber extends TaonBaseSubscriberForEntity {\n taonCmsContentPermissionProvider = this.injectProvider(TaonCmsContentPermissionProvider);\n listenTo(): typeof TaonCmsContentPermissionEntity {\n return TaonCmsContentPermissionEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionController } from './taon-cms-content-permission.controller';\nimport { TaonCmsContentPermissionRepository } from './taon-cms-content-permission.repository';\nimport { TaonCmsContentPermissionProvider } from './taon-cms-content-permission.provider';\nimport { TaonCmsContentPermissionMiddleware } from './taon-cms-content-permission.middleware';\nimport { TaonCmsContentPermissionSubscriber } from './taon-cms-content-permission.subscriber';\n//#endregion\n\nexport const TaonCmsContentPermissionAbstractContext = createContext(() => ({\n contextName: 'TaonCmsContentPermissionAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonCmsContentPermissionEntity },\n controllers: { TaonCmsContentPermissionController },\n repositories: { TaonCmsContentPermissionRepository },\n providers: { TaonCmsContentPermissionProvider },\n middlewares: { TaonCmsContentPermissionMiddleware },\n subscribers: { TaonCmsContentPermissionSubscriber },\n}));\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { TaonSessionAbstractContext } from '@taon-dev/session/websql-prod';\nimport { createContext, TaonBaseContext } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryAbstractContext } from './taon-cms-category/taon-cms-category.abstract.context';\nimport { TaonCmsCommentAbstractContext } from './taon-cms-comment/taon-cms-comment.abstract.context';\nimport { TaonCmsContentAbstractContext } from './taon-cms-content/taon-cms-content.abstract.context';\nimport { TaonCmsContentAssetAbstractContext } from './taon-cms-content-asset/taon-cms-content-asset.abstract.context';\nimport { TaonCmsContentPermissionAbstractContext } from './taon-cms-content-permission/taon-cms-content-permission.abstract.context';\nimport { TaonCmsContentRevisionAbstractContext } from './taon-cms-content-revision/taon-cms-content-revision.abstract.context';\nimport { TaonCmsContentTagAbstractContext } from './taon-cms-content-tag/taon-cms-content-tag.abstract.context';\nimport { TaonCmsTagAbstractContext } from './taon-cms-tag/taon-cms-tag.abstract.context';\n\nexport const TaonCmsAbstractContext = createContext(() => ({\n contextName: 'TaonCmsAbstractContext',\n abstract: true,\n contexts: {\n TaonCmsCategoryAbstractContext,\n TaonCmsCommentAbstractContext,\n TaonCmsContentAbstractContext,\n TaonCmsContentAssetAbstractContext,\n TaonCmsContentPermissionAbstractContext,\n TaonCmsContentRevisionAbstractContext,\n TaonCmsContentTagAbstractContext,\n TaonCmsTagAbstractContext,\n TaonSessionAbstractContext,\n },\n}));\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","import { Resource__NS__Cookies, Resource__NS__create, Resource__NS__globalInterceptors, Resource__NS__listenErrors, Resource__NS__methodsInterceptors } from 'ng2-rest/websql-prod';\nimport { Observable } from 'rxjs';\n\nconst progressCallbacks = new WeakMap<FormData, (percentage: number) => void>();\n\n// Keep Taon's middleware, retries and response decoding; replace only the\n// final Fetch transport for uploads that request browser upload events.\nexport function trackCmsUpload(\n url: string,\n body: FormData,\n onProgress: (percentage: number) => void,\n): () => void {\n const key = `cms-upload-progress-POST-${new URL(url).pathname}`;\n if (!Resource__NS__methodsInterceptors.has(key)) {\n Resource__NS__methodsInterceptors.set(key, {\n intercept: ({ req, next }) => {\n if (!(req.body instanceof FormData)) {\n return next.handle(req);\n }\n const uploadBody = req.body;\n const callback = progressCallbacks.get(uploadBody);\n if (!callback) {\n return next.handle(req);\n }\n return new Observable<Response>(subscriber => {\n const xhr = new XMLHttpRequest();\n xhr.open(req.method || 'POST', req.url);\n xhr.withCredentials = req.credentials === 'include';\n new Headers(req.headers).forEach((value, name) => {\n // The browser must supply the multipart boundary.\n if (name.toLowerCase() !== 'content-type') {\n xhr.setRequestHeader(name, value);\n }\n });\n xhr.upload.onprogress = event => {\n if (event.lengthComputable && event.total > 0) {\n callback(\n Math.min(100, Math.floor((event.loaded * 100) / event.total)),\n );\n }\n };\n xhr.onload = () => {\n const headers = new Headers();\n for (const line of xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/)) {\n const separator = line.indexOf(':');\n if (separator > 0) {\n headers.append(\n line.slice(0, separator),\n line.slice(separator + 1).trim(),\n );\n }\n }\n subscriber.next(\n new Response(\n [204, 205, 304].includes(xhr.status) ? null : xhr.responseText,\n {\n status: xhr.status,\n statusText: xhr.statusText,\n headers,\n },\n ),\n );\n subscriber.complete();\n };\n xhr.onerror = () =>\n subscriber.error(new Error('Media upload network error.'));\n xhr.ontimeout = () =>\n subscriber.error(new Error('Media upload timed out.'));\n xhr.onabort = () =>\n subscriber.error(new Error('Media upload was cancelled.'));\n const abort = () => xhr.abort();\n req.signal?.addEventListener('abort', abort, { once: true });\n if (req.signal?.aborted) {\n subscriber.error(new Error('Media upload was cancelled.'));\n } else {\n callback(0);\n xhr.send(uploadBody);\n }\n return () => {\n req.signal?.removeEventListener('abort', abort);\n if (xhr.readyState !== XMLHttpRequest.DONE) {\n xhr.abort();\n }\n };\n });\n },\n });\n }\n progressCallbacks.set(body, onProgress);\n return () => progressCallbacks.delete(body);\n}","//#region imports\nimport { Injectable } from '@angular/core';\nimport type { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { TaonBaseAngularService, TaonStorageObject, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsApplicationHookEntity } from '../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport { TaonCmsApplicationHook } from '../taon-cms-application-hooks';\nimport type { TaonCmsContentRevisionEntity } from '../taon-cms-content-revision/taon-cms-content-revision.entity';\n\nimport { TaonCmsContentStorageController } from './taon-cms-content-storage.controller';\nimport { TaonCmsContentController } from './taon-cms-content.controller';\nimport type { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport type {\n TaonCmsCreateContent,\n TaonCmsRestoreContent,\n TaonCmsUpdateContent,\n TaonCmsPermissionConfiguration,\n} from './taon-cms-content.models';\nimport { trackCmsUpload } from './taon-cms-upload-progress';\n\n//#endregion\n\n@Injectable()\nexport class TaonCmsContentApiService<\n HOOKS extends TaonCmsApplicationHook = TaonCmsApplicationHook,\n> extends TaonBaseAngularService {\n //#region fields & getters\n protected readonly taonCmsContentController = this.injectController(\n TaonCmsContentController,\n );\n\n protected readonly taonCmsContentStorageController = this.injectController(\n TaonCmsContentStorageController,\n );\n\n public get crudController(): TaonCmsContentController {\n return this.taonCmsContentController;\n }\n\n public get frontendUrl(): string {\n return this.ctx.frontendHostUri.origin;\n }\n\n public getPostUrl(slug: string): string {\n return `${this.frontendUrl}/posts/${encodeURIComponent(slug)}`;\n }\n //#endregion\n\n //#region API / get by id\n public async getById(id: number): Promise<TaonCmsContentEntity> {\n return (await this.taonCmsContentController.getBy(id).request()).body.json;\n }\n //#endregion\n\n //#region API / get by slug\n public async getBySlug(slug: string): Promise<TaonCmsContentEntity> {\n return (await this.taonCmsContentController.getBySlug(slug).request()).body\n .json;\n }\n //#endregion\n\n //#region API / get video link by slug\n /**\n * Get link to private video\n */\n public getVideoLinkBySlug(slug: string): Observable<string> {\n return this.taonCmsContentController\n .getVideoLinkBySlug(slug)\n .request()\n .observable.pipe(\n map(res => res.body.text),\n catchError(err => {\n console.error(err);\n return of('');\n }),\n );\n }\n //#endregion\n\n //#region API / get public video link by slug\n public async getPublicVideoLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getPublicVideoLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get audio link by slug\n public getAudioLinkBySlug(slug: string): Observable<string> {\n return this.taonCmsContentController\n .getAudioLinkBySlug(slug)\n .request()\n .observable.pipe(\n map(res => res.body.text),\n catchError(err => {\n console.error(err);\n return of('');\n }),\n );\n }\n //#endregion\n\n //#region API / get public audio link by slug\n public async getPublicAudioLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getPublicAudioLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get attachment link by slug\n public async getAttachmentLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getAttachmentLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get public attachment link by slug\n public async getPublicAttachmentLinkBySlug(slug: string): Promise<string> {\n return (\n await this.taonCmsContentController\n .getPublicAttachmentLinkBySlug(slug)\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / get content by hook\n public getContentByHook(hook: HOOKS): Observable<string> {\n return this.taonCmsContentController.getContentByHook(hook)\n .request!().observable.pipe(map(res => res.body.text));\n }\n //#endregion\n\n //#region API / get public content by hook\n public getPublicContentByHook(hook: HOOKS): Observable<string> {\n return this.taonCmsContentController.getPublicContentByHook(hook)\n .request!().observable.pipe(\n map(res => res.body.text),\n catchError(() => of('---')),\n );\n }\n //#endregion\n\n //#region API / list application hooks\n public listApplicationHooks(): Observable<TaonCmsApplicationHookEntity[]> {\n return this.taonCmsContentController.listApplicationHooks()\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / upload media\n public async uploadMedia(\n file: File,\n onProgress?: (percentage: number) => void,\n ): Promise<TaonStorageObject> {\n const formData = new FormData();\n formData.append('file', file);\n const stopTracking = onProgress\n ? trackCmsUpload(\n this.taonCmsContentStorageController.getThisControllerMethodFullUrl(\n 'uploadFormDataToServer',\n ),\n formData,\n onProgress,\n )\n : undefined;\n try {\n const response = await this.taonCmsContentStorageController\n .uploadFormDataToServer(formData)\n .request();\n const objects = response.body.json;\n if (!Array.isArray(objects) || objects.length !== 1 || !objects[0]?.key) {\n throw new Error('The upload did not return a media key.');\n }\n onProgress?.(100);\n return objects[0];\n } finally {\n stopTracking?.();\n }\n }\n //#endregion\n\n //#region API / list assets\n public listAssets(): Observable<TaonStorageObject[]> {\n return this.taonCmsContentStorageController\n .list({})\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / get asset url\n public async getAssetUrl(key: string): Promise<string> {\n return (\n await this.taonCmsContentStorageController\n .getPrivateUrl(key, { expiresInSeconds: 5 * 60 })\n .request()\n ).body.text;\n }\n //#endregion\n\n //#region API / create content\n public listTagIds(id: number): Observable<number[]> {\n return this.taonCmsContentController\n .listTagIds(id)\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n public async getThumbnailLinkBySlug(\n slug: string,\n publicOnly = false,\n ): Promise<string> {\n const response = publicOnly\n ? await this.taonCmsContentController\n .getPublicThumbnailLinkBySlug(slug)\n .request()\n : await this.taonCmsContentController\n .getThumbnailLinkBySlug(slug)\n .request();\n return response.body.text;\n }\n\n public createContent(\n input: TaonCmsCreateContent,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.createContent(input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / duplicate content\n public duplicateContent(id: number): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.duplicateContent(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / update content\n public updateContent(\n id: number,\n input: TaonCmsUpdateContent,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.updateContent(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / delete content\n public deleteContent(\n id: number,\n expectedVersion: number,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.deleteContent(id, expectedVersion)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / restore content\n public restoreContent(\n id: number,\n input: TaonCmsRestoreContent,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.restoreContent(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / list revisions\n public listRevisions(id: number): Observable<TaonCmsContentRevisionEntity[]> {\n return this.taonCmsContentController.listRevisions(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / list related posts\n public listCourses(): Observable<TaonCmsContentEntity[]> {\n return this.taonCmsContentController.listCourses()\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n public listRelatedPosts(id: number): Observable<TaonCmsContentEntity[]> {\n return this.taonCmsContentController.listRelatedPosts(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / list permissions\n public listPermissions(id: number): Observable<TaonPermissionEntity[]> {\n return this.taonCmsContentController.listPermissions(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / get permission configuration\n public getPermissionConfiguration(\n id: number,\n ): Observable<TaonCmsPermissionConfiguration> {\n return this.taonCmsContentController.getPermissionConfiguration(id)\n .request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / add related post\n public addRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.addRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n ).request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / delete related post\n public deleteRelatedPost(\n id: number,\n relatedPostId: number,\n expectedVersion: number,\n ): Observable<TaonCmsContentEntity> {\n return this.taonCmsContentController.deleteRelatedPost(\n id,\n relatedPostId,\n expectedVersion,\n ).request!().observable.pipe(map(res => res.body.json));\n }\n //#endregion\n\n //#region API / get all entites\n /**\n * TODO not good idea if manu posts - refactor later:\n * - add pagination for post selector\n */\n public get allMyEntities$(): Observable<TaonCmsContentEntity[]> {\n return this.taonCmsContentController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n //#endregion\n}","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { type TaonStorageObject, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../taon-cms-content/taon-cms-content-api.service';\n\nconst t = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts', {\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-asset-preview',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule],\n styleUrl: './taon-cms-asset-preview.component.scss',\n templateUrl: './taon-cms-asset-preview.component.html',\n})\nexport class TaonCmsAssetPreviewComponent implements OnInit {\n readonly t = t.for(this);\n\n @Input({ required: true })\n asset!: TaonStorageObject;\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly url = signal('');\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n get previewKind(): 'video' | 'audio' | 'attachment' {\n const contentType = this.asset.contentType?.trim().toLowerCase();\n if (contentType?.startsWith('video/')) {\n return 'video';\n }\n if (contentType?.startsWith('audio/')) {\n return 'audio';\n }\n return 'attachment';\n }\n\n ngOnInit(): void {\n void this.reload();\n }\n\n async reload(): Promise<void> {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.url.set('');\n try {\n const url = new URL(await this.api.getAssetUrl(this.asset.key));\n if (this.previewKind === 'attachment') {\n url.searchParams.set('download', 'true');\n }\n if (!this.destroyRef.destroyed) {\n this.url.set(url.href);\n }\n } catch (error: unknown) {\n if (!this.destroyRef.destroyed) {\n console.error(\n '[taon-cms-asset-preview] Unable to load asset URL',\n error,\n );\n this.error.set(\n this.t.gettext('The asset could not be opened. Please retry.'),\n );\n }\n } finally {\n if (!this.destroyRef.destroyed) {\n this.loading.set(false);\n }\n }\n }\n\n playbackError(): void {\n this.error.set(\n this.t.gettext(\n 'Playback failed or the preview link expired. Please retry.',\n ),\n );\n }\n}","@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading asset preview...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Retry preview') }}\n </button>\n}\n@if (url()) {\n @switch (previewKind) {\n @case ('video') {\n <video\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n }\n @case ('audio') {\n <audio\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n }\n @default {\n <a\n [href]=\"url()\"\n [attr.download]=\"asset.fileName\"\n target=\"_blank\"\n rel=\"noopener\">\n {{ asset.fileName || asset.key }}\n </a>\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize, map } from 'rxjs';\nimport { type TaonStorageObject as TaonStorageObjectBase, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\nimport { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLeafObject, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/websql-prod';\n\nimport { TaonCmsContentApiService } from '../taon-cms-content/taon-cms-content-api.service';\n\nimport { TaonCmsAssetPreviewComponent } from './taon-cms-asset-preview.component';\n\nconst t = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts', {\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data')).default}} as any);\n\ntype TaonStorageObject = TaonStorageObjectBase & { keyVisible?: string };\n\n@Component({\n selector: 'taon-cms-assets-backoffice',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n TaonDatatableComponent,\n TaonCmsAssetPreviewComponent,\n ],\n providers: [TaonCmsContentApiService],\n templateUrl: './taon-cms-assets-backoffice.component.html',\n})\nexport class TaonCmsAssetsBackofficeComponent implements OnInit {\n readonly t = t.for(this);\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly assets = signal<TaonStorageObject[]>([]);\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'keyVisible', sortable: true, showExpand: true },\n { header: this.t.gettext('File Name'), field: 'fileName', sortable: true },\n {\n header: this.t.gettext('Content Type'),\n field: 'contentType',\n sortable: true,\n },\n ];\n\n ngOnInit(): void {\n this.reload();\n }\n\n reload(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.api\n .listAssets()\n .pipe(\n map(c => c as TaonStorageObject[]),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: assets =>\n this.assets.set(\n assets.map(c => {\n c.keyVisible = ___NS__first(c.key.split('__'));\n return c;\n }),\n ),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-assets-backoffice] Unable to load assets',\n error,\n );\n this.error.set(\n this.t.gettext('Assets could not be loaded. Please try reloading.'),\n );\n },\n });\n }\n}","<h1>{{ t.gettext('CMS assets') }}</h1>\n<button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload assets') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading assets...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n\n<ng-template\n #preview\n let-asset>\n <taon-cms-asset-preview [asset]=\"asset\" />\n</ng-template>\n\n<taon-datatable\n [data]=\"assets()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['key', 'fileName', 'contentType']\"\n [hideAddButton]=\"true\"\n [expansionTemplate]=\"preview\"\n searchMode=\"advanced\">\n</taon-datatable>\n","import { Routes } from '@angular/router';\n\nexport const TaonCmsAssetsBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-cms-assets-backoffice.component').then(\n m => m.TaonCmsAssetsBackofficeComponent,\n ),\n },\n];\n","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts', {\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'app-taon-cms-backoffice',\n templateUrl: './taon-cms-backoffice.component.html',\n styleUrls: ['./taon-cms-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, RouterOutlet],\n})\nexport class TaonCmsBackofficeComponent {\n readonly t = t.for(this);\n\n componentLoaded = false;\n\n onRouteActivate(component: any): void {\n this.componentLoaded = !!component;\n }\n\n onRouteDeactivate(component: any): void {\n this.componentLoaded = false;\n }\n}","@if (!componentLoaded) {\n <code>\n {{\n t.gettext('In CMS you can manage content and settings for your website.')\n }}\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n","//namespace TaonCmsBackofficeModels\n\n//end of namespace TaonCmsBackofficeModels\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport type { TaonAuthContextEntity } from '@taon-dev/session/websql-prod';\nimport { adminLazyRoute as adminLazyRouteBase } from '@taon-dev/ui/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\n//#endregion\n\nconst adminLazyRoute = adminLazyRouteBase<TaonAuthContextEntity>;\nconst t = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts', {\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\nexport const TaonCmsBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-cms-backoffice.component').then(\n m => m.TaonCmsBackofficeComponent,\n ),\n\n children: [\n adminLazyRoute({\n isDisabled: ({ context }) => {\n // console.log('context', { context });\n return !context?.hasAccess.toManageCms;\n },\n path: 'posts',\n menuItem: t.signal.gettext('Posts'),\n expandable: true,\n icon: 'edit',\n loader: () =>\n import('../index').then(m => m.TaonCmsPostsBackofficeRoutes),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => {\n // console.log('context', { context });\n return !context?.hasAccess.toManageCms;\n },\n path: 'courses',\n menuItem: t.signal.gettext('Courses'),\n expandable: false,\n icon: 'school',\n loader: () =>\n import('../index').then(\n m => m.TaonCmsCourseBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => !context?.hasAccess.toManageCms,\n path: 'assets',\n menuItem: t.signal.gettext('Assets'),\n expandable: false,\n icon: 'perm_media',\n loader: () =>\n import('../taon-cms-assets-backoffice/taon-cms-assets-backoffice.routes').then(\n m => m.TaonCmsAssetsBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => !context?.hasAccess.toManageCms,\n path: 'categories',\n menuItem: t.signal.gettext('Categories'),\n expandable: false,\n icon: 'folder',\n loader: () =>\n import('../taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes').then(\n m => m.TaonCmsCategoriesBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n isDisabled: ({ context }) => !context?.hasAccess.toManageCms,\n path: 'tags',\n menuItem: t.signal.gettext('Tags'),\n expandable: false,\n icon: 'label',\n loader: () =>\n import('../taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes').then(\n m => m.TaonCmsTagsBackofficeRoutes,\n ),\n }),\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonCmsBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonCmsBackofficeRoutes;","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsCategoryEntity } from './taon-cms-category.entity';\nimport { TaonCmsCategoryController } from './taon-cms-category.controller';\nimport type { TaonCmsCategoryFields } from './taon-cms-taxonomy.validation';\n\n@Injectable()\nexport class TaonCmsCategoryApiService extends TaonBaseAngularService {\n protected readonly taonCmsCategoryController = this.injectController(\n TaonCmsCategoryController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsCategoryEntity[]> {\n return this.taonCmsCategoryController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n save(\n id: number | null,\n input: TaonCmsCategoryFields,\n ): Observable<TaonCmsCategoryEntity> {\n return this.taonCmsCategoryController\n .saveCategory(id, input)\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n delete(id: number): Observable<void> {\n return this.taonCmsCategoryController\n .deleteCategory(id)\n .request()\n .observable.pipe(map(() => undefined));\n }\n}","import type { TaonCmsCategoryEntity } from './taon-cms-category.entity';\n\nexport const TaonCmsCategoryDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsCategoryEntity>;","export enum TaonCmsCategoryState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsCategoryState } from './taon-cms-category.models';\n\n//namespace TaonCmsCategoryUtils\n\n export function TaonCmsCategoryUtils__NS__isActive(state: string): state is TaonCmsCategoryState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsCategoryUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsCommentEntity } from './taon-cms-comment.entity';\nimport { TaonCmsCommentController } from './taon-cms-comment.controller';\n\n@Injectable()\nexport class TaonCmsCommentApiService extends TaonBaseAngularService {\n protected readonly taonCmsCommentController = this.injectController(TaonCmsCommentController);\n\n public get allMyEntities$(): Observable<TaonCmsCommentEntity[]> {\n return this.taonCmsCommentController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n public helloWorld(user:string): Observable<string> {\n return this.taonCmsCommentController.helloWord(user).request!().observable.pipe(\n map(res => res.responseText as string),\n );\n }\n}","import type { TaonCmsCommentEntity } from './taon-cms-comment.entity';\n\nexport const TaonCmsCommentDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsCommentEntity>;","export enum TaonCmsCommentState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsCommentState } from './taon-cms-comment.models';\n\n//namespace TaonCmsCommentUtils\n\n export function TaonCmsCommentUtils__NS__isActive(state: string): state is TaonCmsCommentState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsCommentUtils\n","import { Injectable } from '@angular/core';\nimport { TaonBaseAngularService } from 'taon/websql-prod';\n\nimport { TaonCmsContentProvider } from './taon-cms-content.provider';\n\n@Injectable()\nexport class TaonCmsContentConfigService extends TaonBaseAngularService {\n taonCmsContentProvider = this.injectProvider(TaonCmsContentProvider);\n\n get siteName(): string {\n return this.taonCmsContentProvider.siteName;\n }\n}\n","import type { TaonCmsContentEntity } from './taon-cms-content.entity';\nimport { TaonCmsContentType } from './taon-cms-content.models';\n\nexport const TaonCmsContentDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n type: TaonCmsContentType.Normal,\n videoKey: null,\n audioKey: null,\n attachmentKey: null,\n thumbnailKey: null,\n} as Partial<TaonCmsContentEntity>;\n","import { TaonCmsContentState } from './taon-cms-content.models';\n\n//namespace TaonCmsContentUtils\n\n export function TaonCmsContentUtils__NS__isActive(state: string): state is TaonCmsContentState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentUtils\n","export interface TaonCmsTemplateContext {\n frontendUrl?: string | null;\n site?: { name?: string | null } | null;\n post?: {\n title?: string | null;\n url?: string | null;\n id?: number | null;\n thumbnailUrl?: string | null;\n } | null;\n}\n\nexport type TaonCmsTemplateVariable =\n | 'frontendUrl'\n | 'site.name'\n | 'currentYear'\n | 'post.title'\n | 'post.url'\n | 'post.id'\n | 'post.thumbnailUrl';\n\n/**\n * Resolves allowlisted values as HTML text/attribute data, not markup.\n * The returned HTML must still pass through the renderer's HTML sanitizer.\n */\nexport function resolveTemplateVariables(\n content: string | null | undefined,\n context: TaonCmsTemplateContext,\n): string {\n const values = new Map<string, string | number | null | undefined>([\n ['frontendUrl', context.frontendUrl],\n ['site.name', context.site?.name],\n ['currentYear', new Date().getFullYear()],\n ['post.title', context.post?.title],\n ['post.url', context.post?.url],\n ['post.id', context.post?.id],\n ['post.thumbnailUrl', context.post?.thumbnailUrl],\n ]);\n return (content ?? '').replace(\n /\\{\\{\\s*([a-zA-Z][a-zA-Z0-9]*(?:\\.[a-zA-Z][a-zA-Z0-9]*)*)\\s*\\}\\}/g,\n (placeholder: string, name: string) => {\n const value = values.get(name);\n if (value === null || value === undefined) {\n return placeholder;\n }\n return String(value)\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n },\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\nimport { TaonCmsContentAssetController } from './taon-cms-content-asset.controller';\n\n@Injectable()\nexport class TaonCmsContentAssetApiService extends TaonBaseAngularService {\n protected readonly taonCmsContentAssetController = this.injectController(\n TaonCmsContentAssetController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsContentAssetEntity[]> {\n return this.taonCmsContentAssetController.getAll()\n .request!().observable.pipe(map(res => res.body?.json));\n }\n\n public helloWorld(user: string): Observable<string> {\n return this.taonCmsContentAssetController.helloWord(user)\n .request!().observable.pipe(map(res => res.responseText as string));\n }\n}","import type { TaonCmsContentAssetEntity } from './taon-cms-content-asset.entity';\n\nexport const TaonCmsContentAssetDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentAssetEntity>;","export enum TaonCmsContentAssetState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentAssetState } from './taon-cms-content-asset.models';\n\n//namespace TaonCmsContentAssetUtils\n\n export function TaonCmsContentAssetUtils__NS__isActive(state: string): state is TaonCmsContentAssetState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentAssetUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\nimport { TaonCmsContentPermissionController } from './taon-cms-content-permission.controller';\n\n@Injectable()\nexport class TaonCmsContentPermissionApiService extends TaonBaseAngularService {\n protected readonly taonCmsContentPermissionController = this.injectController(\n TaonCmsContentPermissionController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsContentPermissionEntity[]> {\n return this.taonCmsContentPermissionController.getAll()\n .request!().observable.pipe(map(res => res.body?.json));\n }\n\n public helloWorld(user: string): Observable<string> {\n return this.taonCmsContentPermissionController.helloWord(user)\n .request!().observable.pipe(map(res => res.responseText as string));\n }\n}","import type { TaonCmsContentPermissionEntity } from './taon-cms-content-permission.entity';\n\nexport const TaonCmsContentPermissionDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentPermissionEntity>;","export enum TaonCmsContentPermissionState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentPermissionState } from './taon-cms-content-permission.models';\n\n//namespace TaonCmsContentPermissionUtils\n\n export function TaonCmsContentPermissionUtils__NS__isActive(state: string): state is TaonCmsContentPermissionState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentPermissionUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentController } from '../taon-cms-content/taon-cms-content.controller';\nimport type { TaonCmsContentEntity } from '../taon-cms-content/taon-cms-content.entity';\nimport type { TaonCmsRestoreContent } from '../taon-cms-content/taon-cms-content.models';\n\nimport type { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\nimport { TaonCmsContentRevisionController } from './taon-cms-content-revision.controller';\n\n@Injectable()\nexport class TaonCmsContentRevisionApiService extends TaonBaseAngularService {\n protected readonly contentController = this.injectController(\n TaonCmsContentController,\n );\n\n protected readonly taonCmsContentRevisionController = this.injectController(\n TaonCmsContentRevisionController,\n );\n\n public listRevisions(id: number): Observable<TaonCmsContentRevisionEntity[]> {\n return this.contentController.listRevisions(id).request!().observable.pipe(\n map(res => res.body.json),\n );\n }\n\n public restoreContent(\n id: number,\n input: TaonCmsRestoreContent,\n ): Observable<TaonCmsContentEntity> {\n return this.contentController.restoreContent(id, input)\n .request!().observable.pipe(map(res => res.body.json));\n }\n\n public get allMyEntities$(): Observable<TaonCmsContentRevisionEntity[]> {\n return this.taonCmsContentRevisionController.getAll()\n .request!().observable.pipe(map(res => res.body?.json));\n }\n}","import type { TaonCmsContentRevisionEntity } from './taon-cms-content-revision.entity';\n\nexport const TaonCmsContentRevisionDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentRevisionEntity>;","export enum TaonCmsContentRevisionState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentRevisionState } from './taon-cms-content-revision.models';\n\n//namespace TaonCmsContentRevisionUtils\n\n export function TaonCmsContentRevisionUtils__NS__isActive(state: string): state is TaonCmsContentRevisionState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentRevisionUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\nimport { TaonCmsContentTagController } from './taon-cms-content-tag.controller';\n\n@Injectable()\nexport class TaonCmsContentTagApiService extends TaonBaseAngularService {\n protected readonly taonCmsContentTagController = this.injectController(\n TaonCmsContentTagController,\n );\n\n public get allMyEntities$(): Observable<TaonCmsContentTagEntity[]> {\n return this.taonCmsContentTagController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n}","import type { TaonCmsContentTagEntity } from './taon-cms-content-tag.entity';\n\nexport const TaonCmsContentTagDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsContentTagEntity>;","export enum TaonCmsContentTagState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsContentTagState } from './taon-cms-content-tag.models';\n\n//namespace TaonCmsContentTagUtils\n\n export function TaonCmsContentTagUtils__NS__isActive(state: string): state is TaonCmsContentTagState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsContentTagUtils\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TaonBaseAngularService, Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsTagEntity } from './taon-cms-tag.entity';\nimport { TaonCmsTagController } from './taon-cms-tag.controller';\nimport type { TaonCmsTaxonomyFields } from '../taon-cms-category/taon-cms-taxonomy.validation';\n\n@Injectable()\nexport class TaonCmsTagApiService extends TaonBaseAngularService {\n private readonly taonCmsTagController =\n this.injectController(TaonCmsTagController);\n\n get allMyEntities$(): Observable<TaonCmsTagEntity[]> {\n return this.taonCmsTagController\n .getAll()\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n save(\n id: number | null,\n input: TaonCmsTaxonomyFields,\n ): Observable<TaonCmsTagEntity> {\n return this.taonCmsTagController\n .saveTag(id, input)\n .request()\n .observable.pipe(map(res => res.body.json));\n }\n\n delete(id: number): Observable<void> {\n return this.taonCmsTagController\n .deleteTag(id)\n .request()\n .observable.pipe(map(() => undefined));\n }\n}","import type { TaonCmsTagEntity } from './taon-cms-tag.entity';\n\nexport const TaonCmsTagDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonCmsTagEntity>;","export enum TaonCmsTagState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonCmsTagState } from './taon-cms-tag.models';\n\n//namespace TaonCmsTagUtils\n\n export function TaonCmsTagUtils__NS__isActive(state: string): state is TaonCmsTagState {\n return state === 'active';\n }\n\n//end of namespace TaonCmsTagUtils\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ActivatedRoute } from '@angular/router';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport {\n TaonConfirmDialogComponent,\n TaonDatatableComponent,\n} from '@taon-dev/ui/websql-prod';\nimport { Observable, finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsCategoryApiService } from '../taon-cms-category/taon-cms-category-api.service';\nimport type { TaonCmsCategoryEntity } from '../taon-cms-category/taon-cms-category.entity';\nimport type { TaonCmsCategoryFields } from '../taon-cms-category/taon-cms-taxonomy.validation';\nimport { TaonCmsTagApiService } from '../taon-cms-tag/taon-cms-tag-api.service';\nimport type { TaonCmsTagEntity } from '../taon-cms-tag/taon-cms-tag.entity';\n\nconst t = Translation.for('src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts', {\"src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data')).default}} as any);\ntype TaxonomyRow = TaonCmsCategoryEntity | TaonCmsTagEntity;\n\n@Component({\n selector: 'taon-cms-taxonomy-backoffice',\n templateUrl: './taon-cms-taxonomy-backoffice.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n TaonDatatableComponent,\n ],\n providers: [TaonCmsCategoryApiService, TaonCmsTagApiService],\n styles: [\n `\n :host {\n display: block;\n }\n form {\n display: grid;\n gap: 1rem;\n max-width: 640px;\n margin-block: 1.5rem;\n }\n .actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n `,\n ],\n})\nexport class TaonCmsTaxonomyBackofficeComponent {\n readonly t = t.for(this);\n readonly isCategory =\n inject(ActivatedRoute).snapshot.data['taxonomy'] === 'category';\n private readonly categories = inject(TaonCmsCategoryApiService);\n private readonly tags = inject(TaonCmsTagApiService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly dialog = inject(MatDialog);\n readonly rows = signal<TaxonomyRow[]>([]);\n readonly busy = signal(false);\n readonly error = signal('');\n readonly editing = signal(false);\n editingId: number | null = null;\n draft: TaonCmsCategoryFields = this.emptyDraft();\n\n readonly columns: MtxGridColumn[] = [\n { header: this.t.gettext('Name'), field: 'name', sortable: true },\n { header: this.t.gettext('Slug'), field: 'slug', sortable: true },\n ...(this.isCategory\n ? [\n {\n header: this.t.gettext('Parent Category'),\n field: 'parentName',\n sortable: true,\n },\n {\n header: this.t.gettext('Sort Order'),\n field: 'sortOrder',\n sortable: true,\n },\n ]\n : [\n {\n header: this.t.gettext('Description'),\n field: 'description',\n sortable: true,\n },\n ]),\n {\n header: this.t.gettext('Actions'),\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'edit',\n tooltip: this.t.gettext('Edit'),\n disabled: () => this.busy(),\n click: (row: TaxonomyRow) => this.edit(row),\n },\n {\n type: 'icon',\n icon: 'delete',\n tooltip: this.t.gettext('Delete'),\n disabled: () => this.busy(),\n click: (row: TaxonomyRow) => this.delete(row),\n },\n ],\n },\n ];\n\n ngOnInit(): void {\n this.reload();\n }\n\n reload(): void {\n if (this.busy()) {\n return;\n }\n const request: Observable<TaxonomyRow[]> = this.isCategory\n ? this.categories.allMyEntities$\n : this.tags.allMyEntities$;\n this.run(request, rows => this.rows.set(rows));\n }\n\n tableRows() {\n return this.rows().map(row => ({\n ...row,\n parentName:\n 'parentCategoryId' in row\n ? (this.rows().find(parent => parent.id === row.parentCategoryId)\n ?.name ?? '')\n : '',\n }));\n }\n\n parentOptions(): TaonCmsCategoryEntity[] {\n const categories = this.rows().filter(\n (row): row is TaonCmsCategoryEntity => 'parentCategoryId' in row,\n );\n return categories.filter(category => {\n const visited = new Set<number>();\n let current: TaonCmsCategoryEntity | undefined = category;\n while (current) {\n if (current.id === this.editingId || visited.has(current.id)) {\n return false;\n }\n visited.add(current.id);\n current = categories.find(\n parent => parent.id === current?.parentCategoryId,\n );\n }\n return true;\n });\n }\n\n edit(row?: TaxonomyRow): void {\n if (this.busy()) {\n return;\n }\n this.editingId = row?.id ?? null;\n this.draft = row\n ? {\n name: row.name,\n slug: row.slug,\n description: row.description,\n parentCategoryId:\n 'parentCategoryId' in row ? row.parentCategoryId : null,\n sortOrder: 'sortOrder' in row ? row.sortOrder : 0,\n }\n : this.emptyDraft();\n this.error.set('');\n this.editing.set(true);\n }\n\n save(): void {\n if (this.busy()) {\n return;\n }\n const request: Observable<TaxonomyRow> = this.isCategory\n ? this.categories.save(this.editingId, this.draft)\n : this.tags.save(this.editingId, this.draft);\n this.run(request, saved => {\n this.editing.set(false);\n this.rows.update(rows => [\n ...rows.filter(row => row.id !== saved.id),\n saved,\n ]);\n });\n }\n\n delete(row: TaxonomyRow): void {\n if (this.busy()) {\n return;\n }\n this.dialog\n .open(TaonConfirmDialogComponent, {\n data: {\n title: this.isCategory\n ? this.t.gettext('Delete category?')\n : this.t.gettext('Delete tag?'),\n message: this.t.gettext(\n 'Only unused items can be deleted. This cannot be undone.',\n ),\n confirmText: this.t.gettext('Delete'),\n },\n })\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n if (confirmed) {\n this.run(\n this.isCategory\n ? this.categories.delete(row.id)\n : this.tags.delete(row.id),\n () => {\n if (this.editingId === row.id) {\n this.editing.set(false);\n }\n this.rows.update(rows => rows.filter(item => item.id !== row.id));\n },\n );\n }\n });\n }\n\n private run<T>(request: Observable<T>, next: (value: T) => void): void {\n if (this.busy()) {\n return;\n }\n this.busy.set(true);\n this.error.set('');\n request\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.busy.set(false)),\n )\n .subscribe({\n next: value => {\n this.busy.set(false);\n next(value);\n },\n error: (error: unknown) => {\n console.error('[taon-cms-taxonomy] Operation failed', error);\n this.error.set(\n this.t.gettext(\n 'The operation failed. Check for duplicate names or slugs, invalid parents, or items still used by posts or child categories, then reload and try again.',\n ),\n );\n },\n });\n }\n\n private emptyDraft(): TaonCmsCategoryFields {\n return {\n name: '',\n slug: '',\n description: '',\n parentCategoryId: null,\n sortOrder: 0,\n };\n }\n}","<h1>{{ isCategory ? t.gettext('Categories') : t.gettext('Tags') }}</h1>\n<div class=\"actions\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"edit()\">\n {{ isCategory ? t.gettext('Create category') : t.gettext('Create tag') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload') }}\n </button>\n</div>\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n@if (busy()) {\n <p role=\"status\">{{ t.gettext('Loading...') }}</p>\n}\n@if (editing()) {\n <form\n #form=\"ngForm\"\n (ngSubmit)=\"save()\">\n <h2>{{ editingId === null ? t.gettext('Create') : t.gettext('Edit') }}</h2>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Name') }}</mat-label>\n <input\n matInput\n name=\"name\"\n required\n [(ngModel)]=\"draft.name\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Slug') }}</mat-label>\n <input\n matInput\n name=\"slug\"\n required\n [(ngModel)]=\"draft.slug\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Description') }}</mat-label>\n <textarea\n matInput\n name=\"description\"\n [(ngModel)]=\"draft.description\"\n [disabled]=\"busy()\"></textarea>\n </mat-form-field>\n @if (isCategory) {\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Parent Category') }}</mat-label>\n <mat-select\n name=\"parentCategoryId\"\n [(ngModel)]=\"draft.parentCategoryId\"\n [disabled]=\"busy()\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of parentOptions(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Sort Order') }}</mat-label>\n <input\n matInput\n name=\"sortOrder\"\n type=\"number\"\n step=\"1\"\n required\n [(ngModel)]=\"draft.sortOrder\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n }\n <div class=\"actions\">\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"\n busy() || form.invalid || !draft.name.trim() || !draft.slug.trim()\n \">\n {{ t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"editing.set(false)\">\n {{ t.gettext('Cancel') }}\n </button>\n </div>\n </form>\n}\n<taon-datatable\n [data]=\"tableRows()\"\n [columns]=\"columns\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\">\n</taon-datatable>\n","import { Routes } from '@angular/router';\n\nexport const TaonCmsCategoriesBackofficeRoutes: Routes = [\n {\n path: '',\n data: { taxonomy: 'category' },\n loadComponent: () =>\n import('./taon-cms-taxonomy-backoffice.component').then(\n m => m.TaonCmsTaxonomyBackofficeComponent,\n ),\n },\n];\n\nexport const TaonCmsTagsBackofficeRoutes: Routes = [\n {\n path: '',\n data: { taxonomy: 'tag' },\n loadComponent: () =>\n import('./taon-cms-taxonomy-backoffice.component').then(\n m => m.TaonCmsTaxonomyBackofficeComponent,\n ),\n },\n];\n","import { DestroyRef, Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { TaonConfirmDialogComponent } from '@taon-dev/ui/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts', {\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\n@Directive()\nexport abstract class TaonCmsPostTableActions {\n private readonly actionsTranslation = t.for(this);\n\n readonly taonCmsContentApiService = inject(TaonCmsContentApiService);\n\n readonly deleting = signal<number | null>(null);\n\n readonly duplicating = signal(false);\n\n readonly error = signal('');\n\n protected readonly destroyRef = inject(DestroyRef);\n\n protected readonly postPath: string[] = [];\n\n private readonly dialog = inject(MatDialog);\n\n private readonly route = inject(ActivatedRoute);\n\n private readonly router = inject(Router);\n\n readonly actionsColumn: MtxGridColumn = {\n header: this.actionsTranslation.gettext('Actions'),\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'content_copy',\n tooltip: this.actionsTranslation.gettext('Duplicate post'),\n disabled: () => this.duplicating(),\n click: (post: TaonCmsContentEntity) => this.duplicate(post),\n },\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: this.actionsTranslation.gettext('Post details'),\n click: (post: TaonCmsContentEntity) => this.openDetails(post),\n },\n {\n type: 'icon',\n icon: 'delete',\n tooltip: this.actionsTranslation.gettext('Delete (archive) post'),\n disabled: (post: TaonCmsContentEntity) =>\n post.status === 'archived' || this.deleting() !== null,\n click: (post: TaonCmsContentEntity) => this.delete(post),\n },\n ],\n };\n\n abstract reload(): void;\n\n add(): void {\n this.openPost('new');\n }\n\n openDetails(post: TaonCmsContentEntity): void {\n this.openPost(post.id);\n }\n\n private openPost(id: number | 'new'): void {\n const postsRoute = this.route.parent;\n if (!postsRoute) {\n this.error.set(\n this.actionsTranslation.gettext('The Post details route is unavailable.'),\n );\n return;\n }\n void this.router.navigate([...this.postPath, id], { relativeTo: postsRoute });\n }\n\n duplicate(post: TaonCmsContentEntity): void {\n if (this.duplicating()) {\n return;\n }\n this.duplicating.set(true);\n this.error.set('');\n this.taonCmsContentApiService\n .duplicateContent(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.duplicating.set(false)),\n )\n .subscribe({\n next: duplicate => this.openDetails(duplicate),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-posts-backoffice] Unable to duplicate post',\n error,\n );\n this.error.set(\n this.actionsTranslation.gettext(\n 'The post could not be duplicated. Please try again.',\n ),\n );\n },\n });\n }\n\n delete(post: TaonCmsContentEntity): void {\n if (this.deleting() !== null || post.status === 'archived') {\n return;\n }\n this.deleting.set(post.id);\n const ref = this.dialog.open(TaonConfirmDialogComponent, {\n data: {\n title: this.actionsTranslation.gettext('Delete post?'),\n message: this.actionsTranslation.gettext(\n 'This archives the post. It can be restored from its revisions.',\n ),\n confirmText: this.actionsTranslation.gettext('Delete'),\n },\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n if (!confirmed) {\n this.deleting.set(null);\n return;\n }\n this.error.set('');\n this.taonCmsContentApiService\n .deleteContent(post.id, post.version)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.deleting.set(null)),\n )\n .subscribe({\n next: () => this.reload(),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-posts-backoffice] Unable to delete post',\n error,\n );\n this.error.set(\n this.actionsTranslation.gettext(\n 'The post could not be deleted. Refresh the table before retrying.',\n ),\n );\n },\n });\n });\n }\n}","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts', {\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-course-contents',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, TaonDatatableComponent],\n templateUrl: './taon-cms-course-contents.component.html',\n})\nexport class TaonCmsCourseContentsComponent implements OnInit {\n readonly t = t.for(this);\n\n @Input({ required: true })\n course!: TaonCmsContentEntity;\n\n @Input({ required: true })\n actionsColumn!: MtxGridColumn;\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly posts = signal<TaonCmsContentEntity[]>([]);\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n columns: MtxGridColumn[] = [];\n\n ngOnInit(): void {\n this.columns = [\n { header: 'ID', field: 'id', sortable: true },\n { header: this.t.gettext('Title'), field: 'title', sortable: true },\n { header: this.t.gettext('Status'), field: 'status', sortable: true },\n this.actionsColumn,\n ];\n this.reload();\n }\n\n reload(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.api.listRelatedPosts(this.course.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: posts =>\n this.posts.set(posts.filter(post => post.status !== 'archived')),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-course-contents] Unable to load related posts',\n error,\n );\n this.error.set(\n this.t.gettext('Course contents could not be loaded. Please retry.'),\n );\n },\n });\n }\n}","<section [attr.aria-label]=\"t.gettext('Course contents')\">\n <h2>{{ t.gettext('Course contents') }}: {{ course.title }}</h2>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading course contents...') }}</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"reload()\">\n {{ t.gettext('Retry') }}\n </button>\n }\n <taon-datatable\n [pageSize]=\"posts().length || 1\"\n [data]=\"posts()\"\n [columns]=\"columns\"\n [showPaginator]=\"false\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\">\n </taon-datatable>\n</section>\n","import { TaonCmsContentType } from '../../taon-cms-content/taon-cms-content.models';\n\nexport function defaultThumbnailKey(type: TaonCmsContentType): string {\n return `cms-placeholder:${type}`;\n}\n\nexport function defaultThumbnailUrl(key: string): string | null {\n const type = Object.values(TaonCmsContentType).find(\n value => key === defaultThumbnailKey(value),\n );\n if (!type) {\n return null;\n }\n const shapes: Record<TaonCmsContentType, string> = {\n normal:\n '<path d=\"M260 126h120v112H260z M280 152h80m-80 20h80m-80 20h52\" />',\n video:\n '<rect x=\"248\" y=\"132\" width=\"144\" height=\"100\" rx=\"16\"/><path d=\"m308 158 40 24-40 24z\"/>',\n audio: '<path d=\"M280 164v40m20-60v80m20-98v116m20-98v80m20-60v40\"/>',\n attachment:\n '<path d=\"M276 124h60l32 32v84h-92z M336 124v36h32m-70 30h48m-48 22h36\"/>',\n };\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\" viewBox=\"0 0 640 360\"><defs><linearGradient id=\"bg\" x2=\"1\" y2=\"1\"><stop stop-color=\"#eaf0ff\"/><stop offset=\"1\" stop-color=\"#e4f5f0\"/></linearGradient></defs><rect width=\"640\" height=\"360\" rx=\"24\" fill=\"url(#bg)\"/><circle cx=\"320\" cy=\"180\" r=\"112\" fill=\"#fff\" opacity=\".65\"/><g fill=\"none\" stroke=\"#52669a\" stroke-width=\"7\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${shapes[type]}</g></svg>`;\n return `data:image/svg+xml,${encodeURIComponent(svg)}`;\n}\n\nexport function visiblePixelRatio(pixels: Uint8ClampedArray): number {\n let visible = 0;\n for (let index = 0; index < pixels.length; index += 4) {\n const luminance =\n 0.2126 * pixels[index] +\n 0.7152 * pixels[index + 1] +\n 0.0722 * pixels[index + 2];\n if (luminance > 18) {\n visible += 1;\n }\n }\n return pixels.length ? visible / (pixels.length / 4) : 0;\n}\n\nfunction videoEvent(\n video: HTMLVideoElement,\n event: string,\n action: () => void,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n clearTimeout(timeout);\n video.removeEventListener(event, done);\n video.removeEventListener('error', failed);\n };\n const done = () => {\n cleanup();\n resolve();\n };\n const failed = () => {\n cleanup();\n reject(new Error(video.error?.message || 'Video decoding failed.'));\n };\n const timeout = setTimeout(() => {\n cleanup();\n reject(new Error('Video decoding timed out.'));\n }, 15000);\n video.addEventListener(event, done, { once: true });\n video.addEventListener('error', failed, { once: true });\n try {\n action();\n } catch (error: unknown) {\n cleanup();\n reject(error);\n }\n });\n}\n\nexport async function generateVideoThumbnail(file: Blob): Promise<Blob> {\n const video = document.createElement('video');\n const url = URL.createObjectURL(file);\n try {\n video.muted = true;\n video.playsInline = true;\n video.preload = 'auto';\n await videoEvent(video, 'loadeddata', () => {\n video.src = url;\n video.load();\n });\n if (!video.videoWidth || !video.videoHeight) {\n throw new Error('The video has no decodable dimensions.');\n }\n const analysis = document.createElement('canvas');\n analysis.width = 64;\n analysis.height = Math.max(\n 1,\n Math.round((64 * video.videoHeight) / video.videoWidth),\n );\n const context = analysis.getContext('2d', { willReadFrequently: true });\n if (!context) {\n throw new Error('Canvas is unavailable.');\n }\n const seek = async (time: number) => {\n if (Math.abs(video.currentTime - time) > 0.001) {\n await videoEvent(video, 'seeked', () => {\n video.currentTime = time;\n });\n }\n };\n const end = Number.isFinite(video.duration)\n ? Math.min(5, Math.max(0, video.duration - 0.01))\n : 5;\n let bestTime = 0;\n let bestRatio = -1;\n let found = false;\n for (let time = 0; time <= end; time += 0.25) {\n await seek(time);\n context.drawImage(video, 0, 0, analysis.width, analysis.height);\n const ratio = visiblePixelRatio(\n context.getImageData(0, 0, analysis.width, analysis.height).data,\n );\n if (ratio > bestRatio) {\n bestRatio = ratio;\n bestTime = time;\n }\n // Small highlights or a subject in a dark scene are enough.\n if (ratio >= 0.02) {\n found = true;\n break;\n }\n }\n if (!found) {\n await seek(bestTime);\n }\n const canvas = document.createElement('canvas');\n const scale = Math.min(1, 1280 / video.videoWidth, 720 / video.videoHeight);\n canvas.width = Math.max(1, Math.round(video.videoWidth * scale));\n canvas.height = Math.max(1, Math.round(video.videoHeight * scale));\n const output = canvas.getContext('2d');\n if (!output) {\n throw new Error('Canvas is unavailable.');\n }\n output.drawImage(video, 0, 0, canvas.width, canvas.height);\n return await new Promise<Blob>((resolve, reject) => {\n canvas.toBlob(\n blob =>\n blob\n ? resolve(blob)\n : reject(new Error('Thumbnail encoding failed.')),\n 'image/webp',\n 0.85,\n );\n });\n } finally {\n try {\n video.pause();\n video.removeAttribute('src');\n video.load();\n } finally {\n URL.revokeObjectURL(url);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { defaultThumbnailUrl } from '../taon-cms-post/taon-cms-thumbnail';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts', {\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-course-cover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule],\n templateUrl: './taon-cms-course-cover.component.html',\n styles: [`\n :host {\n display: block;\n }\n img {\n display: block;\n max-height: 50px;\n max-width: 90px;\n width: auto;\n height: auto;\n object-fit: contain;\n }\n `],\n})\nexport class TaonCmsCourseCoverComponent implements OnInit {\n readonly t = t.for(this);\n\n @Input({ required: true })\n post!: TaonCmsContentEntity;\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly url = signal('');\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n ngOnInit(): void {\n void this.reload();\n }\n\n async reload(): Promise<void> {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.url.set('');\n this.error.set('');\n try {\n const url =\n defaultThumbnailUrl(this.post.thumbnailKey ?? '') ??\n await this.api.getThumbnailLinkBySlug(this.post.slug);\n if (!url) {\n throw new Error('The thumbnail URL is empty.');\n }\n if (!this.destroyRef.destroyed) {\n this.url.set(url);\n }\n } catch (error: unknown) {\n console.error('[taon-cms-course-cover] Unable to load thumbnail', error);\n if (!this.destroyRef.destroyed) {\n this.failed();\n }\n } finally {\n if (!this.destroyRef.destroyed) {\n this.loading.set(false);\n }\n }\n }\n\n failed(): void {\n this.url.set('');\n this.error.set(this.t.gettext('Cover unavailable. Retry'));\n }\n}","@if (url()) {\n <img [src]=\"url()\" [alt]=\"post.title\" (error)=\"failed()\" />\n}\n@if (error()) {\n <button mat-button type=\"button\" (click)=\"reload()\">{{ error() }}</button>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n TemplateRef,\n ViewChild,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsPostTableActions } from '../taon-cms-posts-backoffice/taon-cms-post-table-actions.directive';\n\nimport { TaonCmsCourseContentsComponent } from './taon-cms-course-contents.component';\nimport { TaonCmsCourseCoverComponent } from './taon-cms-course-cover.component';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts', {\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-course-cover.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-course-backoffice',\n templateUrl: './taon-cms-course-backoffice.component.html',\n styleUrls: ['./taon-cms-course-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n MatIconModule,\n TaonDatatableComponent,\n TaonCmsCourseContentsComponent,\n TaonCmsCourseCoverComponent,\n ],\n providers: [TaonCmsContentApiService],\n})\nexport class TaonCmsCourseBackofficeComponent\n extends TaonCmsPostTableActions\n implements OnInit {\n readonly t = t.for(this);\n\n @ViewChild('coverTemplate', { static: true })\n readonly coverTemplate!: TemplateRef<unknown>;\n\n @ViewChild('visibilityTemplate', { static: true })\n readonly visibilityTemplate!: TemplateRef<unknown>;\n\n protected override readonly postPath = ['../posts'];\n\n readonly courses = signal<TaonCmsContentEntity[]>([]);\n\n readonly loading = signal(false);\n\n columns: MtxGridColumn[] = [];\n\n ngOnInit(): void {\n this.columns = [\n { header: 'ID', field: 'id', sortable: true, showExpand: true },\n {\n header: this.t.gettext('Cover'),\n field: 'thumbnailKey',\n cellTemplate: this.coverTemplate,\n width: '110px',\n },\n { header: this.t.gettext('Title'), field: 'title', sortable: true },\n {\n header: this.t.gettext('Visibility'),\n field: 'status',\n sortable: true,\n cellTemplate: this.visibilityTemplate,\n },\n this.actionsColumn,\n ].map(column => ({\n ...column,\n class: (post: TaonCmsContentEntity) =>\n post?.status === 'published' ? 'cms-course-public' : 'cms-course-private',\n }));\n this.reload();\n }\n\n reload(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.error.set('');\n this.taonCmsContentApiService.listCourses()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: courses => this.courses.set(courses),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-course-backoffice] Unable to load courses',\n error,\n );\n this.error.set(\n this.t.gettext('Courses could not be loaded. Please try reloading.'),\n );\n },\n });\n }\n}","<h1>{{ t.gettext('Courses') }}</h1>\n<h2 style=\"color: goldenrod;\">{{ t.gettext('Course is just a post with related posts and thumbnail. Any non archived post can be course.') }}</h2>\n<button mat-button type=\"button\" [disabled]=\"loading()\" (click)=\"reload()\">\n {{ t.gettext('Reload courses') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading courses...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [data]=\"courses()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #coverTemplate let-post>\n <taon-cms-course-cover [post]=\"post\"></taon-cms-course-cover>\n</ng-template>\n<ng-template #visibilityTemplate let-post>\n <span class=\"visibility\">\n <mat-icon aria-hidden=\"true\">\n {{ post.status === 'published' ? 'lock_open' : 'lock' }}\n </mat-icon>\n {{ post.status === 'published' ? t.gettext('Public') : t.gettext('Private') }}\n </span>\n</ng-template>\n<ng-template #expansionTemplate let-course>\n <taon-cms-course-contents\n [course]=\"course\"\n [actionsColumn]=\"actionsColumn\">\n </taon-cms-course-contents>\n</ng-template>\n","//namespace TaonCmsCourseBackofficeModels\n\n//end of namespace TaonCmsCourseBackofficeModels\n","import { Routes } from '@angular/router';\n\nexport const TaonCmsCourseBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-cms-course-backoffice.component').then(\n m => m.TaonCmsCourseBackofficeComponent,\n ),\n },\n];\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n SecurityContext,\n inject,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Directive({\n selector: '[taonCmsEditable]',\n})\nexport class TaonCmsEditableDirective {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef)\n .nativeElement;\n private readonly sanitizer = inject(DomSanitizer);\n private value = '';\n private composing = false;\n\n @Input() taonCmsEditableFormat: 'text' | 'html' = 'text';\n @Input() taonCmsEditableSingleLine = false;\n @Output() readonly taonCmsEditableChange = new EventEmitter<string>();\n\n @Input()\n set taonCmsEditable(value: string) {\n if (value === this.value) {\n return;\n }\n this.value = value;\n this.render();\n }\n\n @HostListener('compositionstart')\n compositionStart(): void {\n this.composing = true;\n }\n\n @HostListener('compositionend')\n compositionEnd(): void {\n this.composing = false;\n this.onInput();\n }\n\n @HostListener('input')\n onInput(): void {\n if (this.composing) {\n return;\n }\n const text = this.element.innerText;\n this.value =\n this.taonCmsEditableFormat === 'html'\n ? this.sanitize(this.element.innerHTML)\n : this.taonCmsEditableSingleLine\n ? text.replace(/\\s*\\n\\s*/g, ' ')\n : text;\n // Remember emitted values so Angular does not rewrite the DOM/caret on input.\n this.taonCmsEditableChange.emit(this.value);\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onInput();\n this.render();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.taonCmsEditableSingleLine && event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const selection = this.element.ownerDocument.getSelection();\n if (!selection?.rangeCount || !event.clipboardData) {\n return;\n }\n const range = selection.getRangeAt(0);\n if (!this.element.contains(range.commonAncestorContainer)) {\n return;\n }\n const pasted = event.clipboardData.getData('text/plain');\n const text = this.taonCmsEditableSingleLine\n ? pasted.replace(/\\s*\\n\\s*/g, ' ')\n : pasted;\n range.deleteContents();\n const node = this.element.ownerDocument.createTextNode(text);\n range.insertNode(node);\n range.setStartAfter(node);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n this.onInput();\n }\n\n private sanitize(value: string): string {\n return this.sanitizer.sanitize(SecurityContext.HTML, value) ?? '';\n }\n\n private render(): void {\n if (this.taonCmsEditableFormat === 'html') {\n this.element.innerHTML = this.sanitize(this.value);\n } else {\n this.element.textContent = this.value;\n }\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n HostListener,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsContentRevisionApiService } from '../../taon-cms-content-revision/taon-cms-content-revision-api.service';\nimport type { TaonCmsContentRevisionEntity } from '../../taon-cms-content-revision/taon-cms-content-revision.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts', {\"src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-revision-chooser',\n templateUrl: './taon-cms-revision-chooser.component.html',\n styleUrls: ['./taon-cms-revision-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePipe, MatButtonModule, MatDialogModule, MatRadioModule],\n providers: [TaonCmsContentRevisionApiService],\n})\nexport class TaonCmsRevisionChooserComponent {\n readonly t = t.for(this);\n\n readonly post = inject<TaonCmsContentEntity>(MAT_DIALOG_DATA);\n\n readonly revisions = signal<TaonCmsContentRevisionEntity[]>([]);\n\n readonly selected = signal<number | null>(null);\n\n readonly loading = signal(false);\n\n readonly applying = signal(false);\n\n readonly error = signal('');\n\n private readonly api = inject(TaonCmsContentRevisionApiService);\n\n private readonly ref = inject(\n MatDialogRef<TaonCmsRevisionChooserComponent, TaonCmsContentEntity>,\n );\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n this.load();\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onEscape(event: KeyboardEvent): void {\n event.stopPropagation();\n this.ref.close();\n }\n\n load(): void {\n if (this.loading() || this.applying()) {\n return;\n }\n this.selected.set(null);\n this.loading.set(true);\n this.error.set('');\n this.api\n .listRevisions(this.post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: revisions =>\n this.revisions.set(\n [...revisions].sort((a, b) => b.revisionNumber - a.revisionNumber),\n ),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-revision-chooser] Unable to load revisions',\n error,\n );\n this.error.set(\n this.t.gettext('Revisions could not be loaded. Please try again.'),\n );\n },\n });\n }\n\n apply(): void {\n const revisionNumber = this.selected();\n if (this.loading() || this.applying()) {\n return;\n }\n if (revisionNumber === null) {\n this.error.set(this.t.gettext('Select a revision to restore.'));\n return;\n }\n this.applying.set(true);\n this.error.set('');\n this.api\n .restoreContent(this.post.id, {\n revisionNumber,\n expectedVersion: this.post.version,\n })\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.applying.set(false)),\n )\n .subscribe({\n next: post => this.ref.close(post),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-revision-chooser] Unable to restore revision',\n error,\n );\n this.error.set(\n this.t.gettext(\n 'The revision could not be restored. If the post changed, close and reopen it to load its latest version.',\n ),\n );\n },\n });\n }\n\n cancel(): void {\n if (!this.applying()) {\n this.ref.close();\n }\n }\n}","<h2 mat-dialog-title>{{ t.gettext('Restore a revision') }}</h2>\n<mat-dialog-content>\n <p>\n {{\n t.gettext(\n 'Restoring replaces the post, including its status, with the selected revision.'\n )\n }}\n </p>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading revisions...') }}</p>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Post revisions')\"\n [value]=\"selected()\"\n (change)=\"selected.set($event.value)\"\n [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button\n [value]=\"revision.revisionNumber\"\n [disabled]=\"!revision.snapshot\">\n <strong>{{\n t.gettext('Revision [[ revisionNumber ]]', {\n revisionNumber: revision.revisionNumber,\n })\n }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (\n revision.createdByUserId !== null &&\n revision.createdByUserId !== undefined\n ) {\n <span>{{\n t.gettext('User [[ userId ]]', {\n userId: revision.createdByUserId,\n })\n }}</span>\n }\n @if (!revision.snapshot) {\n <span>{{ t.gettext('Legacy revision - cannot be restored') }}</span>\n }\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No revisions are available.') }}</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading() || applying()\"\n (click)=\"load()\">\n {{ t.gettext('Reload revisions') }}\n </button>\n }\n @if (applying()) {\n <p role=\"status\">{{ t.gettext('Restoring...') }}</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"applying()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || applying() || selected() === null\"\n (click)=\"apply()\">\n {{ t.gettext('Apply') }}\n </button>\n</mat-dialog-actions>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { finalize } from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n\nconst t = Translation.for('src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts', {\"src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html\":{\"en-US\":async () => (await import('./i18n/taon-related-post-chooser.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-related-post-chooser.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-related-post-chooser.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data')).default}} as any);\n\nexport interface TaonRelatedPostChooserData {\n postId?: number;\n excludedIds: number[];\n}\n\n@Component({\n selector: 'taon-related-post-chooser',\n templateUrl: './taon-related-post-chooser.component.html',\n styleUrls: ['./taon-related-post-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, MatDialogModule, MatRadioModule],\n providers: [TaonCmsContentApiService],\n})\nexport class TaonRelatedPostChooserComponent {\n readonly t = t.for(this);\n\n readonly data = inject<TaonRelatedPostChooserData>(MAT_DIALOG_DATA);\n readonly posts = signal<TaonCmsContentEntity[]>([]);\n readonly selected = signal<number | null>(null);\n readonly query = signal('');\n readonly loading = signal(false);\n readonly error = signal('');\n readonly filteredPosts = computed(() => {\n const query = this.query().trim().toLowerCase();\n return this.posts().filter(\n post =>\n post.id !== this.data.postId &&\n !this.data.excludedIds.includes(post.id) &&\n `${post.id} ${post.title} ${post.slug}`.toLowerCase().includes(query),\n );\n });\n\n private readonly api = inject(TaonCmsContentApiService);\n private readonly ref = inject(\n MatDialogRef<TaonRelatedPostChooserComponent, TaonCmsContentEntity>,\n );\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n this.load();\n }\n\n load(): void {\n if (this.loading()) {\n return;\n }\n this.loading.set(true);\n this.selected.set(null);\n this.error.set('');\n this.api.allMyEntities$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: posts => this.posts.set(posts),\n error: (error: unknown) => {\n console.error(\n '[taon-related-post-chooser] Unable to load posts',\n error,\n );\n this.error.set(\n this.t.gettext('Posts could not be loaded. Please try again.'),\n );\n },\n });\n }\n\n search(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n this.query.set(event.target.value);\n this.selected.set(null);\n }\n }\n\n choose(): void {\n if (this.loading() || this.error()) {\n return;\n }\n const post = this.filteredPosts().find(post => post.id === this.selected());\n if (!post) {\n this.error.set(this.t.gettext('Select a related post.'));\n return;\n }\n this.ref.close(post);\n }\n\n cancel(): void {\n this.ref.close();\n }\n}","<h2 mat-dialog-title>{{ t.gettext('Add related post') }}</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>{{ t.gettext('Search posts') }}</span>\n <input\n type=\"search\"\n [attr.aria-label]=\"t.gettext('Search posts by ID, title or slug')\"\n [value]=\"query()\"\n [disabled]=\"loading()\"\n (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading posts...') }}</p>\n } @else if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n <button\n mat-button\n type=\"button\"\n (click)=\"load()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Related post')\"\n [value]=\"selected()\"\n (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 }}\n <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No matching posts available.') }}</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || !!error() || selected() === null\"\n (click)=\"choose()\">\n {{ t.gettext('Add related post') }}\n </button>\n</mat-dialog-actions>\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { TaonPermissionApiService } from '@taon-dev/session/websql-prod';\nimport type { TaonPermissionEntity } from '@taon-dev/session/websql-prod';\nimport { TaonConfirmDialogComponent } from '@taon-dev/ui/websql-prod';\nimport { Editor, NgxEditorModule, toHTML } from 'ngx-editor';\nimport type { Toolbar } from 'ngx-editor';\nimport {\n Observable,\n Subscription,\n finalize,\n firstValueFrom,\n forkJoin,\n of,\n take,\n} from 'rxjs';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsApplicationHookEntity } from '../../taon-cms-application-hook/taon-cms-application-hook.entity';\nimport type { TaonCmsApplicationHook } from '../../taon-cms-application-hooks';\nimport { TaonCmsCategoryApiService } from '../../taon-cms-category/taon-cms-category-api.service';\nimport type { TaonCmsCategoryEntity } from '../../taon-cms-category/taon-cms-category.entity';\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport { TaonCmsContentConfigService } from '../../taon-cms-content/taon-cms-content.config.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport type { TaonCmsUpdateContent } from '../../taon-cms-content/taon-cms-content.models';\nimport { TaonCmsContentType } from '../../taon-cms-content/taon-cms-content.models';\nimport { resolveTemplateVariables } from '../../taon-cms-content/taon-cms-template-variables';\nimport type { TaonCmsTemplateVariable } from '../../taon-cms-content/taon-cms-template-variables';\nimport { TaonCmsTagApiService } from '../../taon-cms-tag/taon-cms-tag-api.service';\nimport type { TaonCmsTagEntity } from '../../taon-cms-tag/taon-cms-tag.entity';\nimport { TaonCmsRevisionChooserComponent } from '../taon-cms-revision-chooser/taon-cms-revision-chooser.component';\nimport { TaonRelatedPostChooserComponent } from '../taon-related-post-chooser/taon-related-post-chooser.component';\nimport type { TaonRelatedPostChooserData } from '../taon-related-post-chooser/taon-related-post-chooser.component';\n\nimport { TaonCmsEditableDirective } from './taon-cms-editable.directive';\nimport type { TaonCmsPostDraft, TaonCmsPostMode } from './taon-cms-post.models';\nimport {\n defaultThumbnailKey,\n defaultThumbnailUrl,\n generateVideoThumbnail,\n} from './taon-cms-thumbnail';\n\n//#endregion\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts', {\"src/lib/taon-posts/taon-cms-post/taon-cms-post.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-post.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-post',\n templateUrl: './taon-cms-post.component.html',\n styleUrls: ['./taon-cms-post.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatMenuModule,\n MatTabsModule,\n NgxEditorModule,\n MatChipsModule,\n MatProgressBarModule,\n MatRadioModule,\n MatSelectModule,\n TaonCmsEditableDirective,\n ],\n providers: [\n TaonCmsContentApiService,\n TaonCmsContentConfigService,\n TaonPermissionApiService,\n TaonCmsCategoryApiService,\n TaonCmsTagApiService,\n ],\n})\nexport class TaonCmsPostComponent {\n readonly t = t.for(this);\n\n //#region fields and getters\n readonly post = input<TaonCmsContentEntity | null>(null);\n\n readonly mode = model<TaonCmsPostMode>('view');\n\n readonly changed = output<TaonCmsContentEntity>();\n\n readonly deleted = output<TaonCmsContentEntity>();\n\n readonly duplicated = output<TaonCmsContentEntity>();\n\n readonly cancelled = output<void>();\n\n readonly currentPost = signal<TaonCmsContentEntity | null>(null);\n\n readonly placeholderShortIntro = this.t.signal.gettext(\n 'A short introduction...',\n );\n\n readonly placeholderTitle = this.t.signal.gettext('Title');\n\n readonly placeholderTellYourStory =\n this.t.signal.gettext('Tell your story...');\n\n readonly draft = signal<TaonCmsPostDraft>({\n type: TaonCmsContentType.Normal,\n title: '',\n slug: '',\n excerpt: '',\n body: '',\n videoKey: null,\n audioKey: null,\n attachmentKey: null,\n thumbnailKey: null,\n categoryId: null,\n tagIds: [],\n });\n\n readonly postTypes = [\n {\n value: TaonCmsContentType.Normal,\n label: this.t.gettext('Normal post'),\n },\n { value: TaonCmsContentType.Video, label: this.t.gettext('Video post') },\n { value: TaonCmsContentType.Audio, label: this.t.gettext('Audio post') },\n {\n value: TaonCmsContentType.Attachment,\n label: this.t.gettext('Attachment post'),\n },\n ];\n\n private readonly mediaAttachments = [\n {\n type: TaonCmsContentType.Video,\n key: 'videoKey',\n heading: this.t.gettext('Video Attachment'),\n uploadLabel: this.t.gettext('Upload video'),\n accept: 'video/*',\n },\n {\n type: TaonCmsContentType.Audio,\n key: 'audioKey',\n heading: this.t.gettext('Audio Attachment'),\n uploadLabel: this.t.gettext('Upload audio'),\n accept: 'audio/*',\n },\n {\n type: TaonCmsContentType.Attachment,\n key: 'attachmentKey',\n heading: this.t.gettext('File Attachment'),\n uploadLabel: this.t.gettext('Upload file'),\n accept: '',\n },\n ] as const;\n\n readonly mediaAttachment = computed(() =>\n this.mediaAttachments.find(media => media.type === this.draft().type),\n );\n\n readonly busy = signal(false);\n\n readonly thumbnailPreviewUrl = signal('');\n\n readonly thumbnailError = signal('');\n\n private readonly thumbnailReference = computed(\n () => this.draft().thumbnailKey,\n );\n\n private readonly thumbnailSlug = computed(() => this.draft().slug);\n\n readonly taxonomyLoading = signal(false);\n\n readonly taxonomyError = signal('');\n\n readonly categories = signal<TaonCmsCategoryEntity[]>([]);\n\n readonly tags = signal<TaonCmsTagEntity[]>([]);\n\n readonly tagSearch = signal('');\n\n readonly filteredTags = computed(() => {\n const query = this.tagSearch().trim().toLowerCase();\n return this.tags().filter(\n tag =>\n !this.draft().tagIds.includes(tag.id) &&\n `${tag.name} ${tag.slug}`.toLowerCase().includes(query),\n );\n });\n\n readonly selectedTags = computed(() =>\n this.tags().filter(tag => this.draft().tagIds.includes(tag.id)),\n );\n\n private readonly categoryApi = inject(TaonCmsCategoryApiService);\n\n private readonly tagApi = inject(TaonCmsTagApiService);\n\n private taxonomyLoad?: Subscription;\n\n private editorSession = 0;\n\n private thumbnailObjectUrl = '';\n\n private readonly stagedThumbnail = signal<{\n key: string | null;\n url: string;\n } | null>(null);\n\n readonly uploading = signal(false);\n\n readonly uploadProgress = signal(0);\n\n readonly mediaPreviewUrl = signal('');\n\n readonly mediaPreviewLoading = signal(false);\n\n readonly mediaPreviewError = signal('');\n\n private readonly mediaFileNames = signal<Record<string, string>>({});\n\n private readonly uploadedMediaPreview = signal<{\n key: string;\n url: string;\n fileName: string;\n } | null>(null);\n\n private mediaPreviewRequest = 0;\n\n private mediaPreviewSignature = '';\n\n readonly dialogOpen = signal(false);\n\n readonly error = signal('');\n\n readonly relatedPosts = signal<TaonCmsContentEntity[]>([]);\n\n readonly relatedPostsLoading = signal(false);\n\n readonly relatedPostsError = signal('');\n\n readonly applicationHooks = signal<TaonCmsApplicationHookEntity[]>([]);\n\n readonly applicationHooksLoading = signal(false);\n\n readonly applicationHooksError = signal('');\n\n readonly useAsApplicationHook = signal(false);\n\n readonly selectedApplicationHook = signal<TaonCmsApplicationHook | null>(\n null,\n );\n\n readonly permissions = signal<TaonPermissionEntity[]>([]);\n\n readonly applyPermissionsToRelatedPosts = signal(false);\n\n readonly permissionSource = signal<{ id: number; title: string } | null>(\n null,\n );\n\n readonly permissionsLoading = signal(false);\n\n readonly permissionsError = signal('');\n\n readonly permissionOptions = signal<TaonPermissionEntity[]>([]);\n\n readonly permissionOptionsLoading = signal(false);\n\n readonly permissionOptionsError = signal('');\n\n readonly selectedPermissionId = signal<number | null>(null);\n\n readonly availablePermissions = computed(() => {\n const assignedIds = new Set(\n this.permissions().map(permission => permission.id),\n );\n return this.permissionOptions().filter(\n permission => !assignedIds.has(permission.id),\n );\n });\n\n readonly editing = computed(\n () => this.mode() === 'edit' || this.mode() === 'add',\n );\n\n readonly canSave = computed(\n () =>\n !!this.draft().title.trim() &&\n !!this.draft().slug.trim() &&\n !this.relatedPostsLoading() &&\n !this.relatedPostsError() &&\n !this.applicationHooksLoading() &&\n !this.applicationHooksError() &&\n (!this.useAsApplicationHook() || !!this.selectedApplicationHook()) &&\n !this.permissionsLoading() &&\n !this.permissionsError() &&\n !this.taxonomyLoading() &&\n !this.taxonomyError(),\n );\n\n readonly canPublish = computed(() => {\n const post = this.currentPost();\n return !!post && post.status !== 'published';\n });\n\n private readonly api = inject(TaonCmsContentApiService);\n\n private readonly contentConfig = inject(TaonCmsContentConfigService);\n\n readonly contentTab = signal(0);\n\n readonly contentEditor = signal<Editor | null>(null);\n\n readonly rawContent =\n viewChild<ElementRef<HTMLTextAreaElement>>('rawContent');\n\n private loadingEditorContent = false;\n\n readonly contentToolbar: Toolbar = [\n [{ heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }],\n ['bold', 'italic', 'underline', 'strike'],\n ['ordered_list', 'bullet_list'],\n ['blockquote', 'code'],\n ['link', 'image'],\n ['text_color', 'background_color'],\n ['align_left', 'align_center', 'align_right', 'align_justify'],\n ['horizontal_rule', 'format_clear'],\n ['undo', 'redo'],\n ];\n\n readonly resolvedBody = computed(() => {\n const draft = this.draft();\n return resolveTemplateVariables(draft.body, {\n frontendUrl: this.api.frontendUrl,\n site: { name: this.contentConfig.siteName },\n post: {\n title: draft.title,\n url: draft.slug ? this.api.getPostUrl(draft.slug) : null,\n id: this.currentPost()?.id,\n thumbnailUrl: this.thumbnailPreviewUrl() || null,\n },\n });\n });\n\n private readonly permissionApi = inject(TaonPermissionApiService);\n\n private readonly dialog = inject(MatDialog);\n\n private readonly destroyRef = inject(DestroyRef);\n\n private relatedPostsLoad?: Subscription;\n\n private applicationHooksLoad?: Subscription;\n\n private permissionsLoad?: Subscription;\n //#endregion\n\n //#region constructor\n constructor() {\n const editor = new Editor({\n attributes: {\n 'aria-label': this.t.gettext('Post body'),\n style: 'min-height: 20rem',\n },\n });\n\n this.contentEditor.set(editor);\n\n const editorChanges = editor.valueChanges.subscribe(document => {\n if (!this.editing() || this.loadingEditorContent) {\n return;\n }\n\n this.updateDraft('body', toHTML(document, editor.schema));\n });\n\n // React to post input changes.\n effect(() => {\n const post = this.post();\n\n untracked(() => {\n this.setPost(post);\n\n // Synchronize editor only because the POST changed externally.\n this.loadingEditorContent = true;\n\n try {\n editor.setContent(this.draft().body);\n } finally {\n this.loadingEditorContent = false;\n }\n });\n });\n\n // Enable/disable editor without recreating it.\n effect(() => {\n const disabled = this.busy() || this.dialogOpen() || !this.editing();\n\n editor.view.setProps({\n editable: () => !disabled,\n });\n });\n\n // Load edit-mode dependencies.\n effect(() => {\n if (this.editing()) {\n untracked(() => {\n this.loadApplicationHooks();\n this.loadPermissionOptions();\n this.loadTaxonomy();\n });\n }\n });\n\n // Thumbnail preview handling.\n effect(onCleanup => {\n const key = this.thumbnailReference();\n const slug = this.thumbnailSlug();\n const editing = this.editing();\n const staged = this.stagedThumbnail();\n\n let active = true;\n\n onCleanup(() => {\n active = false;\n });\n\n this.thumbnailError.set('');\n this.thumbnailPreviewUrl.set('');\n\n if (staged && staged.key === key) {\n this.thumbnailPreviewUrl.set(staged.url);\n return;\n }\n\n if (!key) {\n return;\n }\n\n const placeholder = defaultThumbnailUrl(key);\n\n if (placeholder) {\n this.thumbnailPreviewUrl.set(placeholder);\n return;\n }\n\n if (!slug) {\n return;\n }\n\n const load = async () => {\n if (editing) {\n return this.api.getAssetUrl(key);\n }\n\n try {\n return await this.api.getThumbnailLinkBySlug(slug, true);\n } catch {\n return this.api.getThumbnailLinkBySlug(slug);\n }\n };\n\n void load()\n .then(url => {\n if (active && !this.destroyRef.destroyed) {\n this.thumbnailPreviewUrl.set(url);\n }\n })\n .catch((error: unknown) => {\n console.error('[taon-cms-post] Unable to load thumbnail', error);\n\n if (active && !this.destroyRef.destroyed) {\n this.thumbnailError.set(\n this.t.gettext('The thumbnail could not be loaded.'),\n );\n }\n });\n });\n\n // Media preview handling.\n effect(() => {\n const media = this.mediaAttachment();\n const key = media ? this.draft()[media.key] : null;\n\n const slug = this.draft().slug;\n const editing = this.editing();\n\n const viewing = !!this.currentPost() && this.mode() !== 'add';\n\n const stagedPreview = this.uploadedMediaPreview();\n\n if ((!editing && !viewing) || !media || !key) {\n this.mediaPreviewSignature = '';\n this.mediaPreviewRequest += 1;\n this.mediaPreviewUrl.set('');\n this.mediaPreviewLoading.set(false);\n this.mediaPreviewError.set('');\n return;\n }\n\n if (stagedPreview?.key === key) {\n const signature = `upload:${key}:${stagedPreview.url}`;\n\n if (signature === this.mediaPreviewSignature) {\n return;\n }\n\n this.mediaPreviewSignature = signature;\n this.mediaPreviewRequest += 1;\n\n this.mediaPreviewUrl.set(stagedPreview.url);\n\n this.mediaPreviewLoading.set(false);\n this.mediaPreviewError.set('');\n\n return;\n }\n\n if (!slug) {\n this.mediaPreviewSignature = '';\n this.mediaPreviewRequest += 1;\n this.mediaPreviewUrl.set('');\n this.mediaPreviewLoading.set(false);\n this.mediaPreviewError.set('');\n return;\n }\n\n const signature = `${this.mode()}:${media.type}:${slug}:${key}`;\n\n if (signature === this.mediaPreviewSignature) {\n return;\n }\n\n this.mediaPreviewSignature = signature;\n\n const requestId = ++this.mediaPreviewRequest;\n\n this.mediaPreviewUrl.set('');\n this.mediaPreviewLoading.set(true);\n this.mediaPreviewError.set('');\n\n const getLink = editing\n ? this.getMediaLink(slug, media.type)\n : this.getMediaLinkForView(slug, media.type);\n\n void getLink\n .then(url => {\n if (\n requestId === this.mediaPreviewRequest &&\n !this.destroyRef.destroyed\n ) {\n this.mediaPreviewUrl.set(url);\n }\n })\n .catch((error: unknown) => {\n console.error('[taon-cms-post] Unable to load media preview', error);\n\n if (\n requestId === this.mediaPreviewRequest &&\n !this.destroyRef.destroyed\n ) {\n this.mediaPreviewError.set(\n this.t.gettext(\n 'Media preview could not be loaded. Please reopen the editor to try again.',\n ),\n );\n }\n })\n .finally(() => {\n if (\n requestId === this.mediaPreviewRequest &&\n !this.destroyRef.destroyed\n ) {\n this.mediaPreviewLoading.set(false);\n }\n });\n });\n\n // Destroy ngx-editor ONLY when this component is actually destroyed.\n this.destroyRef.onDestroy(() => {\n editorChanges.unsubscribe();\n editor.destroy();\n\n if (this.contentEditor() === editor) {\n this.contentEditor.set(null);\n }\n\n this.releaseThumbnailPreview();\n });\n }\n //#endregion\n\n //#region methods / load related posts\n loadTaxonomy(): void {\n this.taxonomyLoad?.unsubscribe();\n const session = this.editorSession;\n const postId = this.currentPost()?.id;\n this.taxonomyLoading.set(true);\n this.taxonomyError.set('');\n this.taxonomyLoad = forkJoin({\n categories: this.categoryApi.allMyEntities$,\n tags: this.tagApi.allMyEntities$,\n tagIds: postId ? this.api.listTagIds(postId) : of([] as number[]),\n })\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.taxonomyLoading.set(false)),\n )\n .subscribe({\n next: result => {\n if (session === this.editorSession) {\n this.categories.set(\n result.categories.sort(\n (a, b) =>\n a.sortOrder - b.sortOrder || a.name.localeCompare(b.name),\n ),\n );\n this.tags.set(result.tags);\n this.updateDraft('tagIds', result.tagIds);\n }\n },\n error: (error: unknown) => {\n console.error(\n '[taon-cms-post] Unable to load categories and tags',\n error,\n );\n this.taxonomyError.set(\n this.t.gettext(\n 'Categories and tags could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n\n addTag(id: number): void {\n if (!this.draft().tagIds.includes(id)) {\n this.updateDraft('tagIds', [...this.draft().tagIds, id]);\n }\n }\n\n removeTag(id: number): void {\n this.updateDraft(\n 'tagIds',\n this.draft().tagIds.filter(selected => selected !== id),\n );\n }\n\n filterTags(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n this.tagSearch.set(event.target.value);\n }\n }\n\n applyDefaultThumbnail(): void {\n if (!this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n this.releaseThumbnailPreview();\n this.stagedThumbnail.set(null);\n this.updateDraft('thumbnailKey', defaultThumbnailKey(this.draft().type));\n }\n\n async thumbnailSelected(event: Event): Promise<void> {\n if (!(event.target instanceof HTMLInputElement)) {\n return;\n }\n const input = event.target;\n const file = input.files?.[0];\n input.value = '';\n if (!file || !this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n if (!file.type.startsWith('image/')) {\n this.error.set(\n this.t.gettext('Please select an image for the thumbnail.'),\n );\n return;\n }\n this.busy.set(true);\n this.error.set('');\n try {\n await this.storeThumbnail(file, this.editorSession);\n } catch (error: unknown) {\n console.error('[taon-cms-post] Unable to upload thumbnail', error);\n this.error.set(\n this.t.gettext(\n 'The thumbnail could not be uploaded. Please try again.',\n ),\n );\n } finally {\n this.busy.set(false);\n }\n }\n\n private async storeThumbnail(file: File, session: number): Promise<void> {\n if (session !== this.editorSession || this.destroyRef.destroyed) {\n return;\n }\n const previousPreview = this.thumbnailPreviewUrl();\n const previousStaged = this.stagedThumbnail();\n const preview = URL.createObjectURL(file);\n this.stagedThumbnail.set({ key: this.draft().thumbnailKey, url: preview });\n this.thumbnailPreviewUrl.set(preview);\n try {\n const object = await this.api.uploadMedia(file);\n if (session === this.editorSession && !this.destroyRef.destroyed) {\n this.releaseThumbnailPreview();\n this.thumbnailObjectUrl = preview;\n this.stagedThumbnail.set({ key: object.key, url: preview });\n this.updateDraft('thumbnailKey', object.key);\n }\n } catch (error: unknown) {\n if (session === this.editorSession) {\n this.stagedThumbnail.set(previousStaged);\n this.thumbnailPreviewUrl.set(previousPreview);\n }\n throw error;\n } finally {\n if (this.thumbnailObjectUrl !== preview) {\n URL.revokeObjectURL(preview);\n }\n }\n }\n\n private releaseThumbnailPreview(): void {\n if (this.thumbnailObjectUrl) {\n URL.revokeObjectURL(this.thumbnailObjectUrl);\n this.thumbnailObjectUrl = '';\n }\n }\n\n loadRelatedPosts(): void {\n if (this.busy() || this.relatedPostsLoading()) {\n return;\n }\n const post = this.requirePost();\n if (!post) {\n return;\n }\n this.relatedPostsLoading.set(true);\n this.relatedPostsError.set('');\n this.relatedPostsLoad = this.api\n .listRelatedPosts(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.relatedPostsLoading.set(false)),\n )\n .subscribe({\n next: posts => this.relatedPosts.set(posts),\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to load related posts', error);\n this.relatedPostsError.set(\n this.t.gettext(\n 'Related posts could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / add related post\n addRelatedPost(): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.relatedPostsLoading() ||\n this.relatedPostsError()\n ) {\n return;\n }\n this.dialogOpen.set(true);\n const ref = this.dialog.open<\n TaonRelatedPostChooserComponent,\n TaonRelatedPostChooserData,\n TaonCmsContentEntity\n >(TaonRelatedPostChooserComponent, {\n data: {\n postId: this.currentPost()?.id,\n excludedIds: this.relatedPosts().map(post => post.id),\n },\n width: '560px',\n maxWidth: '95vw',\n disableClose: true,\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(post => {\n this.dialogOpen.set(false);\n if (\n post &&\n post.id !== this.currentPost()?.id &&\n !this.relatedPosts().some(related => related.id === post.id)\n ) {\n this.relatedPosts.update(posts => [...posts, post]);\n }\n });\n }\n //#endregion\n\n //#region methods / remove related post\n removeRelatedPost(id: number): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.relatedPostsLoading() ||\n this.relatedPostsError()\n ) {\n return;\n }\n this.relatedPosts.update(posts => posts.filter(post => post.id !== id));\n }\n //#endregion\n\n //#region methods / application hooks\n loadApplicationHooks(): void {\n if (this.applicationHooksLoading()) {\n return;\n }\n this.applicationHooksLoading.set(true);\n this.applicationHooksError.set('');\n this.applicationHooksLoad = this.api\n .listApplicationHooks()\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.applicationHooksLoading.set(false)),\n )\n .subscribe({\n next: hooks => {\n this.applicationHooks.set(hooks);\n this.setApplicationHookSelection(this.currentPost(), hooks);\n },\n error: (error: unknown) => {\n console.error(\n '[taon-cms-post] Unable to load application hooks',\n error,\n );\n this.applicationHooksError.set(\n this.t.gettext(\n 'Application hooks could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n\n setUseAsApplicationHook(enabled: boolean): void {\n this.useAsApplicationHook.set(enabled);\n }\n\n applicationHookInUseByAnotherPost(\n applicationHook: TaonCmsApplicationHookEntity,\n ): boolean {\n return (\n applicationHook.contentId !== null &&\n applicationHook.contentId !== this.currentPost()?.id\n );\n }\n\n applicationHookLabel(hook: TaonCmsApplicationHook): string {\n return hook.split('-').join('_').toUpperCase();\n }\n //#endregion\n\n //#region methods / load permissions\n loadPermissions(): void {\n if (this.permissionsLoading()) {\n return;\n }\n const post = this.requirePost();\n if (!post) {\n return;\n }\n this.permissionsLoading.set(true);\n this.permissionsError.set('');\n this.permissionsLoad = this.api\n .getPermissionConfiguration(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.permissionsLoading.set(false)),\n )\n .subscribe({\n next: configuration => {\n this.permissions.set(configuration.permissions);\n this.permissionSource.set(configuration.source);\n },\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to load permissions', error);\n this.permissionsError.set(\n this.t.gettext(\n 'Permissions could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / add permission\n addPermission(): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.permissionSource() ||\n this.permissionsLoading() ||\n this.permissionsError()\n ) {\n return;\n }\n const permissionId = this.selectedPermissionId();\n const permission = this.availablePermissions().find(\n item => item.id === permissionId,\n );\n if (permission) {\n this.permissions.update(permissions => [...permissions, permission]);\n this.selectedPermissionId.set(null);\n }\n }\n //#endregion\n\n //#region methods / remove permission\n removePermission(id: number): void {\n if (\n !this.editing() ||\n this.busy() ||\n this.dialogOpen() ||\n this.permissionSource() ||\n this.permissionsLoading() ||\n this.permissionsError()\n ) {\n return;\n }\n this.permissions.update(items =>\n items.filter(permission => permission.id !== id),\n );\n }\n //#endregion\n\n //#region methods / load permission options\n loadPermissionOptions(): void {\n if (\n this.permissionOptionsLoading() ||\n this.permissionOptions().length > 0\n ) {\n return;\n }\n this.permissionOptionsLoading.set(true);\n this.permissionOptionsError.set('');\n this.permissionApi.allMyEntities$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.permissionOptionsLoading.set(false)),\n )\n .subscribe({\n next: permissions => this.permissionOptions.set(permissions),\n error: (error: unknown) => {\n console.error(\n '[taon-cms-post] Unable to load permission options',\n error,\n );\n this.permissionOptionsError.set(\n this.t.gettext(\n 'Available permissions could not be loaded. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / update draft\n updateRawContent(event: Event): void {\n if (event.target instanceof HTMLTextAreaElement) {\n this.updateDraft('body', event.target.value);\n }\n }\n\n insertVariable(variable: TaonCmsTemplateVariable): void {\n if (!this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n const text = `{{${variable}}}`;\n if (this.contentTab() === 1) {\n const textarea = this.rawContent()?.nativeElement;\n if (textarea) {\n textarea.setRangeText(\n text,\n textarea.selectionStart,\n textarea.selectionEnd,\n 'end',\n );\n this.updateDraft('body', textarea.value);\n textarea.focus();\n }\n } else if (this.contentTab() === 0) {\n const editor = this.contentEditor();\n editor?.commands.insertText(text).exec();\n editor?.view.focus();\n }\n }\n\n updateDraft<K extends keyof TaonCmsPostDraft>(\n field: K,\n value: TaonCmsPostDraft[K],\n ): void {\n this.draft.update(draft => ({ ...draft, [field]: value }));\n }\n //#endregion\n\n //#region methods / file selected\n async fileSelected(event: Event): Promise<void> {\n if (!(event.target instanceof HTMLInputElement)) {\n this.error.set(this.t.gettext('Unable to read the selected media file.'));\n return;\n }\n const input = event.target;\n const file = input.files?.[0];\n if (!file) {\n return;\n }\n const media = this.mediaAttachment();\n if (!media || !this.editing() || this.busy() || this.dialogOpen()) {\n input.value = '';\n return;\n }\n const session = this.editorSession;\n this.busy.set(true);\n this.uploading.set(true);\n this.uploadProgress.set(0);\n this.error.set('');\n try {\n const object = await this.api.uploadMedia(file, percentage => {\n if (!this.destroyRef.destroyed) {\n this.uploadProgress.set(percentage);\n }\n });\n if (!this.destroyRef.destroyed && this.editorSession === session) {\n const fileName = object.fileName || file.name;\n this.mediaFileNames.update(names => ({\n ...names,\n [object.key]: fileName,\n }));\n if (object.downloadUrl) {\n this.uploadedMediaPreview.set({\n key: object.key,\n url: this.uploadedMediaUrl(object.downloadUrl, media.type),\n fileName,\n });\n }\n this.updateDraft(media.key, object.key);\n if (media.type === TaonCmsContentType.Video) {\n try {\n const blob = await generateVideoThumbnail(file);\n const extension = blob.type === 'image/webp' ? 'webp' : 'png';\n await this.storeThumbnail(\n new File([blob], `thumbnail.${extension}`, { type: blob.type }),\n session,\n );\n } catch (error: unknown) {\n console.error(\n '[taon-cms-post] Unable to generate thumbnail',\n error,\n );\n this.error.set(\n this.t.gettext(\n 'The video was uploaded, but its thumbnail could not be generated. Upload a thumbnail or apply a default placeholder.',\n ),\n );\n }\n }\n }\n } catch (error: unknown) {\n console.error('[taon-cms-post] Unable to upload media', error);\n this.error.set(\n this.t.gettext('The media could not be uploaded. Please try again.'),\n );\n } finally {\n this.busy.set(false);\n this.uploading.set(false);\n this.uploadProgress.set(0);\n input.value = '';\n }\n }\n //#endregion\n\n //#region methods / remove media\n removeMedia(): void {\n const media = this.mediaAttachment();\n if (!media || !this.editing() || this.busy() || this.dialogOpen()) {\n return;\n }\n this.uploadedMediaPreview.set(null);\n this.updateDraft(media.key, null);\n }\n //#endregion\n\n //#region methods / uploaded media URL\n private uploadedMediaUrl(url: string, type: TaonCmsContentType): string {\n if (type !== TaonCmsContentType.Attachment) {\n return url;\n }\n const parsedUrl = new URL(url);\n parsedUrl.searchParams.set('download', 'true');\n return parsedUrl.href;\n }\n //#endregion\n\n //#region methods / get media link\n private getMediaLink(\n slug: string,\n type: TaonCmsContentType,\n ): Promise<string> {\n switch (type) {\n case TaonCmsContentType.Video:\n return firstValueFrom(this.api.getVideoLinkBySlug(slug));\n case TaonCmsContentType.Audio:\n return firstValueFrom(this.api.getAudioLinkBySlug(slug));\n case TaonCmsContentType.Attachment:\n return this.api.getAttachmentLinkBySlug(slug);\n default:\n return Promise.reject(new Error('This post type has no media.'));\n }\n }\n //#endregion\n\n //#region methods / get media link for viewing\n private async getMediaLinkForView(\n slug: string,\n type: TaonCmsContentType,\n ): Promise<string> {\n try {\n switch (type) {\n case TaonCmsContentType.Video:\n return await this.api.getPublicVideoLinkBySlug(slug);\n case TaonCmsContentType.Audio:\n return await this.api.getPublicAudioLinkBySlug(slug);\n case TaonCmsContentType.Attachment:\n return await this.api.getPublicAttachmentLinkBySlug(slug);\n default:\n throw new Error('This post type has no media.');\n }\n } catch {\n return this.getMediaLink(slug, type);\n }\n }\n //#endregion\n\n //#region methods / media file name\n mediaFileName(key: string): string {\n const fileName = this.mediaFileNames()[key];\n if (fileName) {\n return fileName;\n }\n const uploaded = this.uploadedMediaPreview();\n if (uploaded?.key === key) {\n return uploaded.fileName;\n }\n const storedName = key.split('/').pop() || key;\n return storedName.replace(/^[0-9a-f-]{36}__/i, '');\n }\n //#endregion\n\n //#region methods / update slug\n updateSlug(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n this.updateDraft('slug', event.target.value);\n }\n }\n //#endregion\n\n //#region methods / edit\n edit(): void {\n if (this.mode() !== 'view' || this.busy() || this.dialogOpen()) {\n return;\n }\n if (!this.requirePost()) {\n return;\n }\n this.error.set('');\n this.mode.set('edit');\n }\n //#endregion\n\n //#region methods / cancel\n cancel(): void {\n if (this.busy() || this.dialogOpen()) {\n return;\n }\n this.setPost(this.currentPost());\n this.error.set('');\n if (this.editing()) {\n this.mode.set('view');\n }\n this.cancelled.emit();\n }\n //#endregion\n\n //#region methods / save\n save(): void {\n if (this.busy() || this.dialogOpen() || !this.editing()) {\n return;\n }\n if (!this.canSave()) {\n this.error.set(this.t.gettext('A title and slug are required.'));\n return;\n }\n if (this.mode() === 'add') {\n this.persist(\n this.api.createContent({\n ...this.draft(),\n relatedPostIds: this.relatedPosts().map(post => post.id),\n permissionIds: this.permissions().map(permission => permission.id),\n applyPermissionsToRelatedPosts: this.applyPermissionsToRelatedPosts(),\n applicationHook: this.useAsApplicationHook()\n ? this.selectedApplicationHook()\n : null,\n }),\n );\n } else {\n const post = this.requirePost();\n if (post) {\n this.persist(this.api.updateContent(post.id, this.updateInput(post)));\n }\n }\n }\n //#endregion\n\n //#region methods / publish\n publish(): void {\n if (\n this.busy() ||\n this.dialogOpen() ||\n !this.canPublish() ||\n this.mode() === 'view-clean' ||\n this.mode() === 'add'\n ) {\n return;\n }\n if (this.editing() && !this.canSave()) {\n this.error.set(this.t.gettext('A title and slug are required.'));\n return;\n }\n const post = this.requirePost();\n if (post) {\n this.persist(\n this.api.updateContent(post.id, {\n ...(this.editing()\n ? this.updateInput(post)\n : { expectedVersion: post.version }),\n status: 'published',\n publishedAt: new Date(),\n }),\n );\n }\n }\n //#endregion\n\n //#region methods / unpublish\n unpublish(): void {\n const post = this.currentPost();\n if (\n !post ||\n post.status !== 'published' ||\n this.busy() ||\n this.dialogOpen() ||\n this.mode() === 'view-clean' ||\n this.mode() === 'add'\n ) {\n return;\n }\n this.persist(\n this.api.updateContent(post.id, {\n expectedVersion: post.version,\n status: 'draft',\n }),\n );\n }\n //#endregion\n\n //#region methods / revert\n revert(): void {\n const post = this.requirePost();\n if (\n !post ||\n this.busy() ||\n this.dialogOpen() ||\n this.mode() === 'view-clean'\n ) {\n return;\n }\n this.dialogOpen.set(true);\n const ref = this.dialog.open<\n TaonCmsRevisionChooserComponent,\n TaonCmsContentEntity,\n TaonCmsContentEntity\n >(TaonCmsRevisionChooserComponent, {\n data: post,\n width: '560px',\n maxWidth: '95vw',\n disableClose: true,\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(restored => {\n this.dialogOpen.set(false);\n if (restored) {\n this.acceptPost(restored);\n }\n });\n }\n //#endregion\n\n //#region methods / delete\n delete(): void {\n const post = this.requirePost();\n if (\n !post ||\n this.busy() ||\n this.dialogOpen() ||\n this.mode() === 'view-clean'\n ) {\n return;\n }\n this.dialogOpen.set(true);\n const ref = this.dialog.open(TaonConfirmDialogComponent, {\n data: {\n title: this.t.gettext('Delete post?'),\n message: this.t.gettext(\n 'This archives the post. It can be restored from its revisions.',\n ),\n confirmText: this.t.gettext('Delete'),\n },\n });\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(confirmed => {\n this.dialogOpen.set(false);\n if (confirmed) {\n this.persist(this.api.deleteContent(post.id, post.version), true);\n }\n });\n }\n //#endregion\n\n //#region methods / duplicate\n duplicate(): void {\n if (this.busy() || this.dialogOpen() || this.mode() === 'view-clean') {\n return;\n }\n const post = this.requirePost();\n if (!post) {\n return;\n }\n this.busy.set(true);\n this.error.set('');\n this.api\n .duplicateContent(post.id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.busy.set(false)),\n )\n .subscribe({\n next: duplicate => this.duplicated.emit(duplicate),\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to duplicate post', error);\n this.error.set(\n this.t.gettext(\n 'The post could not be duplicated. Please try again.',\n ),\n );\n },\n });\n }\n //#endregion\n\n //#region methods / update input\n private updateInput(post: TaonCmsContentEntity): TaonCmsUpdateContent {\n return {\n ...this.draft(),\n relatedPostIds: this.relatedPosts().map(related => related.id),\n ...(this.permissionSource()\n ? {}\n : {\n permissionIds: this.permissions().map(permission => permission.id),\n }),\n applyPermissionsToRelatedPosts: this.applyPermissionsToRelatedPosts(),\n applicationHook: this.useAsApplicationHook()\n ? this.selectedApplicationHook()\n : null,\n expectedVersion: post.version,\n };\n }\n //#endregion\n\n //#region methods / require post\n private requirePost(): TaonCmsContentEntity | null {\n const post = this.currentPost();\n if (!post) {\n this.error.set(this.t.gettext('No post is loaded.'));\n }\n return post;\n }\n //#endregion\n\n //#region methods / set post\n private setPost(post: TaonCmsContentEntity | null): void {\n this.editorSession += 1;\n this.taxonomyLoad?.unsubscribe();\n this.taxonomyLoading.set(false);\n this.taxonomyError.set('');\n this.releaseThumbnailPreview();\n this.stagedThumbnail.set(null);\n this.tagSearch.set('');\n this.relatedPostsLoad?.unsubscribe();\n this.applicationHooksLoad?.unsubscribe();\n this.permissionsLoad?.unsubscribe();\n this.relatedPostsLoading.set(false);\n this.relatedPostsError.set('');\n this.applicationHooksLoading.set(false);\n this.applicationHooksError.set('');\n this.permissionsLoading.set(false);\n this.permissionsError.set('');\n this.uploadedMediaPreview.set(null);\n this.mediaPreviewSignature = '';\n this.mediaPreviewRequest += 1;\n this.currentPost.set(post);\n this.relatedPosts.set(post?.relatedPosts ?? []);\n this.permissions.set(post?.permissions ?? []);\n this.permissionSource.set(null);\n this.applyPermissionsToRelatedPosts.set(\n post?.applyPermissionsToRelatedPosts ?? false,\n );\n this.selectedPermissionId.set(null);\n this.setApplicationHookSelection(post, this.applicationHooks());\n this.draft.set({\n type: post?.type ?? TaonCmsContentType.Normal,\n title: post?.title ?? '',\n slug: post?.slug ?? '',\n excerpt: post?.excerpt ?? '',\n body: post?.body ?? '',\n videoKey: post?.videoKey ?? null,\n audioKey: post?.audioKey ?? null,\n attachmentKey: post?.attachmentKey ?? null,\n thumbnailKey: post?.thumbnailKey ?? null,\n categoryId: post?.categoryId ?? null,\n tagIds: [],\n });\n if (\n post &&\n post.relatedPosts === undefined &&\n this.mode() !== 'view-clean'\n ) {\n this.loadRelatedPosts();\n }\n if (post && this.mode() !== 'view-clean') {\n this.loadPermissions();\n }\n if (this.editing()) {\n this.loadTaxonomy();\n }\n }\n //#endregion\n\n private setApplicationHookSelection(\n post: TaonCmsContentEntity | null,\n hooks: TaonCmsApplicationHookEntity[],\n ): void {\n const assignedHook =\n post?.applicationHook !== undefined\n ? post.applicationHook?.hook\n : hooks.find(applicationHook => applicationHook.contentId === post?.id)\n ?.hook;\n this.useAsApplicationHook.set(!!assignedHook);\n this.selectedApplicationHook.set(assignedHook ?? null);\n }\n\n //#region methods / accept post\n private acceptPost(post: TaonCmsContentEntity): void {\n this.setPost(post);\n this.error.set('');\n this.mode.set('view');\n this.changed.emit(post);\n }\n //#endregion\n\n //#region methods / persist\n private persist(\n request: Observable<TaonCmsContentEntity>,\n deleting = false,\n ): void {\n if (this.busy() || this.dialogOpen() || this.mode() === 'view-clean') {\n return;\n }\n this.busy.set(true);\n this.error.set('');\n request\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.busy.set(false)),\n )\n .subscribe({\n next: post => {\n this.acceptPost(post);\n if (deleting) {\n this.deleted.emit(post);\n }\n },\n error: (error: unknown) => {\n console.error('[taon-cms-post] Unable to save post', error);\n this.error.set(\n this.t.gettext(\n 'The post could not be saved. Check the slug and your connection. If another user changed it, close and reopen the post before retrying.',\n ),\n );\n },\n });\n }\n //#endregion\n}","@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{\n mode() === 'add' ? t.gettext('New draft') : currentPost()?.status\n }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !canSave()\"\n (click)=\"save()\">\n {{ mode() === 'add' ? t.gettext('Add') : t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n } @else if (currentPost()) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"edit()\">\n <mat-icon>edit</mat-icon> {{ t.gettext('Edit') }}\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\"\n (click)=\"publish()\">\n {{ t.gettext('Publish') }}\n </button>\n } @else {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"unpublish()\">\n {{ t.gettext('Unpublish') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"revert()\">\n <mat-icon>history</mat-icon> {{ t.gettext('Revert') }}\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"delete()\">\n <mat-icon>delete</mat-icon> {{ t.gettext('Delete') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"duplicate()\">\n <mat-icon>content_copy</mat-icon> {{ t.gettext('Duplicate') }}\n </button>\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{\n uploading()\n ? t.gettext('Uploading... ') + uploadProgress() + '%'\n : t.gettext('Saving...')\n }}</span>\n }\n </header>\n @if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n }\n}\n\n<article\n class=\"post-article\"\n [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n [attr.aria-label]=\"t.gettext('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\">{{\n type.label\n }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post title')\"\n aria-required=\"true\"\n [attr.data-placeholder]=\"placeholderTitle()\"\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 [attr.aria-label]=\"t.gettext('Post excerpt')\"\n aria-multiline=\"true\"\n [attr.data-placeholder]=\"placeholderShortIntro()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <section class=\"post-content-editor\">\n <mat-tab-group\n [selectedIndex]=\"contentTab()\"\n (selectedIndexChange)=\"contentTab.set($event)\"\n [preserveContent]=\"true\"\n animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('Editor')\">\n @if (contentEditor(); as editor) {\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"contentToolbar\"\n [disabled]=\"busy() || dialogOpen()\" />\n <ngx-editor\n [editor]=\"editor\"\n [placeholder]=\"placeholderTellYourStory()\" />\n }\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Raw')\">\n <textarea\n #rawContent\n class=\"raw-content\"\n [attr.aria-label]=\"t.gettext('Post body HTML')\"\n [value]=\"draft().body\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateRawContent($event)\"\n spellcheck=\"false\"></textarea>\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Preview')\">\n <div\n class=\"post-body content-preview\"\n [innerHTML]=\"resolvedBody()\"></div>\n </mat-tab>\n </mat-tab-group>\n @if (contentTab() !== 2) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !contentEditor()\"\n [matMenuTriggerFor]=\"variableMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ t.gettext('Insert variable') }}\n </button>\n }\n <mat-menu #variableMenu=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"siteVariableMenu\">\n {{ t.gettext('Site') }}\n </button>\n <button mat-menu-item [matMenuTriggerFor]=\"postVariableMenu\">\n {{ t.gettext('Post') }}\n </button>\n </mat-menu>\n <mat-menu #siteVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('frontendUrl')\">\n {{ t.gettext('Frontend URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('site.name')\">\n {{ t.gettext('Site name') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('currentYear')\">\n {{ t.gettext('Current year') }}\n </button>\n </mat-menu>\n <mat-menu #postVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('post.title')\">\n {{ t.gettext('Post title') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.url')\">\n {{ t.gettext('Post URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.id')\">\n {{ t.gettext('Post ID') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.thumbnailUrl')\">\n {{ t.gettext('Post Thumbnail URL') }}\n </button>\n </mat-menu>\n </section>\n <label class=\"slug-field\">\n <span>{{ t.gettext('URL slug') }}</span>\n <input\n [attr.aria-label]=\"t.gettext('URL slug')\"\n [value]=\"draft().slug\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateSlug($event)\"\n [placeholder]=\"t.gettext('my-post')\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section\n class=\"media-attachment\"\n aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (uploading()) {\n <mat-progress-bar\n mode=\"determinate\"\n [value]=\"uploadProgress()\"\n [attr.aria-label]=\"t.gettext('Media upload progress')\" />\n }\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media preview...') }}</p>\n }\n @if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n }\n @if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ t.gettext('Replace') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeMedia()\">\n {{ t.gettext('Remove') }}\n </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\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ media.uploadLabel }}\n </button>\n }\n </section>\n }\n <section\n class=\"post-thumbnail\"\n aria-labelledby=\"thumbnail-heading\">\n <h2 id=\"thumbnail-heading\">{{ t.gettext('Thumbnail') }}</h2>\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n } @else {\n <p>{{ t.gettext('No thumbnail selected.') }}</p>\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <input\n #thumbnailInput\n hidden\n type=\"file\"\n accept=\"image/*\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"thumbnailSelected($event)\" />\n <div class=\"buttons\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"thumbnailInput.click()\">\n {{ t.gettext('Upload Thumbnail') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"applyDefaultThumbnail()\">\n {{ t.gettext('Apply Default Placeholder') }}\n </button>\n </div>\n </section>\n <section\n class=\"post-taxonomy\"\n aria-labelledby=\"category-heading\">\n <h2 id=\"category-heading\">{{ t.gettext('Category and Tags') }}</h2>\n @if (taxonomyLoading()) {\n <p role=\"status\">{{ t.gettext('Loading categories and tags...') }}</p>\n }\n @if (taxonomyError()) {\n <p role=\"alert\">{{ taxonomyError() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"loadTaxonomy()\">\n {{ t.gettext('Try again') }}\n </button>\n }\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Category') }}</mat-label>\n <mat-select\n [value]=\"draft().categoryId\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"updateDraft('categoryId', $event.value)\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of categories(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <h3>{{ t.gettext('Tags') }}</h3>\n <mat-chip-set [attr.aria-label]=\"t.gettext('Selected tags')\">\n @for (tag of selectedTags(); track tag.id) {\n <mat-chip\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (removed)=\"removeTag(tag.id)\">\n {{ tag.name }}\n <button\n matChipRemove\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n [attr.aria-label]=\"\n t.gettext('Remove tag [[ name ]]', { name: tag.name })\n \">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n }\n </mat-chip-set>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Search tags') }}</mat-label>\n <input\n matInput\n [value]=\"tagSearch()\"\n (input)=\"filterTags($event)\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Add tag') }}</mat-label>\n <mat-select\n [value]=\"null\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"addTag($event.value)\">\n @for (tag of filteredTags(); track tag.id) {\n <mat-option [value]=\"tag.id\">{{ tag.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </section>\n <section\n class=\"related-posts\"\n aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">{{ t.gettext('Related posts') }}</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading related posts...') }}</p>\n } @else if (relatedPostsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ relatedPostsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadRelatedPosts()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove related post [[ title ]]', {\n title: post.title,\n })\n \"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No related posts yet.') }}</li>\n }\n </ul>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add related post') }}\n </button>\n }\n </section>\n\n @if (!mediaAttachment()) {\n <section\n class=\"application-hook\"\n aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">\n {{ t.gettext('Application Hook') }}\n </h2>\n @if (applicationHooksLoading()) {\n <p role=\"status\">{{ t.gettext('Loading application hooks...') }}</p>\n } @else if (applicationHooksError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ applicationHooksError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadApplicationHooks()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-checkbox\n [checked]=\"useAsApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"setUseAsApplicationHook($event.checked)\">\n {{ t.gettext('Use as application hook') }}\n </mat-checkbox>\n @if (useAsApplicationHook()) {\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Application Hook') }}</mat-label>\n <mat-select\n [value]=\"selectedApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (selectionChange)=\"selectedApplicationHook.set($event.value)\">\n @for (\n applicationHook of applicationHooks();\n track applicationHook.id\n ) {\n <mat-option\n [value]=\"applicationHook.hook\"\n [disabled]=\"\n applicationHookInUseByAnotherPost(applicationHook)\n \">\n {{ applicationHookLabel(applicationHook.hook) }}\n @if (applicationHookInUseByAnotherPost(applicationHook)) {\n {{\n t.gettext('(in use by post # [[ postId ]])', {\n postId: applicationHook.contentId,\n })\n }}\n }\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No application hooks configured')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n }\n </section>\n }\n <section\n class=\"post-permissions\"\n aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">\n {{ t.gettext('Allow Read only with Permissions') }}\n </h2>\n @if (permissionSource(); as source) {\n <p role=\"note\">\n {{\n t.gettext(\n 'Permissions are inherited from # [[ postId ]] - [[ title ]]. Edit the source post to change them.',\n { postId: source.id, title: source.title }\n )\n }}\n </p>\n }\n @if (permissionsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading assigned permissions...') }}</p>\n } @else if (permissionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadPermissions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove permission [[ name ]]', {\n name: permission.name,\n })\n \"\n [disabled]=\"busy() || dialogOpen() || !!permissionSource()\"\n (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No permissions assigned.') }}</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionOptionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (click)=\"loadPermissionOptions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field\n class=\"w-full\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Permission') }}</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n permissionOptionsLoading() ||\n !!permissionSource()\n \"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (\n permission of availablePermissions();\n track permission.id\n ) {\n <mat-option [value]=\"permission.id\"\n >{{ permission.name }} ({{ permission.code }})</mat-option\n >\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No permissions available')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n !selectedPermissionId() ||\n !!permissionSource()\n \"\n (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Assign permission') }}\n </button>\n </div>\n }\n }\n @if (!permissionSource()) {\n <mat-checkbox\n [checked]=\"applyPermissionsToRelatedPosts()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"applyPermissionsToRelatedPosts.set($event.checked)\">\n {{ t.gettext('Apply permissions to related posts') }}\n </mat-checkbox>\n }\n </section>\n } @else if (currentPost(); as post) {\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div\n class=\"post-body\"\n [innerHTML]=\"resolvedBody()\"></div>\n @if (mediaAttachment(); as media) {\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media...') }}</p>\n } @else if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n } @else if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n }\n }\n } @else {\n <p role=\"status\">{{ t.gettext('No post is loaded.') }}</p>\n }\n</article>\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql-prod';\n//#endregion\n\nexport const TaonCmsPostRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-cms-post.component').then(m => m.TaonCmsPostComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonCmsPostRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonCmsPostRoutes;","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { map } from 'rxjs';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsPostComponent } from '../taon-cms-post/taon-cms-post.component';\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts', {\"src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-cms-post-details-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, MatButtonModule, RouterLink, TaonCmsPostComponent],\n template: `\n @if (page$ | async; as page) {\n <a\n mat-button\n routerLink=\"../\"\n >{{ t.gettext('Back to Posts') }}</a\n >\n <taon-cms-post\n [post]=\"page.post\"\n [mode]=\"page.create ? 'add' : 'view'\"\n (changed)=\"onChanged($event, page.create)\"\n (duplicated)=\"openPost($event)\"\n (cancelled)=\"onCancelled(page.create)\" />\n }\n `,\n})\nexport class TaonCmsPostDetailsPageComponent {\n readonly t = t.for(this);\n\n private readonly route = inject(ActivatedRoute);\n\n private readonly router = inject(Router);\n\n readonly page$ = this.route.data.pipe(\n map(data => ({\n create: data['createPost'] === true,\n post: (data['post'] as TaonCmsContentEntity | undefined) ?? null,\n })),\n );\n\n onChanged(post: TaonCmsContentEntity, create: boolean): void {\n if (create) {\n this.openPost(post);\n }\n }\n\n openPost(post: TaonCmsContentEntity): void {\n void this.router.navigate(['../', post.id], { relativeTo: this.route });\n }\n\n onCancelled(create: boolean): void {\n if (create) {\n void this.router.navigate(['../'], { relativeTo: this.route });\n }\n }\n}","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewChild,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql-prod';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\nimport { TaonCmsPostTableActions } from './taon-cms-post-table-actions.directive';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts', {\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'app-taon-cms-posts-backoffice',\n templateUrl: './taon-cms-posts-backoffice.component.html',\n styleUrls: ['./taon-cms-posts-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, TaonDatatableComponent],\n providers: [TaonCmsContentApiService],\n})\nexport class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {\n readonly t = t.for(this);\n\n @ViewChild(TaonDatatableComponent)\n readonly datatable!: TaonDatatableComponent;\n\n readonly posts = signal<TaonCmsContentEntity[]>([]);\n\n readonly loading = signal(false);\n\n public get crud() {\n return this.taonCmsContentApiService.crudController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'id', sortable: true },\n { header: this.t.gettext('Title'), field: 'title', sortable: true },\n { header: this.t.gettext('Status'), field: 'status', sortable: true },\n this.actionsColumn,\n ];\n\n reload(): void {\n this.datatable.reload();\n }\n\n ngAfterViewInit(): void {\n this.reload();\n }\n}","<h1>{{ t.gettext('CMS posts') }}</h1>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('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","//namespace TaonCmsPostsBackofficeModels\n\n//end of namespace TaonCmsPostsBackofficeModels\n","//#region imports\nimport { inject } from '@angular/core';\nimport { Routes } from '@angular/router';\nimport { ResolveFn } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql-prod';\nimport { Taon__NS____FILE_RELATIVE_PATH, Taon__NS__asset, Taon__NS__assetsFrom, Taon__NS__assetsListFrom, Taon__NS__createContext, Taon__NS__createContextTemplate, Taon__NS__error, Taon__NS__getResponseValue, Taon__NS__isBrowser, Taon__NS__isElectron, Taon__NS__isNode, Taon__NS__isWebSQL, Taon__NS__LANG_IMPORT_MAP, Taon__NS__removeLoader, Taon__NS__Response, Taon__NS__ResponseHtml, Taon__NS__StartParams } from 'taon/websql-prod';\n\nimport { TaonCmsContentApiService } from '../../taon-cms-content/taon-cms-content-api.service';\nimport type { TaonCmsContentEntity } from '../../taon-cms-content/taon-cms-content.entity';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts', {\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data')).default},\"src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts\":{\"en-US\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data')).default}} as any);\n\nconst resolvePost: ResolveFn<TaonCmsContentEntity> = async route => {\n const id = Number(route.paramMap.get('id'));\n if (!Number.isSafeInteger(id) || id <= 0) {\n throw new Error(t.gettext('Invalid Post ID'));\n }\n const taonCmsContentApiService = inject(TaonCmsContentApiService);\n const post = await taonCmsContentApiService.getById(id);\n if (!post) {\n throw new Error(t.gettext('Post not found'));\n }\n return post;\n};\n\nexport const TaonCmsPostsBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-cms-posts-backoffice.component').then(\n m => m.TaonCmsPostsBackofficeComponent,\n ),\n },\n {\n path: 'new',\n data: { hideInNavigation: true, createPost: true },\n loadComponent: () =>\n import('../taon-cms-post-details-page/taon-cms-post-details-page.component').then(\n m => m.TaonCmsPostDetailsPageComponent,\n ),\n },\n {\n path: ':id',\n data: { hideInNavigation: true },\n providers: [TaonCmsContentApiService],\n resolve: { post: resolvePost },\n loadComponent: () =>\n import('../taon-cms-post-details-page/taon-cms-post-details-page.component').then(\n m => m.TaonCmsPostDetailsPageComponent,\n ),\n },\n];\n\n/**\n * By default exporting TaonCmsPostsBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonCmsPostsBackofficeRoutes;","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './start-cli'; \nexport * from './taon-cms-application-hooks'; \nexport * from './taon-cms.abstract.context'; \nexport * from './taon-cms-application-hook/taon-cms-application-hook.entity'; \nexport * from './taon-cms-assets-backoffice/taon-cms-asset-preview.component'; // @browser\nexport * from './taon-cms-assets-backoffice/taon-cms-assets-backoffice.component'; // @browser\nexport * from './taon-cms-assets-backoffice/taon-cms-assets-backoffice.routes'; // @browser\nexport * from './taon-cms-backoffice/taon-cms-backoffice.component'; // @browser\nexport * from './taon-cms-backoffice/taon-cms-backoffice.models'; \nexport * from './taon-cms-backoffice/taon-cms-backoffice.routes'; // @browser\nexport * from './taon-cms-category/taon-cms-category-api.service'; // @browser\nexport * from './taon-cms-category/taon-cms-category.abstract.context'; \nexport * from './taon-cms-category/taon-cms-category.constants'; \nexport * from './taon-cms-category/taon-cms-category.controller'; \nexport * from './taon-cms-category/taon-cms-category.entity'; \nexport * from './taon-cms-category/taon-cms-category.middleware'; \nexport * from './taon-cms-category/taon-cms-category.models'; \nexport * from './taon-cms-category/taon-cms-category.provider'; \nexport * from './taon-cms-category/taon-cms-category.repository'; \nexport * from './taon-cms-category/taon-cms-category.subscriber'; \nexport * from './taon-cms-category/taon-cms-category.utils'; \nexport * from './taon-cms-category/taon-cms-taxonomy.validation'; \nexport * from './taon-cms-comment/taon-cms-comment-api.service'; // @browser\nexport * from './taon-cms-comment/taon-cms-comment.abstract.context'; \nexport * from './taon-cms-comment/taon-cms-comment.constants'; \nexport * from './taon-cms-comment/taon-cms-comment.controller'; \nexport * from './taon-cms-comment/taon-cms-comment.entity'; \nexport * from './taon-cms-comment/taon-cms-comment.middleware'; \nexport * from './taon-cms-comment/taon-cms-comment.models'; \nexport * from './taon-cms-comment/taon-cms-comment.provider'; \nexport * from './taon-cms-comment/taon-cms-comment.repository'; \nexport * from './taon-cms-comment/taon-cms-comment.subscriber'; \nexport * from './taon-cms-comment/taon-cms-comment.utils'; \nexport * from './taon-cms-content/taon-cms-content-api.service'; // @browser\nexport * from './taon-cms-content/taon-cms-content-storage.controller'; \nexport * from './taon-cms-content/taon-cms-content.abstract.context'; \nexport * from './taon-cms-content/taon-cms-content.config.service'; // @browser\nexport * from './taon-cms-content/taon-cms-content.constants'; \nexport * from './taon-cms-content/taon-cms-content.controller'; \nexport * from './taon-cms-content/taon-cms-content.entity'; \nexport * from './taon-cms-content/taon-cms-content.middleware'; \nexport * from './taon-cms-content/taon-cms-content.models'; \nexport * from './taon-cms-content/taon-cms-content.provider'; \nexport * from './taon-cms-content/taon-cms-content.repository'; \nexport * from './taon-cms-content/taon-cms-content.subscriber'; \nexport * from './taon-cms-content/taon-cms-content.utils'; \nexport * from './taon-cms-content/taon-cms-content.validation'; \nexport * from './taon-cms-content/taon-cms-template-variables'; \nexport * from './taon-cms-content/taon-cms-upload-progress'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset-api.service'; // @browser\nexport * from './taon-cms-content-asset/taon-cms-content-asset.abstract.context'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.constants'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.controller'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.entity'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.middleware'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.models'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.provider'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.repository'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.subscriber'; \nexport * from './taon-cms-content-asset/taon-cms-content-asset.utils'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission-api.service'; // @browser\nexport * from './taon-cms-content-permission/taon-cms-content-permission.abstract.context'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.constants'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.controller'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.entity'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.middleware'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.models'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.provider'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.repository'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.subscriber'; \nexport * from './taon-cms-content-permission/taon-cms-content-permission.utils'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision-api.service'; // @browser\nexport * from './taon-cms-content-revision/taon-cms-content-revision.abstract.context'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.constants'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.controller'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.entity'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.middleware'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.models'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.provider'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.repository'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.subscriber'; \nexport * from './taon-cms-content-revision/taon-cms-content-revision.utils'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag-api.service'; // @browser\nexport * from './taon-cms-content-tag/taon-cms-content-tag.abstract.context'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.constants'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.controller'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.entity'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.middleware'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.models'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.provider'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.repository'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.subscriber'; \nexport * from './taon-cms-content-tag/taon-cms-content-tag.utils'; \nexport * from './taon-cms-tag/taon-cms-tag-api.service'; // @browser\nexport * from './taon-cms-tag/taon-cms-tag.abstract.context'; \nexport * from './taon-cms-tag/taon-cms-tag.constants'; \nexport * from './taon-cms-tag/taon-cms-tag.controller'; \nexport * from './taon-cms-tag/taon-cms-tag.entity'; \nexport * from './taon-cms-tag/taon-cms-tag.middleware'; \nexport * from './taon-cms-tag/taon-cms-tag.models'; \nexport * from './taon-cms-tag/taon-cms-tag.provider'; \nexport * from './taon-cms-tag/taon-cms-tag.repository'; \nexport * from './taon-cms-tag/taon-cms-tag.subscriber'; \nexport * from './taon-cms-tag/taon-cms-tag.utils'; \nexport * from './taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component'; // @browser\nexport * from './taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.models'; \nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.routes'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component'; // @browser\nexport * from './taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-editable.directive'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-post.component'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-post.models'; \nexport * from './taon-posts/taon-cms-post/taon-cms-post.routes'; // @browser\nexport * from './taon-posts/taon-cms-post/taon-cms-thumbnail'; \nexport * from './taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component'; // @browser\nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive'; // @browser\nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component'; // @browser\nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.models'; \nexport * from './taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes'; // @browser\nexport * from './taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component'; // @browser\nexport * from './taon-posts/taon-related-post-chooser/taon-related-post-chooser.component'; // @browser","export * from './migrations';\n/* */\nexport * from './index._auto-generated_';\nexport * from './taon-cms-application-hooks';\n/* */ \nexport default {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["t","map","adminLazyRouteBase","i1","i2","i3","i4","i5","i11","i12"],"mappings":"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"}
|