@fc3/mmcadi 0.1.20 → 0.1.23
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/bin/lint +12 -0
- package/bin/test-one +32 -0
- package/dist/.last-compile-time +1 -1
- package/dist/.last-publish-time +1 -1
- package/dist/client.js +264 -47
- package/dist/src/client/enum/page-type.d.ts +5 -1
- package/dist/src/client/enum/page-type.js +4 -0
- package/dist/src/client/enum/page-type.js.map +1 -1
- package/dist/src/client/factory/page.js +9 -1
- package/dist/src/client/factory/page.js.map +1 -1
- package/dist/src/client/page/confirm-hide-block.d.ts +7 -0
- package/dist/src/client/page/confirm-hide-block.js +28 -0
- package/dist/src/client/page/confirm-hide-block.js.map +1 -0
- package/dist/src/client/page/history.d.ts +16 -0
- package/dist/src/client/page/history.js +126 -0
- package/dist/src/client/page/history.js.map +1 -0
- package/dist/src/client/page/role.d.ts +5 -0
- package/dist/src/client/page/role.js +12 -0
- package/dist/src/client/page/role.js.map +1 -0
- package/dist/src/client/page/select-block-destination.d.ts +5 -0
- package/dist/src/client/page/select-block-destination.js +12 -0
- package/dist/src/client/page/select-block-destination.js.map +1 -0
- package/dist/src/client/page/view-custom.d.ts +3 -1
- package/dist/src/client/page/view-custom.js +60 -26
- package/dist/src/client/page/view-custom.js.map +1 -1
- package/dist/src/client/utility/get-block-activation-href.d.ts +2 -0
- package/dist/src/client/utility/get-block-activation-href.js +25 -0
- package/dist/src/client/utility/get-block-activation-href.js.map +1 -0
- package/dist/src/common/builder/block/folder.d.ts +2 -1
- package/dist/src/common/builder/block/folder.js.map +1 -1
- package/dist/src/common/builder/block/header.d.ts +5 -1
- package/dist/src/common/builder/block/header.js +16 -2
- package/dist/src/common/builder/block/header.js.map +1 -1
- package/dist/src/common/builder/block/parameter.d.ts +3 -0
- package/dist/src/common/builder/block/parameter.js +19 -0
- package/dist/src/common/builder/block/parameter.js.map +1 -0
- package/dist/src/constant/role/creator.d.ts +3 -0
- package/dist/src/constant/role/creator.js +17 -0
- package/dist/src/constant/role/creator.js.map +1 -0
- package/dist/src/constant/role/public.d.ts +3 -0
- package/dist/src/constant/role/public.js +17 -0
- package/dist/src/constant/role/public.js.map +1 -0
- package/dist/src/constant/role/unknown.d.ts +3 -0
- package/dist/src/constant/role/unknown.js +17 -0
- package/dist/src/constant/role/unknown.js.map +1 -0
- package/dist/src/enum/action-type.d.ts +2 -0
- package/dist/src/enum/action-type.js +2 -0
- package/dist/src/enum/action-type.js.map +1 -1
- package/dist/src/enum/block-type.d.ts +2 -1
- package/dist/src/enum/block-type.js +1 -0
- package/dist/src/enum/block-type.js.map +1 -1
- package/dist/src/enum/default-role.d.ts +2 -1
- package/dist/src/enum/default-role.js +1 -0
- package/dist/src/enum/default-role.js.map +1 -1
- package/dist/src/enum/emoji.d.ts +2 -0
- package/dist/src/enum/emoji.js +2 -0
- package/dist/src/enum/emoji.js.map +1 -1
- package/dist/src/enum/tool-type.d.ts +1 -0
- package/dist/src/enum/tool-type.js +1 -0
- package/dist/src/enum/tool-type.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/interface/route.d.ts +2 -1
- package/dist/src/lib/environment-mocker/index.d.ts +18 -0
- package/dist/src/lib/environment-mocker/index.js +40 -0
- package/dist/src/lib/environment-mocker/index.js.map +1 -0
- package/dist/src/lib/grammar/index.d.ts +3 -0
- package/dist/src/lib/grammar/index.js +7 -1
- package/dist/src/lib/grammar/index.js.map +1 -1
- package/dist/src/lib/grammar/utility/pluralize.d.ts +2 -0
- package/dist/src/lib/grammar/utility/pluralize.js +12 -0
- package/dist/src/lib/grammar/utility/pluralize.js.map +1 -0
- package/dist/src/lib/grammar/utility/singularize-or-pluralize.d.ts +2 -0
- package/dist/src/lib/grammar/utility/singularize-or-pluralize.js +12 -0
- package/dist/src/lib/grammar/utility/singularize-or-pluralize.js.map +1 -0
- package/dist/src/lib/grammar/utility/singularize.d.ts +2 -0
- package/dist/src/lib/grammar/utility/singularize.js +12 -0
- package/dist/src/lib/grammar/utility/singularize.js.map +1 -0
- package/dist/src/lib/log-capturer/index.d.ts +2 -0
- package/dist/src/lib/log-capturer/index.js +8 -0
- package/dist/src/lib/log-capturer/index.js.map +1 -0
- package/dist/src/lib/log-capturer/log-capturer.d.ts +19 -0
- package/dist/src/lib/log-capturer/log-capturer.js +39 -0
- package/dist/src/lib/log-capturer/log-capturer.js.map +1 -0
- package/dist/src/lib/server/http/endpoint.js +1 -1
- package/dist/src/lib/server/http/endpoint.js.map +1 -1
- package/dist/src/lib/string/create-slug.js +2 -1
- package/dist/src/lib/string/create-slug.js.map +1 -1
- package/dist/src/server/endpoint/abstract-page.d.ts +1 -1
- package/dist/src/server/endpoint/abstract-page.js +21 -3
- package/dist/src/server/endpoint/abstract-page.js.map +1 -1
- package/dist/src/server/endpoint/account/get.d.ts +14 -0
- package/dist/src/server/endpoint/account/get.js +34 -0
- package/dist/src/server/endpoint/account/get.js.map +1 -0
- package/dist/src/server/endpoint/action/create.d.ts +3 -1
- package/dist/src/server/endpoint/action/create.js +63 -52
- package/dist/src/server/endpoint/action/create.js.map +1 -1
- package/dist/src/server/endpoint/action/get.d.ts +3 -1
- package/dist/src/server/endpoint/action/get.js +47 -1
- package/dist/src/server/endpoint/action/get.js.map +1 -1
- package/dist/src/server/endpoint/history.d.ts +13 -0
- package/dist/src/server/endpoint/history.js +61 -0
- package/dist/src/server/endpoint/history.js.map +1 -0
- package/dist/src/server/endpoint/login.d.ts +1 -1
- package/dist/src/server/endpoint/login.js +1 -1
- package/dist/src/server/endpoint/login.js.map +1 -1
- package/dist/src/server/endpoint/logout.js +7 -2
- package/dist/src/server/endpoint/logout.js.map +1 -1
- package/dist/src/server/endpoint/month.d.ts +1 -1
- package/dist/src/server/endpoint/month.js +1 -1
- package/dist/src/server/endpoint/month.js.map +1 -1
- package/dist/src/server/endpoint/role/get.d.ts +14 -0
- package/dist/src/server/endpoint/role/get.js +43 -0
- package/dist/src/server/endpoint/role/get.js.map +1 -0
- package/dist/src/server/endpoint/settings/get.d.ts +1 -1
- package/dist/src/server/endpoint/settings/get.js +1 -1
- package/dist/src/server/endpoint/settings/get.js.map +1 -1
- package/dist/src/server/endpoint/week.d.ts +1 -1
- package/dist/src/server/endpoint/week.js +1 -1
- package/dist/src/server/endpoint/week.js.map +1 -1
- package/dist/src/server/endpoint/year.d.ts +1 -1
- package/dist/src/server/endpoint/year.js +1 -1
- package/dist/src/server/endpoint/year.js.map +1 -1
- package/dist/src/server/enum/custom-page-type.d.ts +3 -1
- package/dist/src/server/enum/custom-page-type.js +2 -0
- package/dist/src/server/enum/custom-page-type.js.map +1 -1
- package/dist/src/server/factory/block-result-serializer.d.ts +1 -1
- package/dist/src/server/factory/block-result-serializer.js +16 -13
- package/dist/src/server/factory/block-result-serializer.js.map +1 -1
- package/dist/src/server/factory/block-serializer.d.ts +15 -0
- package/dist/src/server/factory/block-serializer.js +80 -0
- package/dist/src/server/factory/block-serializer.js.map +1 -0
- package/dist/src/server/middleware/error-handler.js +21 -6
- package/dist/src/server/middleware/error-handler.js.map +1 -1
- package/dist/src/server/operation/add-block.js +1 -0
- package/dist/src/server/operation/add-block.js.map +1 -1
- package/dist/src/server/operation/delete-block.d.ts +5 -3
- package/dist/src/server/operation/delete-block.js +30 -9
- package/dist/src/server/operation/delete-block.js.map +1 -1
- package/dist/src/server/operation/destroy-session.js +13 -1
- package/dist/src/server/operation/destroy-session.js.map +1 -1
- package/dist/src/server/operation/find-account.d.ts +1 -0
- package/dist/src/server/operation/find-account.js +12 -3
- package/dist/src/server/operation/find-account.js.map +1 -1
- package/dist/src/server/operation/hide-block.d.ts +14 -0
- package/dist/src/server/operation/hide-block.js +55 -0
- package/dist/src/server/operation/hide-block.js.map +1 -0
- package/dist/src/server/operation/load-account.js +5 -8
- package/dist/src/server/operation/load-account.js.map +1 -1
- package/dist/src/server/operation/load-page.d.ts +7 -4
- package/dist/src/server/operation/load-page.js +251 -74
- package/dist/src/server/operation/load-page.js.map +1 -1
- package/dist/src/server/operation/move-block.d.ts +16 -0
- package/dist/src/server/operation/move-block.js +101 -0
- package/dist/src/server/operation/move-block.js.map +1 -0
- package/dist/src/server/operation/store-file.d.ts +14 -0
- package/dist/src/server/operation/store-file.js +83 -0
- package/dist/src/server/operation/store-file.js.map +1 -0
- package/dist/src/server/operation/store-files.d.ts +15 -0
- package/dist/src/server/operation/store-files.js +84 -0
- package/dist/src/server/operation/store-files.js.map +1 -0
- package/dist/src/server/operation/update-block.js +4 -4
- package/dist/src/server/operation/update-block.js.map +1 -1
- package/dist/src/server/result-serializer/account.d.ts +9 -0
- package/dist/src/server/result-serializer/account.js +26 -0
- package/dist/src/server/result-serializer/account.js.map +1 -0
- package/dist/src/server/result-serializer/action.d.ts +2 -1
- package/dist/src/server/result-serializer/action.js +27 -18
- package/dist/src/server/result-serializer/action.js.map +1 -1
- package/dist/src/server/result-serializer/base.js +22 -4
- package/dist/src/server/result-serializer/base.js.map +1 -1
- package/dist/src/server/result-serializer/block/folder.js +25 -9
- package/dist/src/server/result-serializer/block/folder.js.map +1 -1
- package/dist/src/server/result-serializer/block/header.js +6 -2
- package/dist/src/server/result-serializer/block/header.js.map +1 -1
- package/dist/src/server/result-serializer/block/image.js +6 -3
- package/dist/src/server/result-serializer/block/image.js.map +1 -1
- package/dist/src/server/result-serializer/block/parameter.d.ts +6 -0
- package/dist/src/server/result-serializer/block/parameter.js +13 -0
- package/dist/src/server/result-serializer/block/parameter.js.map +1 -0
- package/dist/src/server/result-serializer/block.d.ts +2 -1
- package/dist/src/server/result-serializer/block.js +32 -13
- package/dist/src/server/result-serializer/block.js.map +1 -1
- package/dist/src/server/result-serializer/page.d.ts +2 -1
- package/dist/src/server/result-serializer/page.js +4 -4
- package/dist/src/server/result-serializer/page.js.map +1 -1
- package/dist/src/server/result-serializer/role.d.ts +9 -0
- package/dist/src/server/result-serializer/role.js +26 -0
- package/dist/src/server/result-serializer/role.js.map +1 -0
- package/dist/src/server/serializer/action.d.ts +40 -0
- package/dist/src/server/serializer/action.js +940 -0
- package/dist/src/server/serializer/action.js.map +1 -0
- package/dist/src/server/serializer/base.d.ts +31 -0
- package/dist/src/server/serializer/base.js +1222 -0
- package/dist/src/server/serializer/base.js.map +1 -0
- package/dist/src/server/serializer/block/audio.d.ts +6 -0
- package/dist/src/server/serializer/block/audio.js +26 -0
- package/dist/src/server/serializer/block/audio.js.map +1 -0
- package/dist/src/server/serializer/block/background.d.ts +6 -0
- package/dist/src/server/serializer/block/background.js +22 -0
- package/dist/src/server/serializer/block/background.js.map +1 -0
- package/dist/src/server/serializer/block/calendar.d.ts +7 -0
- package/dist/src/server/serializer/block/calendar.js +140 -0
- package/dist/src/server/serializer/block/calendar.js.map +1 -0
- package/dist/src/server/serializer/block/directory.d.ts +7 -0
- package/dist/src/server/serializer/block/directory.js +53 -0
- package/dist/src/server/serializer/block/directory.js.map +1 -0
- package/dist/src/server/serializer/block/ephemeral.d.ts +6 -0
- package/dist/src/server/serializer/block/ephemeral.js +16 -0
- package/dist/src/server/serializer/block/ephemeral.js.map +1 -0
- package/dist/src/server/serializer/block/folder.d.ts +14 -0
- package/dist/src/server/serializer/block/folder.js +145 -0
- package/dist/src/server/serializer/block/folder.js.map +1 -0
- package/dist/src/server/serializer/block/header.d.ts +6 -0
- package/dist/src/server/serializer/block/header.js +35 -0
- package/dist/src/server/serializer/block/header.js.map +1 -0
- package/dist/src/server/serializer/block/image.d.ts +6 -0
- package/dist/src/server/serializer/block/image.js +45 -0
- package/dist/src/server/serializer/block/image.js.map +1 -0
- package/dist/src/server/serializer/block/link.d.ts +6 -0
- package/dist/src/server/serializer/block/link.js +39 -0
- package/dist/src/server/serializer/block/link.js.map +1 -0
- package/dist/src/server/serializer/block/list.d.ts +13 -0
- package/dist/src/server/serializer/block/list.js +113 -0
- package/dist/src/server/serializer/block/list.js.map +1 -0
- package/dist/src/server/serializer/block/multi-column.d.ts +6 -0
- package/dist/src/server/serializer/block/multi-column.js +78 -0
- package/dist/src/server/serializer/block/multi-column.js.map +1 -0
- package/dist/src/server/serializer/block/note.d.ts +6 -0
- package/dist/src/server/serializer/block/note.js +40 -0
- package/dist/src/server/serializer/block/note.js.map +1 -0
- package/dist/src/server/serializer/block/parameter.d.ts +6 -0
- package/dist/src/server/serializer/block/parameter.js +13 -0
- package/dist/src/server/serializer/block/parameter.js.map +1 -0
- package/dist/src/server/serializer/block/todo.d.ts +6 -0
- package/dist/src/server/serializer/block/todo.js +76 -0
- package/dist/src/server/serializer/block/todo.js.map +1 -0
- package/dist/src/server/serializer/block/whitespace.d.ts +6 -0
- package/dist/src/server/serializer/block/whitespace.js +17 -0
- package/dist/src/server/serializer/block/whitespace.js.map +1 -0
- package/dist/src/server/serializer/block.d.ts +27 -0
- package/dist/src/server/serializer/block.js +226 -0
- package/dist/src/server/serializer/block.js.map +1 -0
- package/dist/src/server/serializer/common/time-place-options.d.ts +2 -0
- package/dist/src/server/serializer/common/time-place-options.js +34 -0
- package/dist/src/server/serializer/common/time-place-options.js.map +1 -0
- package/dist/src/server/serializer/history.d.ts +19 -0
- package/dist/src/server/serializer/history.js +77 -0
- package/dist/src/server/serializer/history.js.map +1 -0
- package/dist/src/server/serializer/login.d.ts +12 -0
- package/dist/src/server/serializer/login.js +54 -0
- package/dist/src/server/serializer/login.js.map +1 -0
- package/dist/src/server/serializer/month.d.ts +10 -0
- package/dist/src/server/serializer/month.js +160 -0
- package/dist/src/server/serializer/month.js.map +1 -0
- package/dist/src/server/serializer/page.d.ts +47 -0
- package/dist/src/server/serializer/page.js +454 -0
- package/dist/src/server/serializer/page.js.map +1 -0
- package/dist/src/server/serializer/settings.d.ts +9 -0
- package/dist/src/server/serializer/settings.js +80 -0
- package/dist/src/server/serializer/settings.js.map +1 -0
- package/dist/src/server/serializer/week.d.ts +10 -0
- package/dist/src/server/serializer/week.js +175 -0
- package/dist/src/server/serializer/week.js.map +1 -0
- package/dist/src/server/serializer/year.d.ts +10 -0
- package/dist/src/server/serializer/year.js +142 -0
- package/dist/src/server/serializer/year.js.map +1 -0
- package/dist/src/server/type/multipart-file.d.ts +7 -0
- package/dist/src/server/type/multipart-file.js +3 -0
- package/dist/src/server/type/multipart-file.js.map +1 -0
- package/dist/src/server/utility/extract-role.d.ts +3 -0
- package/dist/src/server/utility/extract-role.js +19 -0
- package/dist/src/server/utility/extract-role.js.map +1 -0
- package/dist/src/server/utility/get-custom-page-type-for-path.js +12 -0
- package/dist/src/server/utility/get-custom-page-type-for-path.js.map +1 -1
- package/dist/src/server/utility/get-emoji-for-tool-type.js +1 -0
- package/dist/src/server/utility/get-emoji-for-tool-type.js.map +1 -1
- package/dist/src/server/utility/get-key-for-role.d.ts +3 -0
- package/dist/src/server/utility/get-key-for-role.js +10 -0
- package/dist/src/server/utility/get-key-for-role.js.map +1 -0
- package/dist/src/server/utility/get-thumbnail-filename.d.ts +2 -0
- package/dist/src/server/utility/get-thumbnail-filename.js +10 -0
- package/dist/src/server/utility/get-thumbnail-filename.js.map +1 -0
- package/dist/src/server/utility/get-url-for-role.d.ts +3 -0
- package/dist/src/server/utility/get-url-for-role.js +13 -0
- package/dist/src/server/utility/get-url-for-role.js.map +1 -0
- package/dist/src/server/utility/role-matches.d.ts +3 -0
- package/dist/src/server/utility/role-matches.js +13 -0
- package/dist/src/server/utility/role-matches.js.map +1 -0
- package/dist/src/server/utility/satisfies-role.d.ts +3 -0
- package/dist/src/server/utility/satisfies-role.js +21 -0
- package/dist/src/server/utility/satisfies-role.js.map +1 -0
- package/dist/src/server.js +8 -8
- package/dist/src/server.js.map +1 -1
- package/dist/src/type/account-settings.d.ts +3 -2
- package/dist/src/type/account.d.ts +1 -1
- package/dist/src/type/action/hide-block.d.ts +9 -0
- package/dist/src/type/action/hide-block.js +3 -0
- package/dist/src/type/action/hide-block.js.map +1 -0
- package/dist/src/type/action/move-block.d.ts +10 -0
- package/dist/src/type/action/move-block.js +3 -0
- package/dist/src/type/action/move-block.js.map +1 -0
- package/dist/src/type/block/audio.d.ts +2 -0
- package/dist/src/type/block/image.d.ts +2 -0
- package/dist/src/type/block/parameter.d.ts +8 -0
- package/dist/src/type/block/parameter.js +3 -0
- package/dist/src/type/block/parameter.js.map +1 -0
- package/dist/src/type/block-metadata.d.ts +2 -1
- package/dist/src/type/block.d.ts +2 -2
- package/dist/src/type/color-value.d.ts +2 -0
- package/dist/src/type/color-value.js +3 -0
- package/dist/src/type/color-value.js.map +1 -0
- package/dist/src/type/history-item.d.ts +5 -0
- package/dist/src/type/history-item.js +3 -0
- package/dist/src/type/history-item.js.map +1 -0
- package/dist/src/type/page.d.ts +2 -0
- package/dist/src/type/request-context.d.ts +7 -0
- package/dist/src/type/request-context.js +3 -0
- package/dist/src/type/request-context.js.map +1 -0
- package/dist/src/type/role.d.ts +8 -0
- package/dist/src/{interface/provider.js → type/role.js} +1 -1
- package/dist/src/type/role.js.map +1 -0
- package/dist/src/type/runtime-config.d.ts +2 -1
- package/dist/src/type/server-settings.d.ts +2 -1
- package/dist/test/unit/lib/environment-mocker/environment-mocker.d.ts +1 -0
- package/dist/test/unit/lib/environment-mocker/environment-mocker.js +40 -0
- package/dist/test/unit/lib/environment-mocker/environment-mocker.js.map +1 -0
- package/dist/test/unit/lib/grammar/index.d.ts +1 -0
- package/dist/test/unit/lib/grammar/index.js +60 -0
- package/dist/test/unit/lib/grammar/index.js.map +1 -0
- package/dist/test/unit/lib/grammar/inflector.d.ts +1 -0
- package/dist/test/unit/lib/grammar/inflector.js +72 -0
- package/dist/test/unit/lib/grammar/inflector.js.map +1 -0
- package/dist/test/unit/lib/http/parser/url.d.ts +1 -0
- package/dist/test/unit/lib/http/parser/url.js +27 -0
- package/dist/test/unit/lib/http/parser/url.js.map +1 -0
- package/dist/test/unit/lib/http/response/outgoing.d.ts +1 -0
- package/dist/test/unit/lib/http/response/outgoing.js +38 -0
- package/dist/test/unit/lib/http/response/outgoing.js.map +1 -0
- package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.d.ts +1 -0
- package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.js +21 -0
- package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.js.map +1 -0
- package/dist/test/unit/lib/key-generator/key-generator.d.ts +1 -0
- package/dist/test/unit/lib/key-generator/key-generator.js +23 -0
- package/dist/test/unit/lib/key-generator/key-generator.js.map +1 -0
- package/dist/test/unit/lib/log-capturer/log-capturer.d.ts +1 -0
- package/dist/test/unit/lib/log-capturer/log-capturer.js +35 -0
- package/dist/test/unit/lib/log-capturer/log-capturer.js.map +1 -0
- package/dist/test/unit/lib/logger/formatter.d.ts +1 -0
- package/dist/test/unit/lib/logger/formatter.js +32 -0
- package/dist/test/unit/lib/logger/formatter.js.map +1 -0
- package/dist/test/unit/lib/logger/logger.d.ts +1 -0
- package/dist/test/unit/lib/logger/logger.js +194 -0
- package/dist/test/unit/lib/logger/logger.js.map +1 -0
- package/dist/test/unit/lib/operation/operation.d.ts +1 -0
- package/dist/test/unit/lib/operation/operation.js +128 -0
- package/dist/test/unit/lib/operation/operation.js.map +1 -0
- package/dist/test/unit/lib/promise-wrapper/promise-wrapper.d.ts +1 -0
- package/dist/test/unit/lib/promise-wrapper/promise-wrapper.js +41 -0
- package/dist/test/unit/lib/promise-wrapper/promise-wrapper.js.map +1 -0
- package/dist/test/unit/lib/string/create-slug.d.ts +1 -0
- package/dist/test/unit/lib/string/create-slug.js +15 -0
- package/dist/test/unit/lib/string/create-slug.js.map +1 -0
- package/dist/test/unit/lib/time/utility/sleep.d.ts +1 -0
- package/dist/test/unit/lib/time/utility/sleep.js +20 -0
- package/dist/test/unit/lib/time/utility/sleep.js.map +1 -0
- package/dist/test/unit/server/operation/promote-block.js +11 -0
- package/dist/test/unit/server/operation/promote-block.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -5
- package/dist/src/interface/provider.d.ts +0 -6
- package/dist/src/interface/provider.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import ExecutionContext from './../../lib/execution-context/index';
|
|
2
|
+
import BaseOperation from './../../operation';
|
|
3
|
+
declare class HideBlockOperation extends BaseOperation<void> {
|
|
4
|
+
private path;
|
|
5
|
+
private index_path;
|
|
6
|
+
private page;
|
|
7
|
+
constructor(path: string, index_path: string, execution_context: ExecutionContext);
|
|
8
|
+
protected performInternal(): Promise<void>;
|
|
9
|
+
private loadPage;
|
|
10
|
+
private getPage;
|
|
11
|
+
private getPath;
|
|
12
|
+
private getIndexPath;
|
|
13
|
+
}
|
|
14
|
+
export default HideBlockOperation;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const errors_1 = require("./../../lib/errors/index.js");
|
|
7
|
+
const operation_1 = __importDefault(require("./../../operation.js"));
|
|
8
|
+
const load_page_1 = __importDefault(require("./load-page.js"));
|
|
9
|
+
const update_block_1 = __importDefault(require("./update-block.js"));
|
|
10
|
+
const get_siblings_and_index_for_index_path_1 = __importDefault(require("./../utility/get-siblings-and-index-for-index-path.js"));
|
|
11
|
+
class HideBlockOperation extends operation_1.default {
|
|
12
|
+
constructor(path, index_path, execution_context) {
|
|
13
|
+
super(execution_context);
|
|
14
|
+
this.path = path;
|
|
15
|
+
this.index_path = index_path;
|
|
16
|
+
}
|
|
17
|
+
async performInternal() {
|
|
18
|
+
await this.loadPage();
|
|
19
|
+
const page = this.getPage();
|
|
20
|
+
const index_path = this.getIndexPath();
|
|
21
|
+
const { siblings, index } = (0, get_siblings_and_index_for_index_path_1.default)(page, index_path);
|
|
22
|
+
const target_block = siblings[index];
|
|
23
|
+
if (target_block === undefined) {
|
|
24
|
+
throw new errors_1.InvalidError(`No block found at path to hide: ${index_path}`);
|
|
25
|
+
}
|
|
26
|
+
const execution_context = this.getExecutionContext();
|
|
27
|
+
const updated_block = {
|
|
28
|
+
...target_block,
|
|
29
|
+
hidden: true
|
|
30
|
+
};
|
|
31
|
+
const update_operation = new update_block_1.default(page, updated_block, index_path, execution_context);
|
|
32
|
+
await update_operation.perform();
|
|
33
|
+
}
|
|
34
|
+
async loadPage() {
|
|
35
|
+
const path = this.getPath();
|
|
36
|
+
const execution_context = this.getExecutionContext();
|
|
37
|
+
const operation = new load_page_1.default(path, execution_context);
|
|
38
|
+
const page = await operation.perform();
|
|
39
|
+
this.page = page;
|
|
40
|
+
}
|
|
41
|
+
getPage() {
|
|
42
|
+
if (this.page === undefined) {
|
|
43
|
+
throw new errors_1.InvariantViolation('Tried to read page, but it was not set');
|
|
44
|
+
}
|
|
45
|
+
return this.page;
|
|
46
|
+
}
|
|
47
|
+
getPath() {
|
|
48
|
+
return this.path;
|
|
49
|
+
}
|
|
50
|
+
getIndexPath() {
|
|
51
|
+
return this.index_path;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = HideBlockOperation;
|
|
55
|
+
//# sourceMappingURL=hide-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hide-block.js","sourceRoot":"","sources":["../../../../src/server/operation/hide-block.ts"],"names":[],"mappings":";;;;;AACA,uCAA4D;AAE5D,0DAAsC;AAEtC,2EAA2D;AAC3D,iFAAiE;AACjE,iIAAmG;AAEnG,MAAM,kBAAmB,SAAQ,mBAAmB;IAKnD,YAAmB,IAAY,EAAE,UAAkB,EAAE,iBAAmC;QACvF,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAES,KAAK,CAAC,eAAe;QAC9B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,IAAA,+CAA+B,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,qBAAY,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAErD,MAAM,aAAa,GAAG;YACrB,GAAG,YAAY;YACf,MAAM,EAAE,IAAI;SACZ,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,sBAAoB,CAChD,IAAI,EACJ,aAAa,EACb,UAAU,EACV,iBAAiB,CACjB,CAAC;QAEF,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,QAAQ;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,mBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAEvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAEO,OAAO;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,2BAAkB,CAAC,wCAAwC,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAEO,OAAO;QACd,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAEO,YAAY;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACD;AAED,kBAAe,kBAAkB,CAAC"}
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const operation_1 = __importDefault(require("./../../operation.js"));
|
|
7
|
+
const find_account_1 = __importDefault(require("./find-account.js"));
|
|
7
8
|
class LoadAccountOperation extends operation_1.default {
|
|
8
9
|
async performInternal() {
|
|
9
10
|
const execution_context = this.getExecutionContext();
|
|
@@ -11,16 +12,12 @@ class LoadAccountOperation extends operation_1.default {
|
|
|
11
12
|
if (session === undefined) {
|
|
12
13
|
return null;
|
|
13
14
|
}
|
|
14
|
-
const {
|
|
15
|
-
if (
|
|
15
|
+
const { account_id } = session;
|
|
16
|
+
if (account_id === null) {
|
|
16
17
|
return null;
|
|
17
18
|
}
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
if (account === undefined) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return account;
|
|
19
|
+
const operation = new find_account_1.default(account_id, execution_context);
|
|
20
|
+
return operation.perform();
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
23
|
exports.default = LoadAccountOperation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-account.js","sourceRoot":"","sources":["../../../../src/server/operation/load-account.ts"],"names":[],"mappings":";;;;;AACA,0DAAsC;
|
|
1
|
+
{"version":3,"file":"load-account.js","sourceRoot":"","sources":["../../../../src/server/operation/load-account.ts"],"names":[],"mappings":";;;;;AACA,0DAAsC;AACtC,iFAAiE;AAEjE,MAAM,oBAAqB,SAAQ,mBAA6B;IACrD,KAAK,CAAC,eAAe;QAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,EAAE,CAAC;QAE/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,EAAC,UAAU,EAAC,GAAG,OAAO,CAAC;QAE7B,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,sBAAoB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAE1E,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACD;AAED,kBAAe,oBAAoB,CAAC"}
|
|
@@ -7,17 +7,20 @@ declare class LoadPageOperation extends BaseOperation<Page> {
|
|
|
7
7
|
protected performInternal(): Promise<Page>;
|
|
8
8
|
protected formatResult(result: Page): string;
|
|
9
9
|
private generatePermissionDeniedPage;
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
private
|
|
10
|
+
private loadFolderBlock;
|
|
11
|
+
private determineRequiredRole;
|
|
12
|
+
private getCreatorUsername;
|
|
13
|
+
private loadRawPage;
|
|
13
14
|
private shouldAutogenerate;
|
|
14
15
|
private autogenerate;
|
|
15
16
|
private autogenerateDate;
|
|
16
17
|
private autogenerateError;
|
|
17
18
|
private autogenerateIndex;
|
|
19
|
+
private autogenerateAccount;
|
|
20
|
+
private autogenerateRole;
|
|
18
21
|
private getCustomPageType;
|
|
19
22
|
private getPath;
|
|
20
|
-
private
|
|
23
|
+
private buildRequestContext;
|
|
21
24
|
private getRoles;
|
|
22
25
|
}
|
|
23
26
|
export default LoadPageOperation;
|
|
@@ -6,22 +6,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const path_1 = __importDefault(require("path"));
|
|
7
7
|
const promises_1 = require("fs/promises");
|
|
8
8
|
const header_1 = __importDefault(require("./../../common/builder/block/header.js"));
|
|
9
|
+
const folder_1 = __importDefault(require("./../../common/builder/block/folder.js"));
|
|
9
10
|
const note_1 = __importDefault(require("./../../common/builder/block/note.js"));
|
|
10
11
|
const string_1 = require("./../../lib/string/index.js");
|
|
12
|
+
const grammar_1 = require("./../../lib/grammar/index.js");
|
|
11
13
|
const filesystem_1 = require("./../../lib/filesystem/index.js");
|
|
12
14
|
const http_1 = require("./../../lib/http/index.js");
|
|
13
15
|
const errors_1 = require("./../../lib/errors/index.js");
|
|
14
16
|
const operation_1 = __importDefault(require("./../../operation.js"));
|
|
15
17
|
const path_to_date_1 = __importDefault(require("./../utility/path-to-date.js"));
|
|
16
18
|
const get_path_for_folder_block_1 = __importDefault(require("./../utility/get-path-for-folder-block.js"));
|
|
19
|
+
const is_index_path_1 = __importDefault(require("./../utility/is-index-path.js"));
|
|
20
|
+
const get_url_for_role_1 = __importDefault(require("./../utility/get-url-for-role.js"));
|
|
21
|
+
const get_key_for_role_1 = __importDefault(require("./../utility/get-key-for-role.js"));
|
|
22
|
+
const default_role_1 = __importDefault(require("./../../enum/default-role.js"));
|
|
23
|
+
const satisfies_role_1 = __importDefault(require("./../utility/satisfies-role.js"));
|
|
17
24
|
const permission_type_1 = __importDefault(require("./../../enum/permission-type.js"));
|
|
25
|
+
const public_1 = __importDefault(require("./../../constant/role/public.js"));
|
|
26
|
+
const role_matches_1 = __importDefault(require("./../utility/role-matches.js"));
|
|
27
|
+
const creator_1 = __importDefault(require("./../../constant/role/creator.js"));
|
|
28
|
+
const unknown_1 = __importDefault(require("./../../constant/role/unknown.js"));
|
|
18
29
|
const system_id_1 = __importDefault(require("./../../constant/system-id.js"));
|
|
19
30
|
const block_type_1 = __importDefault(require("./../../enum/block-type.js"));
|
|
20
31
|
const get_block_permissions_1 = __importDefault(require("./../utility/get-block-permissions.js"));
|
|
21
32
|
const get_parent_path_1 = __importDefault(require("./../../common/utility/get-parent-path.js"));
|
|
22
|
-
const default_role_1 = __importDefault(require("./../../enum/default-role.js"));
|
|
23
33
|
const validate_path_1 = __importDefault(require("./../utility/validate-path.js"));
|
|
24
34
|
const load_account_1 = __importDefault(require("./load-account.js"));
|
|
35
|
+
const find_account_1 = __importDefault(require("./find-account.js"));
|
|
25
36
|
const custom_page_type_1 = __importDefault(require("./../enum/custom-page-type.js"));
|
|
26
37
|
const color_1 = __importDefault(require("./../../enum/color.js"));
|
|
27
38
|
const get_weekday_name_1 = __importDefault(require("./../utility/get-weekday-name.js"));
|
|
@@ -34,6 +45,7 @@ const get_start_of_week_1 = __importDefault(require("./../utility/get-start-of-w
|
|
|
34
45
|
const week_to_path_1 = __importDefault(require("./../utility/week-to-path.js"));
|
|
35
46
|
const increment_date_1 = __importDefault(require("./../utility/increment-date.js"));
|
|
36
47
|
const decrement_date_1 = __importDefault(require("./../utility/decrement-date.js"));
|
|
48
|
+
const extract_role_1 = __importDefault(require("./../utility/extract-role.js"));
|
|
37
49
|
const date_less_than_1 = __importDefault(require("./../utility/date-less-than.js"));
|
|
38
50
|
const create_date_1 = __importDefault(require("./../utility/create-date.js"));
|
|
39
51
|
const dates_are_equal_1 = __importDefault(require("./../utility/dates-are-equal.js"));
|
|
@@ -47,121 +59,174 @@ class LoadPageOperation extends operation_1.default {
|
|
|
47
59
|
this.path = path;
|
|
48
60
|
}
|
|
49
61
|
async performInternal() {
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
const request_context = await this.buildRequestContext();
|
|
63
|
+
const folder_block = await this.loadFolderBlock(request_context);
|
|
64
|
+
const required_role = this.determineRequiredRole(folder_block);
|
|
65
|
+
const { role: current_role, path } = request_context;
|
|
66
|
+
const roles = this.getRoles();
|
|
67
|
+
if (!(0, satisfies_role_1.default)(roles, current_role, required_role)) {
|
|
68
|
+
return this.generatePermissionDeniedPage(current_role, required_role, folder_block);
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const raw_page = await this.loadRawPage(request_context);
|
|
72
|
+
const page = {
|
|
73
|
+
path,
|
|
74
|
+
folder: folder_block,
|
|
75
|
+
...raw_page
|
|
76
|
+
};
|
|
77
|
+
(0, validate_page_1.default)(page);
|
|
78
|
+
return page;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if ((0, errors_1.errorMatches)(error, errors_1.NotFoundError)) {
|
|
82
|
+
if (this.shouldAutogenerate()) {
|
|
83
|
+
return this.autogenerate();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
throw error;
|
|
54
87
|
}
|
|
55
|
-
const path = this.getPath();
|
|
56
|
-
const raw_page = await this.loadRawPageForPath(path);
|
|
57
|
-
const page = {
|
|
58
|
-
path,
|
|
59
|
-
...raw_page
|
|
60
|
-
};
|
|
61
|
-
(0, validate_page_1.default)(page);
|
|
62
|
-
return page;
|
|
63
88
|
}
|
|
64
89
|
formatResult(result) {
|
|
65
90
|
return result.path;
|
|
66
91
|
}
|
|
67
|
-
async generatePermissionDeniedPage(current_role, required_role) {
|
|
92
|
+
async generatePermissionDeniedPage(current_role, required_role, folder_block) {
|
|
68
93
|
const path = this.getPath();
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (requires_creator) {
|
|
77
|
-
return `[${creator_username}]`;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
return `[${required_role}] or higher`;
|
|
81
|
-
}
|
|
82
|
-
})();
|
|
83
|
-
const role_note = (0, note_1.default)(`only ${role_label} can view this page.`);
|
|
84
|
-
if (!logged_in) {
|
|
94
|
+
const requires_unknown = (0, role_matches_1.default)(required_role, unknown_1.default);
|
|
95
|
+
if (requires_unknown) {
|
|
96
|
+
const header_block = (0, header_1.default)(`${emoji_1.default.WARNING_SIGN} configuration error`, {
|
|
97
|
+
color: color_1.default.YELLOW
|
|
98
|
+
});
|
|
99
|
+
const explanation = (0, note_1.default)('this page is configured to require a role that is invalid or no longer supported. ' +
|
|
100
|
+
'it\'s possible that this role used to exist, but has since been removed.');
|
|
85
101
|
return {
|
|
86
102
|
path,
|
|
103
|
+
folder: folder_block,
|
|
87
104
|
blocks: [
|
|
88
105
|
header_block,
|
|
89
|
-
|
|
90
|
-
login_note
|
|
106
|
+
explanation
|
|
91
107
|
]
|
|
92
108
|
};
|
|
93
109
|
}
|
|
110
|
+
const requires_creator = (0, role_matches_1.default)(required_role, creator_1.default);
|
|
111
|
+
const login_note = (0, note_1.default)(`do you need to [log in](/login)?`);
|
|
112
|
+
const execution_context = this.getExecutionContext();
|
|
113
|
+
const logged_in = execution_context.isLoggedIn();
|
|
114
|
+
const header_block = (0, header_1.default)(`${emoji_1.default.LOCKED} permission denied`, {
|
|
115
|
+
color: color_1.default.MAROON
|
|
116
|
+
});
|
|
94
117
|
if (requires_creator) {
|
|
118
|
+
const creator_username = await this.getCreatorUsername(folder_block);
|
|
119
|
+
const account_link = `<a href="/accounts/${creator_username}">[${creator_username}]</a>`;
|
|
120
|
+
const role_note = (0, note_1.default)(`only ${account_link} can view this page.`);
|
|
121
|
+
const blocks = [
|
|
122
|
+
header_block,
|
|
123
|
+
role_note,
|
|
124
|
+
];
|
|
125
|
+
if (!logged_in) {
|
|
126
|
+
blocks.push(login_note);
|
|
127
|
+
}
|
|
95
128
|
return {
|
|
96
129
|
path,
|
|
97
|
-
blocks
|
|
98
|
-
|
|
99
|
-
role_note
|
|
100
|
-
]
|
|
130
|
+
blocks,
|
|
131
|
+
folder: folder_block
|
|
101
132
|
};
|
|
102
133
|
}
|
|
103
|
-
const
|
|
134
|
+
const role_url = (0, get_url_for_role_1.default)(required_role);
|
|
135
|
+
const role_link = `<a href="${role_url}">[${required_role.name}]</a>`;
|
|
136
|
+
const role_note = (0, note_1.default)(`only ${role_link} or higher can view this page.`);
|
|
137
|
+
const blocks = [
|
|
138
|
+
header_block,
|
|
139
|
+
role_note
|
|
140
|
+
];
|
|
141
|
+
if (!logged_in) {
|
|
142
|
+
const upgrade_note = (0, note_1.default)(`(you are only [${current_role}])`);
|
|
143
|
+
blocks.push(upgrade_note);
|
|
144
|
+
}
|
|
104
145
|
return {
|
|
105
146
|
path,
|
|
106
|
-
blocks
|
|
107
|
-
|
|
108
|
-
role_note,
|
|
109
|
-
upgrade_note
|
|
110
|
-
]
|
|
147
|
+
blocks,
|
|
148
|
+
folder: folder_block
|
|
111
149
|
};
|
|
112
150
|
}
|
|
113
|
-
async
|
|
114
|
-
const
|
|
115
|
-
|
|
151
|
+
async loadFolderBlock(request_context) {
|
|
152
|
+
const { path: request_path } = request_context;
|
|
153
|
+
if ((0, is_index_path_1.default)(request_path)) {
|
|
154
|
+
return (0, folder_1.default)({
|
|
155
|
+
title: '/',
|
|
156
|
+
color: color_1.default.BLUE,
|
|
157
|
+
emoji: emoji_1.default.HOUSE
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
const parent_path = (0, get_parent_path_1.default)(request_path);
|
|
161
|
+
const parent_context = {
|
|
162
|
+
...request_context,
|
|
163
|
+
path: parent_path
|
|
164
|
+
};
|
|
116
165
|
let raw_page;
|
|
117
166
|
try {
|
|
118
|
-
raw_page = await this.
|
|
167
|
+
raw_page = await this.loadRawPage(parent_context);
|
|
119
168
|
}
|
|
120
169
|
catch (error) {
|
|
121
170
|
if ((0, errors_1.errorMatches)(error, errors_1.NotFoundError)) {
|
|
122
|
-
return
|
|
171
|
+
return (0, folder_1.default)({
|
|
172
|
+
title: 'file not found',
|
|
173
|
+
color: color_1.default.RED,
|
|
174
|
+
emoji: emoji_1.default.MAGNIFYING_GLASS
|
|
175
|
+
});
|
|
123
176
|
}
|
|
124
177
|
throw error;
|
|
125
178
|
}
|
|
126
179
|
const { blocks } = raw_page;
|
|
127
|
-
const
|
|
180
|
+
const folder_block = blocks.find((block) => {
|
|
128
181
|
const { block_type } = block;
|
|
129
182
|
if (block_type !== block_type_1.default.FOLDER) {
|
|
130
183
|
return false;
|
|
131
184
|
}
|
|
132
|
-
const
|
|
133
|
-
const
|
|
185
|
+
const potential_block = block;
|
|
186
|
+
const potential_path = (0, get_path_for_folder_block_1.default)({
|
|
134
187
|
base_path: parent_path,
|
|
135
|
-
block:
|
|
188
|
+
block: potential_block
|
|
136
189
|
});
|
|
137
|
-
return
|
|
190
|
+
return potential_path === request_path;
|
|
138
191
|
});
|
|
139
|
-
if (
|
|
140
|
-
return
|
|
192
|
+
if (folder_block === undefined) {
|
|
193
|
+
return (0, folder_1.default)({
|
|
194
|
+
title: 'file not found',
|
|
195
|
+
emoji: emoji_1.default.MAGNIFYING_GLASS,
|
|
196
|
+
color: color_1.default.RED
|
|
197
|
+
});
|
|
141
198
|
}
|
|
142
|
-
|
|
143
|
-
const required_role = permissions[permission_type_1.default.READ];
|
|
144
|
-
return required_role;
|
|
199
|
+
return folder_block;
|
|
145
200
|
}
|
|
146
|
-
|
|
201
|
+
determineRequiredRole(folder_block) {
|
|
202
|
+
const permissions = (0, get_block_permissions_1.default)(folder_block);
|
|
203
|
+
const required_role_key = permissions[permission_type_1.default.READ];
|
|
147
204
|
const roles = this.getRoles();
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
205
|
+
const required_role = (0, extract_role_1.default)(roles, required_role_key);
|
|
206
|
+
return required_role;
|
|
207
|
+
}
|
|
208
|
+
async getCreatorUsername(folder_block) {
|
|
209
|
+
const account_id = folder_block.creator_id;
|
|
210
|
+
const execution_context = this.getExecutionContext();
|
|
211
|
+
const operation = new find_account_1.default(account_id, execution_context);
|
|
212
|
+
const account = await operation.perform();
|
|
213
|
+
const creator_username = account.username;
|
|
214
|
+
return creator_username;
|
|
151
215
|
}
|
|
152
|
-
async
|
|
216
|
+
async loadRawPage(request_context) {
|
|
153
217
|
const { public_directory, routes } = this.getConfig();
|
|
218
|
+
const { path: request_path } = request_context;
|
|
154
219
|
let index = 0;
|
|
155
220
|
const blocks = [];
|
|
156
221
|
while (index < routes.length) {
|
|
157
222
|
const route = routes[index++];
|
|
158
223
|
const { path, handler } = route;
|
|
159
|
-
if (
|
|
160
|
-
const subset = await handler(
|
|
224
|
+
if (request_path === path) {
|
|
225
|
+
const subset = await handler(request_context);
|
|
161
226
|
blocks.push(...subset);
|
|
162
227
|
}
|
|
163
228
|
}
|
|
164
|
-
const filename = `.${
|
|
229
|
+
const filename = `.${request_path}/index.json`;
|
|
165
230
|
const absolute_path = path_1.default.resolve(public_directory, filename);
|
|
166
231
|
const file_exists = await (0, filesystem_1.exists)(absolute_path);
|
|
167
232
|
if (!file_exists) {
|
|
@@ -170,11 +235,8 @@ class LoadPageOperation extends operation_1.default {
|
|
|
170
235
|
blocks
|
|
171
236
|
};
|
|
172
237
|
}
|
|
173
|
-
else if (this.shouldAutogenerate()) {
|
|
174
|
-
return this.autogenerate();
|
|
175
|
-
}
|
|
176
238
|
else {
|
|
177
|
-
throw new errors_1.NotFoundError(`Unable to find page: ${
|
|
239
|
+
throw new errors_1.NotFoundError(`Unable to find page: ${request_path}`);
|
|
178
240
|
}
|
|
179
241
|
}
|
|
180
242
|
const contents = await (0, promises_1.readFile)(absolute_path, string_1.StringEncoding.UTF8);
|
|
@@ -193,6 +255,8 @@ class LoadPageOperation extends operation_1.default {
|
|
|
193
255
|
case custom_page_type_1.default.DATE:
|
|
194
256
|
case custom_page_type_1.default.ERROR:
|
|
195
257
|
case custom_page_type_1.default.INDEX:
|
|
258
|
+
case custom_page_type_1.default.ACCOUNT:
|
|
259
|
+
case custom_page_type_1.default.ROLE:
|
|
196
260
|
return true;
|
|
197
261
|
default:
|
|
198
262
|
return false;
|
|
@@ -213,6 +277,10 @@ class LoadPageOperation extends operation_1.default {
|
|
|
213
277
|
return this.autogenerateError();
|
|
214
278
|
case custom_page_type_1.default.INDEX:
|
|
215
279
|
return this.autogenerateIndex();
|
|
280
|
+
case custom_page_type_1.default.ACCOUNT:
|
|
281
|
+
return this.autogenerateAccount();
|
|
282
|
+
case custom_page_type_1.default.ROLE:
|
|
283
|
+
return this.autogenerateRole();
|
|
216
284
|
default:
|
|
217
285
|
throw new errors_1.InvalidError(`Unable to autogenerate page for path: ${path}`);
|
|
218
286
|
}
|
|
@@ -258,6 +326,12 @@ class LoadPageOperation extends operation_1.default {
|
|
|
258
326
|
const current_week_path = (0, week_to_path_1.default)(current_week);
|
|
259
327
|
const current_week_label = (0, get_ordinal_label_for_week_1.default)(current_week);
|
|
260
328
|
return {
|
|
329
|
+
path,
|
|
330
|
+
folder: (0, folder_1.default)({
|
|
331
|
+
title,
|
|
332
|
+
color: color_1.default.GREY,
|
|
333
|
+
emoji: emoji_1.default.CALENDAR
|
|
334
|
+
}),
|
|
261
335
|
blocks: [
|
|
262
336
|
{
|
|
263
337
|
block_type: block_type_1.default.LINK,
|
|
@@ -328,6 +402,12 @@ class LoadPageOperation extends operation_1.default {
|
|
|
328
402
|
}
|
|
329
403
|
})();
|
|
330
404
|
return {
|
|
405
|
+
path,
|
|
406
|
+
folder: (0, folder_1.default)({
|
|
407
|
+
title,
|
|
408
|
+
emoji: emoji_1.default.WARNING_SIGN,
|
|
409
|
+
color: color_1.default.RED
|
|
410
|
+
}),
|
|
331
411
|
blocks: [
|
|
332
412
|
(0, header_1.default)(title),
|
|
333
413
|
{
|
|
@@ -341,10 +421,39 @@ class LoadPageOperation extends operation_1.default {
|
|
|
341
421
|
}
|
|
342
422
|
async autogenerateIndex() {
|
|
343
423
|
const now = Date.now();
|
|
424
|
+
const path = this.getPath();
|
|
344
425
|
const { username } = this.getSession();
|
|
426
|
+
const title = `${username}'s home page`;
|
|
427
|
+
return {
|
|
428
|
+
path,
|
|
429
|
+
folder: (0, folder_1.default)({
|
|
430
|
+
title,
|
|
431
|
+
emoji: emoji_1.default.HOUSE,
|
|
432
|
+
color: color_1.default.BLUE
|
|
433
|
+
}),
|
|
434
|
+
blocks: [
|
|
435
|
+
(0, header_1.default)(title),
|
|
436
|
+
{
|
|
437
|
+
block_type: block_type_1.default.EPHEMERAL,
|
|
438
|
+
label: '(nothing here yet)',
|
|
439
|
+
creator_id: system_id_1.default,
|
|
440
|
+
created_at: now
|
|
441
|
+
}
|
|
442
|
+
]
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
async autogenerateAccount() {
|
|
446
|
+
const now = Date.now();
|
|
447
|
+
const path = this.getPath();
|
|
345
448
|
return {
|
|
449
|
+
path,
|
|
450
|
+
folder: (0, folder_1.default)({
|
|
451
|
+
title: 'account',
|
|
452
|
+
emoji: emoji_1.default.USER_PORTRAIT,
|
|
453
|
+
color: color_1.default.MAROON
|
|
454
|
+
}),
|
|
346
455
|
blocks: [
|
|
347
|
-
(0, header_1.default)(
|
|
456
|
+
(0, header_1.default)('coming soon'),
|
|
348
457
|
{
|
|
349
458
|
block_type: block_type_1.default.EPHEMERAL,
|
|
350
459
|
label: '(nothing here yet)',
|
|
@@ -354,6 +463,63 @@ class LoadPageOperation extends operation_1.default {
|
|
|
354
463
|
]
|
|
355
464
|
};
|
|
356
465
|
}
|
|
466
|
+
async autogenerateRole() {
|
|
467
|
+
const path = this.getPath();
|
|
468
|
+
const match = path.match(/^\/roles\/([a-z0-9\-]+)$/);
|
|
469
|
+
if (match === null) {
|
|
470
|
+
throw new errors_1.InvalidError(`Invalid role path: ${path}`);
|
|
471
|
+
}
|
|
472
|
+
const role_slug = match[1];
|
|
473
|
+
const desired_key = role_slug.replace(/-/g, '_');
|
|
474
|
+
const execution_context = this.getExecutionContext();
|
|
475
|
+
const { roles } = execution_context.getConfig();
|
|
476
|
+
const role_list = [];
|
|
477
|
+
let matching_role;
|
|
478
|
+
roles.forEach((role) => {
|
|
479
|
+
const role_key = (0, get_key_for_role_1.default)(role);
|
|
480
|
+
if (role_key === desired_key) {
|
|
481
|
+
matching_role = role;
|
|
482
|
+
}
|
|
483
|
+
const is_creator = role_key === default_role_1.default.CREATOR;
|
|
484
|
+
const is_unknown = role_key === default_role_1.default.UNKNOWN;
|
|
485
|
+
if (is_creator || is_unknown) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
const role_url = (0, get_url_for_role_1.default)(role);
|
|
489
|
+
const { color } = role;
|
|
490
|
+
const role_label = `[${role.emoji} ${role.name}]`;
|
|
491
|
+
role_list.push(`- <a class="text-${color}" href="${role_url}">${role_label}</a>`);
|
|
492
|
+
});
|
|
493
|
+
if (matching_role === undefined) {
|
|
494
|
+
throw new errors_1.NotFoundError(`Unable to find role: ${desired_key}`);
|
|
495
|
+
}
|
|
496
|
+
const combined_roles = role_list.join('\n');
|
|
497
|
+
const { emoji, name, color } = matching_role;
|
|
498
|
+
const role_url = (0, get_url_for_role_1.default)(matching_role);
|
|
499
|
+
const role_label = `[${emoji} ${name}]`;
|
|
500
|
+
const plural_name = (0, grammar_1.pluralize)(name);
|
|
501
|
+
const group_label = `[${emoji} ${plural_name}]`;
|
|
502
|
+
const role_link = `<a class="text-${color}" href="${role_url}">${role_label}</a>`;
|
|
503
|
+
const group_link = `<a class="text-${color}" href="${role_url}">${group_label}</a>`;
|
|
504
|
+
const description = matching_role.description
|
|
505
|
+
.replace(/\[\$role\]/g, role_link)
|
|
506
|
+
.replace(/\[\$group\]/g, group_link);
|
|
507
|
+
return {
|
|
508
|
+
path,
|
|
509
|
+
folder: (0, folder_1.default)({
|
|
510
|
+
title: name,
|
|
511
|
+
emoji,
|
|
512
|
+
color
|
|
513
|
+
}),
|
|
514
|
+
blocks: [
|
|
515
|
+
(0, header_1.default)(role_label, {
|
|
516
|
+
color
|
|
517
|
+
}),
|
|
518
|
+
(0, note_1.default)(`All roles:\n\n${combined_roles}`),
|
|
519
|
+
(0, note_1.default)(description)
|
|
520
|
+
]
|
|
521
|
+
};
|
|
522
|
+
}
|
|
357
523
|
getCustomPageType() {
|
|
358
524
|
const path = this.getPath();
|
|
359
525
|
return (0, get_custom_page_type_for_path_1.default)(path);
|
|
@@ -361,15 +527,26 @@ class LoadPageOperation extends operation_1.default {
|
|
|
361
527
|
getPath() {
|
|
362
528
|
return this.path;
|
|
363
529
|
}
|
|
364
|
-
async
|
|
530
|
+
async buildRequestContext() {
|
|
365
531
|
const execution_context = this.getExecutionContext();
|
|
366
532
|
const operation = new load_account_1.default(execution_context);
|
|
367
533
|
const account = await operation.perform();
|
|
534
|
+
const path = this.getPath();
|
|
368
535
|
if (account === null) {
|
|
369
|
-
return
|
|
536
|
+
return {
|
|
537
|
+
path,
|
|
538
|
+
role: public_1.default,
|
|
539
|
+
username: 'anonymous'
|
|
540
|
+
};
|
|
370
541
|
}
|
|
371
|
-
const {
|
|
372
|
-
|
|
542
|
+
const { username, role_key } = account;
|
|
543
|
+
const roles = this.getRoles();
|
|
544
|
+
const role = (0, extract_role_1.default)(roles, role_key);
|
|
545
|
+
return {
|
|
546
|
+
path,
|
|
547
|
+
role,
|
|
548
|
+
username
|
|
549
|
+
};
|
|
373
550
|
}
|
|
374
551
|
getRoles() {
|
|
375
552
|
const execution_context = this.getExecutionContext();
|