@paroicms/server 1.78.1 → 1.80.0
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/README.md +4 -4
- package/dist/{modules/core → bo-backend}/account/account.formatters.js +1 -1
- package/dist/bo-backend/account/account.formatters.js.map +1 -0
- package/dist/{modules/core → bo-backend}/account/account.queries.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/account/account.queries.js +58 -95
- package/dist/bo-backend/account/account.queries.js.map +1 -0
- package/dist/bo-backend/account/account.resolver.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/account/account.resolver.js +18 -18
- package/dist/bo-backend/account/account.resolver.js.map +1 -0
- package/dist/{modules/core → bo-backend}/auth/auth.helper.d.ts +2 -1
- package/dist/{modules/core → bo-backend}/auth/auth.helper.js +4 -3
- package/dist/bo-backend/auth/auth.helper.js.map +1 -0
- package/dist/{modules/core → bo-backend}/auth/auth.service.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/auth/auth.service.js +5 -5
- package/dist/bo-backend/auth/auth.service.js.map +1 -0
- package/dist/bo-backend/auth/auth.types.js.map +1 -0
- package/dist/bo-backend/backup/backup.controller.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/backup/backup.controller.js +6 -6
- package/dist/bo-backend/backup/backup.controller.js.map +1 -0
- package/dist/{modules/core → bo-backend}/backup/backup.helper.js +2 -2
- package/dist/bo-backend/backup/backup.helper.js.map +1 -0
- package/dist/{modules/core → bo-backend}/backup/backup.resolver.d.ts +2 -2
- package/dist/{modules/core → bo-backend}/backup/backup.resolver.js +3 -3
- package/dist/bo-backend/backup/backup.resolver.js.map +1 -0
- package/dist/bo-backend/document/document.helper.js.map +1 -0
- package/dist/bo-backend/document/document.resolver.d.ts +3 -0
- package/dist/bo-backend/document/document.resolver.extend.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/document/document.resolver.extend.js +5 -5
- package/dist/bo-backend/document/document.resolver.extend.js.map +1 -0
- package/dist/{modules/core → bo-backend}/document/document.resolver.js +16 -16
- package/dist/bo-backend/document/document.resolver.js.map +1 -0
- package/dist/{modules/core → bo-backend}/document/load-documents.queries.d.ts +1 -1
- package/dist/bo-backend/document/load-documents.queries.js +90 -0
- package/dist/bo-backend/document/load-documents.queries.js.map +1 -0
- package/dist/{modules/core → bo-backend}/document/save-documents.queries.d.ts +1 -1
- package/dist/bo-backend/document/save-documents.queries.js +206 -0
- package/dist/bo-backend/document/save-documents.queries.js.map +1 -0
- package/dist/bo-backend/fields/_fields.helpers.js.map +1 -0
- package/dist/{modules/core → bo-backend}/fields/fields.resolver.d.ts +2 -2
- package/dist/{modules/core → bo-backend}/fields/fields.resolver.js +11 -11
- package/dist/bo-backend/fields/fields.resolver.js.map +1 -0
- package/dist/{modules/core → bo-backend}/fields/load-fields-of.queries.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/fields/load-fields-of.queries.js +10 -12
- package/dist/bo-backend/fields/load-fields-of.queries.js.map +1 -0
- package/dist/{modules/core → bo-backend}/fields/load-fields.queries.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/fields/load-fields.queries.js +14 -26
- package/dist/bo-backend/fields/load-fields.queries.js.map +1 -0
- package/dist/{modules/core → bo-backend}/fields/preprocess-fields.d.ts +2 -2
- package/dist/{modules/core → bo-backend}/fields/preprocess-fields.js +1 -1
- package/dist/bo-backend/fields/preprocess-fields.js.map +1 -0
- package/dist/{modules/core → bo-backend}/fields/save-fields.queries.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/fields/save-fields.queries.js +27 -39
- package/dist/bo-backend/fields/save-fields.queries.js.map +1 -0
- package/dist/{modules/core → bo-backend}/labeling/labeling.queries.d.ts +1 -1
- package/dist/bo-backend/labeling/labeling.queries.js +47 -0
- package/dist/bo-backend/labeling/labeling.queries.js.map +1 -0
- package/dist/bo-backend/labeling/labeling.resolver.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/labeling/labeling.resolver.js +2 -2
- package/dist/bo-backend/labeling/labeling.resolver.js.map +1 -0
- package/dist/bo-backend/login/login.controller.d.ts +3 -0
- package/dist/bo-backend/login/login.controller.js +31 -0
- package/dist/bo-backend/login/login.controller.js.map +1 -0
- package/dist/{modules/core → bo-backend}/media/add-media-to-node.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/media/add-media-to-node.js +4 -4
- package/dist/bo-backend/media/add-media-to-node.js.map +1 -0
- package/dist/bo-backend/media/media-upload.controller.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/media/media-upload.controller.js +4 -5
- package/dist/bo-backend/media/media-upload.controller.js.map +1 -0
- package/dist/{modules/core → bo-backend}/media/media.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/media/media.js +2 -2
- package/dist/bo-backend/media/media.js.map +1 -0
- package/dist/bo-backend/media/media.resolver.d.ts +3 -0
- package/dist/bo-backend/media/media.resolver.extend.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/media/media.resolver.extend.js +2 -2
- package/dist/bo-backend/media/media.resolver.extend.js.map +1 -0
- package/dist/{modules/core → bo-backend}/media/media.resolver.js +20 -20
- package/dist/bo-backend/media/media.resolver.js.map +1 -0
- package/dist/{modules/core → bo-backend}/node/node.queries.d.ts +2 -2
- package/dist/{modules/core → bo-backend}/node/node.queries.js +40 -69
- package/dist/bo-backend/node/node.queries.js.map +1 -0
- package/dist/bo-backend/node/node.resolver.d.ts +3 -0
- package/dist/bo-backend/node/node.resolver.extend.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/node/node.resolver.extend.js +2 -2
- package/dist/bo-backend/node/node.resolver.extend.js.map +1 -0
- package/dist/{modules/core → bo-backend}/node/node.resolver.js +8 -8
- package/dist/bo-backend/node/node.resolver.js.map +1 -0
- package/dist/{modules/core → bo-backend}/node/ordered-node.queries.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/node/ordered-node.queries.js +13 -25
- package/dist/bo-backend/node/ordered-node.queries.js.map +1 -0
- package/dist/{modules/core → bo-backend}/nodel/nodel-wrap.formatters.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/nodel/nodel-wrap.formatters.js +1 -1
- package/dist/bo-backend/nodel/nodel-wrap.formatters.js.map +1 -0
- package/dist/bo-backend/nodel/nodel-wrap.resolver.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/nodel/nodel-wrap.resolver.js +20 -25
- package/dist/bo-backend/nodel/nodel-wrap.resolver.js.map +1 -0
- package/dist/{modules/core → bo-backend}/nodel/nodel.queries.d.ts +3 -3
- package/dist/{modules/core → bo-backend}/nodel/nodel.queries.js +57 -69
- package/dist/bo-backend/nodel/nodel.queries.js.map +1 -0
- package/dist/bo-backend/part/part-node.queries.d.ts +9 -0
- package/dist/bo-backend/part/part-node.queries.js +38 -0
- package/dist/bo-backend/part/part-node.queries.js.map +1 -0
- package/dist/{modules/core → bo-backend}/part/part.queries.d.ts +1 -1
- package/dist/{modules/core → bo-backend}/part/part.queries.js +89 -108
- package/dist/bo-backend/part/part.queries.js.map +1 -0
- package/dist/bo-backend/part/part.resolver.d.ts +3 -0
- package/dist/bo-backend/part/part.resolver.extend.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/part/part.resolver.extend.js +4 -4
- package/dist/bo-backend/part/part.resolver.extend.js.map +1 -0
- package/dist/{modules/core → bo-backend}/part/part.resolver.js +10 -10
- package/dist/bo-backend/part/part.resolver.js.map +1 -0
- package/dist/bo-backend/site-constants/site-constants.resolver.d.ts +3 -0
- package/dist/{modules/core → bo-backend}/site-constants/site-constants.resolver.js +9 -9
- package/dist/bo-backend/site-constants/site-constants.resolver.js.map +1 -0
- package/dist/{modules/core → bo-backend}/unprotected/unprotected.resolver.d.ts +2 -2
- package/dist/{modules/core → bo-backend}/unprotected/unprotected.resolver.js +2 -2
- package/dist/bo-backend/unprotected/unprotected.resolver.js.map +1 -0
- package/dist/common/child-ordering-query.d.ts +2 -3
- package/dist/common/child-ordering-query.js +14 -18
- package/dist/common/child-ordering-query.js.map +1 -1
- package/dist/common/data-format.d.ts +3 -3
- package/dist/common/data-format.js.map +1 -1
- package/dist/common/serve-text-or.d.ts +3 -5
- package/dist/common/serve-text-or.js +7 -16
- package/dist/common/serve-text-or.js.map +1 -1
- package/dist/common/text-cache.js +1 -1
- package/dist/common/text-cache.js.map +1 -1
- package/dist/express/http-helpers.d.ts +17 -18
- package/dist/express/http-helpers.js +26 -25
- package/dist/express/http-helpers.js.map +1 -1
- package/dist/express/http-redirection-middleware.d.ts +2 -0
- package/dist/express/http-redirection-middleware.js +11 -0
- package/dist/express/http-redirection-middleware.js.map +1 -0
- package/dist/express/{create-redirect-url.js → http-redirection-url.js} +1 -1
- package/dist/express/http-redirection-url.js.map +1 -0
- package/dist/express/pa-http-context.d.ts +3 -0
- package/dist/express/pa-http-context.js +39 -0
- package/dist/express/pa-http-context.js.map +1 -0
- package/dist/express/public-api-middlewares.d.ts +3 -2
- package/dist/express/public-api-middlewares.js +9 -16
- package/dist/express/public-api-middlewares.js.map +1 -1
- package/dist/express/route-handler-wrapper.d.ts +9 -2
- package/dist/express/route-handler-wrapper.js +81 -28
- package/dist/express/route-handler-wrapper.js.map +1 -1
- package/dist/express/serve-file.d.ts +8 -0
- package/dist/express/serve-file.js +58 -0
- package/dist/express/serve-file.js.map +1 -0
- package/dist/express/site-middleware.d.ts +3 -0
- package/dist/express/site-middleware.js +83 -0
- package/dist/express/site-middleware.js.map +1 -0
- package/dist/express/static-files-middlewares.d.ts +5 -4
- package/dist/express/static-files-middlewares.js +48 -89
- package/dist/express/static-files-middlewares.js.map +1 -1
- package/dist/graphql/apollo-server-init.d.ts +1 -1
- package/dist/graphql/apollo-server-init.js +15 -15
- package/dist/graphql/apollo-server-init.js.map +1 -1
- package/dist/graphql/complexity-plugin.d.ts +1 -1
- package/dist/graphql/error-converter-plugin.d.ts +1 -1
- package/dist/graphql/error-converter-plugin.js.map +1 -1
- package/dist/{modules → graphql}/graphql.types.d.ts +2 -3
- package/dist/graphql/graphql.types.js.map +1 -0
- package/dist/helpers/cors-middleware.d.ts +6 -2
- package/dist/helpers/cors-middleware.js.map +1 -1
- package/dist/helpers/make-backend-plugin-service.js +8 -8
- package/dist/helpers/make-backend-plugin-service.js.map +1 -1
- package/dist/helpers/running-instance-connector.js +7 -12
- package/dist/helpers/running-instance-connector.js.map +1 -1
- package/dist/index.js +11 -82
- package/dist/index.js.map +1 -1
- package/dist/{modules/core/account-auth → oauth}/account-auth.service.d.ts +1 -1
- package/dist/{modules/core/account-auth → oauth}/account-auth.service.js +1 -1
- package/dist/oauth/account-auth.service.js.map +1 -0
- package/dist/{modules/core/account-auth → oauth}/account-auth.strategy.js +1 -1
- package/dist/oauth/account-auth.strategy.js.map +1 -0
- package/dist/oauth/oauth-middleware.d.ts +2 -2
- package/dist/oauth/oauth-middleware.js +19 -14
- package/dist/oauth/oauth-middleware.js.map +1 -1
- package/dist/oauth/oauth2-client.controller.d.ts +1 -1
- package/dist/oauth/oauth2-client.controller.js +4 -4
- package/dist/oauth/oauth2-client.controller.js.map +1 -1
- package/dist/{modules/public-api → public-api}/mail/validate-recaptcha-response.d.ts +1 -1
- package/dist/{modules/public-api → public-api}/mail/validate-recaptcha-response.js +1 -1
- package/dist/public-api/mail/validate-recaptcha-response.js.map +1 -0
- package/dist/public-api/password-reset/password-reset.controller.d.ts +6 -0
- package/dist/public-api/password-reset/password-reset.controller.js +46 -0
- package/dist/public-api/password-reset/password-reset.controller.js.map +1 -0
- package/dist/{modules/public-api → public-api}/password-reset/password-reset.service.d.ts +1 -1
- package/dist/{modules/public-api → public-api}/password-reset/password-reset.service.js +21 -19
- package/dist/public-api/password-reset/password-reset.service.js.map +1 -0
- package/dist/public-api/public-api-controller.d.ts +7 -0
- package/dist/public-api/public-api-controller.js +6 -0
- package/dist/public-api/public-api-controller.js.map +1 -0
- package/dist/{modules/public-api → public-api}/public-api-rendering.d.ts +4 -9
- package/dist/{modules/public-api → public-api}/public-api-rendering.js +24 -22
- package/dist/public-api/public-api-rendering.js.map +1 -0
- package/dist/{modules/public-api → public-api}/search-text/search-text.queries.d.ts +3 -3
- package/dist/public-api/search-text/search-text.queries.js +82 -0
- package/dist/public-api/search-text/search-text.queries.js.map +1 -0
- package/dist/public-payload/breadcrumb.queries.js +2 -2
- package/dist/public-payload/breadcrumb.queries.js.map +1 -1
- package/dist/public-payload/create-doc-drop.js +3 -3
- package/dist/public-payload/create-doc-drop.js.map +1 -1
- package/dist/public-payload/doc-values.queries.d.ts +2 -2
- package/dist/public-payload/doc-values.queries.js +33 -34
- package/dist/public-payload/doc-values.queries.js.map +1 -1
- package/dist/public-payload/excerpt.queries.js +9 -8
- package/dist/public-payload/excerpt.queries.js.map +1 -1
- package/dist/public-payload/field-values.js +3 -3
- package/dist/public-payload/field-values.js.map +1 -1
- package/dist/public-payload/get-siblings.queries.js +38 -47
- package/dist/public-payload/get-siblings.queries.js.map +1 -1
- package/dist/public-payload/load-default-image.js +1 -1
- package/dist/public-payload/load-default-image.js.map +1 -1
- package/dist/public-payload/parts.queries.js +34 -38
- package/dist/public-payload/parts.queries.js.map +1 -1
- package/dist/public-payload/site-payload.js +1 -1
- package/dist/public-payload/site-payload.js.map +1 -1
- package/dist/public-payload/taxonomies.queries.js +17 -15
- package/dist/public-payload/taxonomies.queries.js.map +1 -1
- package/dist/public-payload/translations.queries.js +6 -8
- package/dist/public-payload/translations.queries.js.map +1 -1
- package/dist/public-site/common-routes.controller.d.ts +4 -0
- package/dist/{modules/app.controller.js → public-site/common-routes.controller.js} +8 -7
- package/dist/public-site/common-routes.controller.js.map +1 -0
- package/dist/{modules/public-site → public-site}/feed/feed-generator.d.ts +2 -2
- package/dist/{modules/public-site → public-site}/feed/feed-generator.js +34 -28
- package/dist/public-site/feed/feed-generator.js.map +1 -0
- package/dist/public-site/feed/feed-helpers.js.map +1 -0
- package/dist/public-site/feed/feed.middleware.d.ts +3 -0
- package/dist/{modules/public-site → public-site}/feed/feed.middleware.js +16 -23
- package/dist/public-site/feed/feed.middleware.js.map +1 -0
- package/dist/public-site/helpers/format-date.helper.js.map +1 -0
- package/dist/{modules/public-site → public-site}/helpers/medias.helpers.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/helpers/medias.helpers.js +1 -1
- package/dist/public-site/helpers/medias.helpers.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/format-date.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-filters/format-date.js +1 -1
- package/dist/public-site/liquidjs-filters/format-date.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/format-number.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-filters/format-number.js +1 -1
- package/dist/public-site/liquidjs-filters/format-number.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/head-tags-filter.d.ts +2 -2
- package/dist/{modules/public-site → public-site}/liquidjs-filters/head-tags-filter.js +5 -5
- package/dist/public-site/liquidjs-filters/head-tags-filter.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/image-zoom-url.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-filters/image-zoom-url.js +3 -3
- package/dist/public-site/liquidjs-filters/image-zoom-url.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/info-filter.js +1 -1
- package/dist/public-site/liquidjs-filters/info-filter.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/inject-menu-items-data.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-filters/inject-menu-items-data.js +2 -2
- package/dist/public-site/liquidjs-filters/inject-menu-items-data.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/make-excerpt.js +1 -1
- package/dist/public-site/liquidjs-filters/make-excerpt.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/obfuscate.d.ts +1 -1
- package/dist/public-site/liquidjs-filters/obfuscate.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/open-graph-filter.d.ts +4 -4
- package/dist/{modules/public-site → public-site}/liquidjs-filters/open-graph-filter.js +2 -2
- package/dist/public-site/liquidjs-filters/open-graph-filter.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/plugin-asset-url-filter.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-filters/plugin-asset-url-filter.js +2 -2
- package/dist/public-site/liquidjs-filters/plugin-asset-url-filter.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-filters/translate-filter.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-filters/translate-filter.js +1 -1
- package/dist/public-site/liquidjs-filters/translate-filter.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-tags/get-doc-tag.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-tags/get-doc-tag.js +5 -5
- package/dist/public-site/liquidjs-tags/get-doc-tag.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-tags/get-docs-tag.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-tags/get-docs-tag.js +6 -6
- package/dist/public-site/liquidjs-tags/get-docs-tag.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-tags/get-paginated-docs-tag.d.ts +5 -5
- package/dist/{modules/public-site → public-site}/liquidjs-tags/get-paginated-docs-tag.js +6 -6
- package/dist/public-site/liquidjs-tags/get-paginated-docs-tag.js.map +1 -0
- package/dist/{modules/public-site → public-site}/liquidjs-tags/use-image-tag.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/liquidjs-tags/use-image-tag.js +3 -3
- package/dist/public-site/liquidjs-tags/use-image-tag.js.map +1 -0
- package/dist/public-site/media-serve/_media-serve-helpers.js.map +1 -0
- package/dist/public-site/media-serve/media-serve.controller.d.ts +5 -0
- package/dist/{modules/public-site → public-site}/media-serve/media-serve.controller.js +22 -22
- package/dist/public-site/media-serve/media-serve.controller.js.map +1 -0
- package/dist/{modules/public-site → public-site}/public-route/make-url.d.ts +1 -1
- package/dist/{modules/public-site → public-site}/public-route/make-url.js +46 -32
- package/dist/public-site/public-route/make-url.js.map +1 -0
- package/dist/{modules/public-site → public-site}/public-route/public-route-parser.d.ts +2 -2
- package/dist/{modules/public-site → public-site}/public-route/public-route-parser.js +7 -7
- package/dist/public-site/public-route/public-route-parser.js.map +1 -0
- package/dist/{modules/public-site → public-site}/public-route/raw-document-payload.d.ts +2 -2
- package/dist/public-site/public-route/raw-document-payload.js +77 -0
- package/dist/public-site/public-route/raw-document-payload.js.map +1 -0
- package/dist/public-site/public-site.middleware.d.ts +3 -0
- package/dist/public-site/public-site.middleware.js +55 -0
- package/dist/public-site/public-site.middleware.js.map +1 -0
- package/dist/{modules/public-site → public-site}/serve-document/serve-document.d.ts +3 -4
- package/dist/{modules/public-site → public-site}/serve-document/serve-document.js +7 -7
- package/dist/public-site/serve-document/serve-document.js.map +1 -0
- package/dist/public-site/serve-index-page.d.ts +5 -0
- package/dist/public-site/serve-index-page.js +26 -0
- package/dist/public-site/serve-index-page.js.map +1 -0
- package/dist/site-context/create-site-context.js +16 -16
- package/dist/site-context/create-site-context.js.map +1 -1
- package/dist/site-context/site-context.types.d.ts +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/dist/express/create-redirect-url.js.map +0 -1
- package/dist/express/small-middlewares.d.ts +0 -4
- package/dist/express/small-middlewares.js +0 -29
- package/dist/express/small-middlewares.js.map +0 -1
- package/dist/modules/app.controller.d.ts +0 -3
- package/dist/modules/app.controller.js.map +0 -1
- package/dist/modules/core/account/account.formatters.js.map +0 -1
- package/dist/modules/core/account/account.queries.js.map +0 -1
- package/dist/modules/core/account/account.resolver.d.ts +0 -3
- package/dist/modules/core/account/account.resolver.js.map +0 -1
- package/dist/modules/core/account-auth/account-auth.service.js.map +0 -1
- package/dist/modules/core/account-auth/account-auth.strategy.js.map +0 -1
- package/dist/modules/core/auth/auth.helper.js.map +0 -1
- package/dist/modules/core/auth/auth.service.js.map +0 -1
- package/dist/modules/core/auth/auth.types.js.map +0 -1
- package/dist/modules/core/backup/backup.controller.d.ts +0 -2
- package/dist/modules/core/backup/backup.controller.js.map +0 -1
- package/dist/modules/core/backup/backup.helper.js.map +0 -1
- package/dist/modules/core/backup/backup.resolver.js.map +0 -1
- package/dist/modules/core/document/document.helper.js.map +0 -1
- package/dist/modules/core/document/document.resolver.d.ts +0 -3
- package/dist/modules/core/document/document.resolver.extend.d.ts +0 -3
- package/dist/modules/core/document/document.resolver.extend.js.map +0 -1
- package/dist/modules/core/document/document.resolver.js.map +0 -1
- package/dist/modules/core/document/load-documents.queries.js +0 -104
- package/dist/modules/core/document/load-documents.queries.js.map +0 -1
- package/dist/modules/core/document/save-documents.queries.js +0 -296
- package/dist/modules/core/document/save-documents.queries.js.map +0 -1
- package/dist/modules/core/fields/_fields.helpers.js.map +0 -1
- package/dist/modules/core/fields/fields.resolver.js.map +0 -1
- package/dist/modules/core/fields/load-fields-of.queries.js.map +0 -1
- package/dist/modules/core/fields/load-fields.queries.js.map +0 -1
- package/dist/modules/core/fields/preprocess-fields.js.map +0 -1
- package/dist/modules/core/fields/save-fields.queries.js.map +0 -1
- package/dist/modules/core/labeling/labeling.queries.js +0 -53
- package/dist/modules/core/labeling/labeling.queries.js.map +0 -1
- package/dist/modules/core/labeling/labeling.resolver.d.ts +0 -3
- package/dist/modules/core/labeling/labeling.resolver.js.map +0 -1
- package/dist/modules/core/login/login.controller.d.ts +0 -2
- package/dist/modules/core/login/login.controller.js +0 -17
- package/dist/modules/core/login/login.controller.js.map +0 -1
- package/dist/modules/core/media/add-media-to-node.js.map +0 -1
- package/dist/modules/core/media/media-upload.controller.d.ts +0 -2
- package/dist/modules/core/media/media-upload.controller.js.map +0 -1
- package/dist/modules/core/media/media.js.map +0 -1
- package/dist/modules/core/media/media.resolver.d.ts +0 -3
- package/dist/modules/core/media/media.resolver.extend.d.ts +0 -3
- package/dist/modules/core/media/media.resolver.extend.js.map +0 -1
- package/dist/modules/core/media/media.resolver.js.map +0 -1
- package/dist/modules/core/node/node.queries.js.map +0 -1
- package/dist/modules/core/node/node.resolver.d.ts +0 -3
- package/dist/modules/core/node/node.resolver.extend.d.ts +0 -3
- package/dist/modules/core/node/node.resolver.extend.js.map +0 -1
- package/dist/modules/core/node/node.resolver.js.map +0 -1
- package/dist/modules/core/node/ordered-node.queries.js.map +0 -1
- package/dist/modules/core/nodel/nodel-wrap.formatters.js.map +0 -1
- package/dist/modules/core/nodel/nodel-wrap.resolver.d.ts +0 -3
- package/dist/modules/core/nodel/nodel-wrap.resolver.js.map +0 -1
- package/dist/modules/core/nodel/nodel.queries.js.map +0 -1
- package/dist/modules/core/part/part-node.queries.d.ts +0 -9
- package/dist/modules/core/part/part-node.queries.js +0 -59
- package/dist/modules/core/part/part-node.queries.js.map +0 -1
- package/dist/modules/core/part/part.queries.js.map +0 -1
- package/dist/modules/core/part/part.resolver.d.ts +0 -3
- package/dist/modules/core/part/part.resolver.extend.d.ts +0 -3
- package/dist/modules/core/part/part.resolver.extend.js.map +0 -1
- package/dist/modules/core/part/part.resolver.js.map +0 -1
- package/dist/modules/core/site-constants/site-constants.resolver.d.ts +0 -3
- package/dist/modules/core/site-constants/site-constants.resolver.js.map +0 -1
- package/dist/modules/core/unprotected/unprotected.resolver.js.map +0 -1
- package/dist/modules/graphql.types.js.map +0 -1
- package/dist/modules/public-api/mail/validate-recaptcha-response.js.map +0 -1
- package/dist/modules/public-api/partials/partials-params.dto.d.ts +0 -6
- package/dist/modules/public-api/partials/partials-params.dto.js +0 -41
- package/dist/modules/public-api/partials/partials-params.dto.js.map +0 -1
- package/dist/modules/public-api/password-reset/password-reset.controller.d.ts +0 -5
- package/dist/modules/public-api/password-reset/password-reset.controller.js +0 -22
- package/dist/modules/public-api/password-reset/password-reset.controller.js.map +0 -1
- package/dist/modules/public-api/password-reset/password-reset.dto.d.ts +0 -3
- package/dist/modules/public-api/password-reset/password-reset.dto.js +0 -29
- package/dist/modules/public-api/password-reset/password-reset.dto.js.map +0 -1
- package/dist/modules/public-api/password-reset/password-reset.service.js.map +0 -1
- package/dist/modules/public-api/public-api-controller.d.ts +0 -8
- package/dist/modules/public-api/public-api-controller.js +0 -6
- package/dist/modules/public-api/public-api-controller.js.map +0 -1
- package/dist/modules/public-api/public-api-rendering.js.map +0 -1
- package/dist/modules/public-api/search-text/search-text.dto.d.ts +0 -7
- package/dist/modules/public-api/search-text/search-text.dto.js +0 -46
- package/dist/modules/public-api/search-text/search-text.dto.js.map +0 -1
- package/dist/modules/public-api/search-text/search-text.queries.js +0 -60
- package/dist/modules/public-api/search-text/search-text.queries.js.map +0 -1
- package/dist/modules/public-site/feed/feed-generator.js.map +0 -1
- package/dist/modules/public-site/feed/feed-helpers.js.map +0 -1
- package/dist/modules/public-site/feed/feed.middleware.d.ts +0 -2
- package/dist/modules/public-site/feed/feed.middleware.js.map +0 -1
- package/dist/modules/public-site/helpers/format-date.helper.js.map +0 -1
- package/dist/modules/public-site/helpers/medias.helpers.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/format-date.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/format-number.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/head-tags-filter.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/image-zoom-url.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/info-filter.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/inject-menu-items-data.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/make-excerpt.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/obfuscate.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/open-graph-filter.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/plugin-asset-url-filter.js.map +0 -1
- package/dist/modules/public-site/liquidjs-filters/translate-filter.js.map +0 -1
- package/dist/modules/public-site/liquidjs-tags/get-doc-tag.js.map +0 -1
- package/dist/modules/public-site/liquidjs-tags/get-docs-tag.js.map +0 -1
- package/dist/modules/public-site/liquidjs-tags/get-paginated-docs-tag.js.map +0 -1
- package/dist/modules/public-site/liquidjs-tags/use-image-tag.js.map +0 -1
- package/dist/modules/public-site/media-serve/_media-serve-helpers.js.map +0 -1
- package/dist/modules/public-site/media-serve/media-serve.controller.d.ts +0 -4
- package/dist/modules/public-site/media-serve/media-serve.controller.js.map +0 -1
- package/dist/modules/public-site/public-route/make-url.js.map +0 -1
- package/dist/modules/public-site/public-route/public-route-parser.js.map +0 -1
- package/dist/modules/public-site/public-route/raw-document-payload.js +0 -67
- package/dist/modules/public-site/public-route/raw-document-payload.js.map +0 -1
- package/dist/modules/public-site/public-site.controller.d.ts +0 -2
- package/dist/modules/public-site/public-site.controller.js +0 -27
- package/dist/modules/public-site/public-site.controller.js.map +0 -1
- package/dist/modules/public-site/public-site.middleware.d.ts +0 -2
- package/dist/modules/public-site/public-site.middleware.js +0 -47
- package/dist/modules/public-site/public-site.middleware.js.map +0 -1
- package/dist/modules/public-site/serve-document/serve-document.js.map +0 -1
- /package/dist/{modules/core → bo-backend}/account/account.formatters.d.ts +0 -0
- /package/dist/{modules/core → bo-backend}/auth/auth.types.d.ts +0 -0
- /package/dist/{modules/core → bo-backend}/auth/auth.types.js +0 -0
- /package/dist/{modules/core → bo-backend}/backup/backup.helper.d.ts +0 -0
- /package/dist/{modules/core → bo-backend}/document/document.helper.d.ts +0 -0
- /package/dist/{modules/core → bo-backend}/document/document.helper.js +0 -0
- /package/dist/{modules/core → bo-backend}/fields/_fields.helpers.d.ts +0 -0
- /package/dist/{modules/core → bo-backend}/fields/_fields.helpers.js +0 -0
- /package/dist/express/{create-redirect-url.d.ts → http-redirection-url.d.ts} +0 -0
- /package/dist/{modules → graphql}/graphql.types.js +0 -0
- /package/dist/{modules/core/account-auth → oauth}/account-auth.strategy.d.ts +0 -0
- /package/dist/{modules/public-site → public-site}/feed/feed-helpers.d.ts +0 -0
- /package/dist/{modules/public-site → public-site}/feed/feed-helpers.js +0 -0
- /package/dist/{modules/public-site → public-site}/helpers/format-date.helper.d.ts +0 -0
- /package/dist/{modules/public-site → public-site}/helpers/format-date.helper.js +0 -0
- /package/dist/{modules/public-site → public-site}/liquidjs-filters/info-filter.d.ts +0 -0
- /package/dist/{modules/public-site → public-site}/liquidjs-filters/make-excerpt.d.ts +0 -0
- /package/dist/{modules/public-site → public-site}/liquidjs-filters/obfuscate.js +0 -0
- /package/dist/{modules/public-site → public-site}/media-serve/_media-serve-helpers.d.ts +0 -0
- /package/dist/{modules/public-site → public-site}/media-serve/_media-serve-helpers.js +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Stream } from "node:stream";
|
|
2
|
+
export function toPaHttpContext(expressReq, expressRes) {
|
|
3
|
+
const req = {
|
|
4
|
+
hostname: expressReq.hostname,
|
|
5
|
+
headers: expressReq.headers,
|
|
6
|
+
method: expressReq.method,
|
|
7
|
+
relativeUrl: expressReq.url,
|
|
8
|
+
path: expressReq.path,
|
|
9
|
+
query: expressReq.query,
|
|
10
|
+
body: expressReq.body,
|
|
11
|
+
file: expressReq.file,
|
|
12
|
+
};
|
|
13
|
+
let headersSent = false;
|
|
14
|
+
const res = {
|
|
15
|
+
get headersSent() {
|
|
16
|
+
return headersSent || expressRes.headersSent;
|
|
17
|
+
},
|
|
18
|
+
status(code) {
|
|
19
|
+
expressRes.status(code);
|
|
20
|
+
return res;
|
|
21
|
+
},
|
|
22
|
+
append(field, value) {
|
|
23
|
+
expressRes.append(field, value);
|
|
24
|
+
return res;
|
|
25
|
+
},
|
|
26
|
+
send(body) {
|
|
27
|
+
headersSent = true;
|
|
28
|
+
if (body instanceof Stream) {
|
|
29
|
+
body.pipe(expressRes);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
expressRes.send(body);
|
|
33
|
+
}
|
|
34
|
+
return res;
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
return { req, res };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=pa-http-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pa-http-context.js","sourceRoot":"","sources":["../../src/express/pa-http-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,UAAU,eAAe,CAAC,UAAmB,EAAE,UAAoB;IACvE,MAAM,GAAG,GAAkB;QACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,OAAO,EAAE,UAAU,CAAC,OAAuD;QAC3E,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,WAAW,EAAE,UAAU,CAAC,GAAG;QAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,KAAwD;QAC1E,IAAI,EAAE,UAAU,CAAC,IAA0B;QAC3C,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAC;IAEF,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,GAAG,GAAmB;QAC1B,IAAI,WAAW;YACb,OAAO,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,IAAI;YACT,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,KAAK;YACjB,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,CAAC,IAAI;YACP,WAAW,GAAG,IAAI,CAAC;YACnB,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { PaHttpContext } from "@paroicms/public-server-lib";
|
|
2
|
+
import type { SiteContext } from "../site-context/site-context.types.js";
|
|
3
|
+
export declare function pluginPublicApiReqHandler(siteContext: SiteContext, httpContext: PaHttpContext): Promise<boolean>;
|
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
import { makeBackendPluginRenderService } from "../helpers/make-backend-plugin-service.js";
|
|
2
2
|
import { createNoRenderingContext } from "../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
3
|
-
import {
|
|
4
|
-
export async function
|
|
5
|
-
const
|
|
3
|
+
import { serve404SimpleHtml } from "./http-helpers.js";
|
|
4
|
+
export async function pluginPublicApiReqHandler(siteContext, httpContext) {
|
|
5
|
+
const { req } = httpContext;
|
|
6
6
|
const path = req.path;
|
|
7
7
|
const prefix = "/api/plugin/";
|
|
8
|
-
if (!path.startsWith(prefix))
|
|
9
|
-
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
8
|
+
if (!path.startsWith(prefix))
|
|
9
|
+
return false;
|
|
12
10
|
const sepIndex = path.indexOf("/", prefix.length);
|
|
13
11
|
const pluginPublicDirName = sepIndex === -1 ? path.substring(prefix.length) : path.substring(prefix.length, sepIndex);
|
|
14
12
|
const relativePath = sepIndex === -1 ? "" : path.substring(sepIndex);
|
|
15
13
|
const plugin = siteContext.plugins.get(pluginPublicDirName);
|
|
16
14
|
if (!plugin || !plugin.publicApiHandler) {
|
|
17
|
-
serve404SimpleHtml(
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
try {
|
|
21
|
-
await plugin.publicApiHandler(makeBackendPluginRenderService(siteContext, createNoRenderingContext(), plugin), req, res, relativePath);
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
siteContext.logger.error(error);
|
|
25
|
-
serve500Html(res);
|
|
15
|
+
serve404SimpleHtml(httpContext);
|
|
16
|
+
return true;
|
|
26
17
|
}
|
|
18
|
+
await plugin.publicApiHandler(makeBackendPluginRenderService(siteContext, createNoRenderingContext(), plugin), httpContext, relativePath);
|
|
19
|
+
return true;
|
|
27
20
|
}
|
|
28
21
|
//# sourceMappingURL=public-api-middlewares.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api-middlewares.js","sourceRoot":"","sources":["../../src/express/public-api-middlewares.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC;
|
|
1
|
+
{"version":3,"file":"public-api-middlewares.js","sourceRoot":"","sources":["../../src/express/public-api-middlewares.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC;AAErG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAAwB,EACxB,WAA0B;IAE1B,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;IAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,MAAM,GAAG,cAAc,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,mBAAmB,GACvB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5F,MAAM,YAAY,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACxC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,CAAC,gBAAgB,CAC3B,8BAA8B,CAAC,WAAW,EAAE,wBAAwB,EAAE,EAAE,MAAM,CAAC,EAC/E,WAAW,EACX,YAAY,CACb,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import type { PaHttpContext } from "@paroicms/public-server-lib";
|
|
1
2
|
import type { NextFunction, Request, Response } from "express";
|
|
2
3
|
import { Stream } from "node:stream";
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
4
|
+
import type { SiteContext } from "../site-context/site-context.types.js";
|
|
5
|
+
export declare function loadPaContextsMiddleware(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
6
|
+
export type PaRouteController = (siteContext: SiteContext, httpContext: PaHttpContext, routeParams: Record<string, string | undefined>) => Promise<unknown>;
|
|
7
|
+
export declare function wrapRouteController(handler: PaRouteController): (req: Request, res: Response) => Promise<void>;
|
|
8
|
+
export type PaReqHandler = (siteContext: SiteContext, httpContext: PaHttpContext) => Promise<boolean>;
|
|
9
|
+
export declare function reqHandlerToExpressMiddleware(handler: PaReqHandler): (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
10
|
+
export declare function mergeReqHandlers(handlers: PaReqHandler[]): PaReqHandler;
|
|
11
|
+
export declare function wrapExpressRoute(handler: (req: Request, res: Response) => Promise<unknown>): (req: Request, res: Response) => Promise<Stream | undefined>;
|
|
@@ -1,8 +1,77 @@
|
|
|
1
1
|
import { Stream } from "node:stream";
|
|
2
2
|
import { ApiError } from "../common/api-error-handler.js";
|
|
3
3
|
import { platformLogger } from "../context.js";
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { getSiteContext } from "../site-context/site-context.js";
|
|
5
|
+
import { getPaSiteContext, serve404SimpleHtml, serve500Html } from "./http-helpers.js";
|
|
6
|
+
import { toPaHttpContext } from "./pa-http-context.js";
|
|
7
|
+
export async function loadPaContextsMiddleware(req, res, next) {
|
|
8
|
+
try {
|
|
9
|
+
const siteContext = await getSiteContext(req.hostname, { returnsUndef: true });
|
|
10
|
+
if (!siteContext) {
|
|
11
|
+
platformLogger.debug(`[404] Site not found: ${req.protocol}://${req.hostname}${req.originalUrl}`);
|
|
12
|
+
serve404SimpleHtml(toPaHttpContext(req, res));
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
req.paSiteContext = siteContext;
|
|
16
|
+
next();
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
handleErrorSafely(req, res, error, undefined);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function wrapRouteController(handler) {
|
|
23
|
+
return async (req, res) => {
|
|
24
|
+
const httpContext = toPaHttpContext(req, res);
|
|
25
|
+
const siteContext = getPaSiteContext(req);
|
|
26
|
+
try {
|
|
27
|
+
let result = await handler(siteContext, httpContext, req.params);
|
|
28
|
+
if (result instanceof Stream) {
|
|
29
|
+
result.pipe(res);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (!httpContext.res.headersSent) {
|
|
33
|
+
result ??= "";
|
|
34
|
+
if (typeof result === "object" || Array.isArray(result)) {
|
|
35
|
+
res.status(200).json(result);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
res.status(200).send(String(result));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (result) {
|
|
42
|
+
(req.paSiteContext?.logger ?? platformLogger).error(`[${req.url}]`, "Cannot send a http response:", result);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
handleErrorSafely(req, res, error, httpContext);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function reqHandlerToExpressMiddleware(handler) {
|
|
51
|
+
return async (req, res, next) => {
|
|
52
|
+
const httpContext = toPaHttpContext(req, res);
|
|
53
|
+
const siteContext = getPaSiteContext(req);
|
|
54
|
+
try {
|
|
55
|
+
const done = await handler(siteContext, httpContext);
|
|
56
|
+
if (!done) {
|
|
57
|
+
next();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
handleErrorSafely(req, res, error, httpContext);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function mergeReqHandlers(handlers) {
|
|
66
|
+
return async (siteContext, httpContext) => {
|
|
67
|
+
for (const handler of handlers) {
|
|
68
|
+
if (await handler(siteContext, httpContext))
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function wrapExpressRoute(handler) {
|
|
6
75
|
return async (req, res) => {
|
|
7
76
|
try {
|
|
8
77
|
let response = await handler(req, res);
|
|
@@ -22,36 +91,20 @@ export function wrapRouteHandler(handler) {
|
|
|
22
91
|
}
|
|
23
92
|
}
|
|
24
93
|
catch (error) {
|
|
25
|
-
(req
|
|
26
|
-
if (!res.headersSent) {
|
|
27
|
-
if (error instanceof ApiError) {
|
|
28
|
-
const message = error.status === 500 ? "Internal Server Error" : error.message;
|
|
29
|
-
res.status(error.status).json({ message });
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
serve500Html(res);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
94
|
+
handleErrorSafely(req, res, error, undefined);
|
|
35
95
|
}
|
|
36
96
|
};
|
|
37
97
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
98
|
+
function handleErrorSafely(req, res, error, httpContext) {
|
|
99
|
+
(req.paSiteContext?.logger ?? platformLogger).error(`[${req.url}]`, error);
|
|
100
|
+
if (!res.headersSent) {
|
|
101
|
+
if (error instanceof ApiError) {
|
|
102
|
+
const message = error.status === 500 ? "Internal Server Error" : error.message;
|
|
103
|
+
res.status(error.status).json({ message });
|
|
42
104
|
}
|
|
43
|
-
|
|
44
|
-
(
|
|
45
|
-
if (!res.headersSent) {
|
|
46
|
-
if (error instanceof ApiError) {
|
|
47
|
-
const message = error.status === 500 ? "Internal Server Error" : error.message;
|
|
48
|
-
res.status(error.status).json({ message });
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
serve500Html(res);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
105
|
+
else {
|
|
106
|
+
serve500Html(httpContext ?? toPaHttpContext(req, res));
|
|
54
107
|
}
|
|
55
|
-
}
|
|
108
|
+
}
|
|
56
109
|
}
|
|
57
110
|
//# sourceMappingURL=route-handler-wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-handler-wrapper.js","sourceRoot":"","sources":["../../src/express/route-handler-wrapper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route-handler-wrapper.js","sourceRoot":"","sources":["../../src/express/route-handler-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PaHttpContext } from "@paroicms/public-server-lib";
|
|
2
|
+
export interface ServeFileOption {
|
|
3
|
+
immutable?: boolean;
|
|
4
|
+
maxAge?: number;
|
|
5
|
+
root?: string;
|
|
6
|
+
on404?: () => Promise<void> | void;
|
|
7
|
+
}
|
|
8
|
+
export declare function serveFile({ req, res }: PaHttpContext, path: string, options?: ServeFileOption): Promise<void>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { lookup } from "mime-types";
|
|
2
|
+
import { readFile, stat } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
export async function serveFile({ req, res }, path, options = {}) {
|
|
5
|
+
const { immutable, maxAge, root, on404 } = options;
|
|
6
|
+
const fullPath = root ? join(root, path) : path;
|
|
7
|
+
try {
|
|
8
|
+
let fileStat;
|
|
9
|
+
try {
|
|
10
|
+
fileStat = await stat(fullPath);
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
if (err.code !== "ENOENT")
|
|
14
|
+
throw err;
|
|
15
|
+
if (on404) {
|
|
16
|
+
await on404();
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
res.status(404);
|
|
20
|
+
res.send({ error: "File not found" });
|
|
21
|
+
}
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const lastModified = new Date(fileStat.mtime).toUTCString();
|
|
25
|
+
res.append("Last-Modified", lastModified);
|
|
26
|
+
if (maxAge !== undefined) {
|
|
27
|
+
res.append("Cache-Control", immutable ? `max-age=${maxAge}, immutable` : `max-age=${maxAge}`);
|
|
28
|
+
}
|
|
29
|
+
const mimeType = lookup(fullPath) || "application/octet-stream";
|
|
30
|
+
const charset = /^text\/|^application\/(javascript|json)/.test(mimeType)
|
|
31
|
+
? "; charset=utf-8"
|
|
32
|
+
: "";
|
|
33
|
+
res.append("Content-Type", `${mimeType}${charset}`);
|
|
34
|
+
const ifModifiedSince = req.headers["if-modified-since"];
|
|
35
|
+
if (ifModifiedSince) {
|
|
36
|
+
const ifModifiedSinceDate = new Date(ifModifiedSince);
|
|
37
|
+
const lastModifiedDate = new Date(fileStat.mtime);
|
|
38
|
+
lastModifiedDate.setMilliseconds(0);
|
|
39
|
+
if (ifModifiedSinceDate >= lastModifiedDate) {
|
|
40
|
+
res.status(304).send();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const buf = await readFile(fullPath);
|
|
45
|
+
res.append("X-Content-Type-Options", "nosniff");
|
|
46
|
+
res.append("Content-Length", buf.byteLength.toString());
|
|
47
|
+
res.status(200);
|
|
48
|
+
res.send(buf);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if ("code" in error) {
|
|
52
|
+
if (error.code === "ECONNABORTED")
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=serve-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-file.js","sourceRoot":"","sources":["../../src/express/serve-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import express, { type NextFunction, type Request, type Response } from "express";
|
|
2
|
+
export declare function createBoGraphqlMiddleware(): Promise<express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>>;
|
|
3
|
+
export declare function createSiteMiddleware(): (req: Request, res: Response, next: NextFunction) => void;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ApolloServer } from "@apollo/server";
|
|
2
|
+
import { expressMiddleware as graphqlMiddleware } from "@apollo/server/express4";
|
|
3
|
+
import express from "express";
|
|
4
|
+
import { GraphQLError } from "graphql";
|
|
5
|
+
import multer from "multer";
|
|
6
|
+
import { downloadBackupController } from "../bo-backend/backup/backup.controller.js";
|
|
7
|
+
import { loginController } from "../bo-backend/login/login.controller.js";
|
|
8
|
+
import { uploadMediaController } from "../bo-backend/media/media-upload.controller.js";
|
|
9
|
+
import { ApiError } from "../common/api-error-handler.js";
|
|
10
|
+
import { platformLogger } from "../context.js";
|
|
11
|
+
import { getPaSiteContext } from "../express/http-helpers.js";
|
|
12
|
+
import { pluginPublicApiReqHandler } from "../express/public-api-middlewares.js";
|
|
13
|
+
import { mergeReqHandlers, reqHandlerToExpressMiddleware, wrapRouteController, } from "../express/route-handler-wrapper.js";
|
|
14
|
+
import { boFilesReqHandler, boPluginsReqHandler, publicAssetsReqHandler, } from "../express/static-files-middlewares.js";
|
|
15
|
+
import { federateResolvers, typeDefs } from "../graphql/apollo-server-init.js";
|
|
16
|
+
import { createComplexityPlugin } from "../graphql/complexity-plugin.js";
|
|
17
|
+
import { disableApolloStudioPlugin } from "../graphql/disable-apollo-studio-plugin.js";
|
|
18
|
+
import { createErrorConverterPlugin } from "../graphql/error-converter-plugin.js";
|
|
19
|
+
import { checkPasswordResetController, setAccountPasswordController, } from "../public-api/password-reset/password-reset.controller.js";
|
|
20
|
+
import { healthCheckController } from "../public-api/public-api-controller.js";
|
|
21
|
+
import { faviconController, robotsTxtController } from "../public-site/common-routes.controller.js";
|
|
22
|
+
import { feedReqHandler } from "../public-site/feed/feed.middleware.js";
|
|
23
|
+
import { serveFilecontroller, serveUnversionedImageController, serveVersionedImageController, } from "../public-site/media-serve/media-serve.controller.js";
|
|
24
|
+
import { publicSiteReqHandler } from "../public-site/public-site.middleware.js";
|
|
25
|
+
import { toPaHttpContext } from "./pa-http-context.js";
|
|
26
|
+
export async function createBoGraphqlMiddleware() {
|
|
27
|
+
const developmentMode = process.env.NODE_ENV === "development";
|
|
28
|
+
const graphqlServer = new ApolloServer({
|
|
29
|
+
typeDefs,
|
|
30
|
+
resolvers: federateResolvers(),
|
|
31
|
+
plugins: [
|
|
32
|
+
createComplexityPlugin(),
|
|
33
|
+
createErrorConverterPlugin(),
|
|
34
|
+
...(developmentMode ? [] : [disableApolloStudioPlugin()]),
|
|
35
|
+
],
|
|
36
|
+
introspection: developmentMode,
|
|
37
|
+
formatError(formattedError, error) {
|
|
38
|
+
if (error instanceof GraphQLError && (!error.cause || error.cause instanceof ApiError)) {
|
|
39
|
+
return formattedError;
|
|
40
|
+
}
|
|
41
|
+
platformLogger.error("Unexpected graphql error", formattedError, error);
|
|
42
|
+
return {
|
|
43
|
+
message: "Internal Server Error",
|
|
44
|
+
code: "INTERNAL_SERVER_ERROR",
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
await graphqlServer.start();
|
|
49
|
+
return graphqlMiddleware(graphqlServer, {
|
|
50
|
+
context: async ({ req, res }) => ({
|
|
51
|
+
siteContext: getPaSiteContext(req),
|
|
52
|
+
httpContext: toPaHttpContext(req, res),
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export function createSiteMiddleware() {
|
|
57
|
+
const router = express.Router();
|
|
58
|
+
const upload = multer();
|
|
59
|
+
router.post("/adm/backend/upload", upload.single("file"), wrapRouteController(uploadMediaController));
|
|
60
|
+
router.get("/adm/backend/backup/:backupName", wrapRouteController(downloadBackupController));
|
|
61
|
+
router.get("/api/v1/healthcheck", wrapRouteController(healthCheckController));
|
|
62
|
+
router.post("/api/v1/login", wrapRouteController(loginController));
|
|
63
|
+
router.post("/api/v1/set-account-password", wrapRouteController(setAccountPasswordController));
|
|
64
|
+
router.post("/api/v1/check-password-reset", wrapRouteController(checkPasswordResetController));
|
|
65
|
+
router.get("/robots.txt", wrapRouteController(robotsTxtController));
|
|
66
|
+
router.get("/favicon.ico", wrapRouteController(faviconController));
|
|
67
|
+
router.get("/medias/:mediaUid/file/:nameAndExt", wrapRouteController(serveFilecontroller));
|
|
68
|
+
router.get("/medias/:mediaUid/image/:resourceVersion/:nameAndExt", wrapRouteController(serveVersionedImageController));
|
|
69
|
+
router.get("/medias/:mediaUid/image/:nameAndExt", wrapRouteController(serveUnversionedImageController));
|
|
70
|
+
const siteReqHandlers = mergeReqHandlers([
|
|
71
|
+
boPluginsReqHandler,
|
|
72
|
+
boFilesReqHandler,
|
|
73
|
+
pluginPublicApiReqHandler,
|
|
74
|
+
publicAssetsReqHandler,
|
|
75
|
+
feedReqHandler,
|
|
76
|
+
publicSiteReqHandler,
|
|
77
|
+
]);
|
|
78
|
+
const siteReqMiddleware = reqHandlerToExpressMiddleware(siteReqHandlers);
|
|
79
|
+
return (req, res, next) => {
|
|
80
|
+
router(req, res, () => siteReqMiddleware(req, res, next));
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=site-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-middleware.js","sourceRoot":"","sources":["../../src/express/site-middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
1
|
+
import type { PaHttpContext } from "@paroicms/public-server-lib";
|
|
2
|
+
import type { SiteContext } from "../site-context/site-context.types.js";
|
|
3
|
+
export declare function publicAssetsReqHandler(siteContext: SiteContext, httpContext: PaHttpContext): Promise<boolean>;
|
|
4
|
+
export declare function boFilesReqHandler(siteContext: SiteContext, httpContext: PaHttpContext): Promise<boolean>;
|
|
5
|
+
export declare function boPluginsReqHandler(siteContext: SiteContext, httpContext: PaHttpContext): Promise<boolean>;
|
|
@@ -6,13 +6,13 @@ import { getAssetsBaseUrl } from "../common/data-format.js";
|
|
|
6
6
|
import { render404Html } from "../common/serve-text-or.js";
|
|
7
7
|
import { appConf } from "../context.js";
|
|
8
8
|
import { HTTP_MAX_AGE } from "./http-constants.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import { serve404SimpleHtml, serve500Html } from "./http-helpers.js";
|
|
10
|
+
import { serveFile } from "./serve-file.js";
|
|
11
|
+
export async function publicAssetsReqHandler(siteContext, httpContext) {
|
|
12
|
+
const { req } = httpContext;
|
|
12
13
|
let path = req.path;
|
|
13
14
|
if (!path.startsWith("/assets/") || !["GET", "HEAD"].includes(req.method)) {
|
|
14
|
-
|
|
15
|
-
return;
|
|
15
|
+
return false;
|
|
16
16
|
}
|
|
17
17
|
let pathPrefix;
|
|
18
18
|
let baseDir;
|
|
@@ -20,14 +20,14 @@ export async function publicAssetsMiddleware(req, res, next) {
|
|
|
20
20
|
if (path.startsWith(pluginAssetsPrefix)) {
|
|
21
21
|
const sepIndex = path.indexOf("/", pluginAssetsPrefix.length);
|
|
22
22
|
if (sepIndex === -1) {
|
|
23
|
-
|
|
24
|
-
return;
|
|
23
|
+
await render404Asset(siteContext, httpContext);
|
|
24
|
+
return true;
|
|
25
25
|
}
|
|
26
26
|
const pluginPublicDirName = path.substring(pluginAssetsPrefix.length, sepIndex);
|
|
27
27
|
const plugin = siteContext.plugins.get(pluginPublicDirName);
|
|
28
28
|
if (!plugin || !plugin.publicAssetsDir) {
|
|
29
|
-
|
|
30
|
-
return;
|
|
29
|
+
await render404Asset(siteContext, httpContext);
|
|
30
|
+
return true;
|
|
31
31
|
}
|
|
32
32
|
baseDir = plugin.publicAssetsDir;
|
|
33
33
|
pathPrefix = `${getPluginAssetsUrl(plugin)}/`;
|
|
@@ -37,107 +37,66 @@ export async function publicAssetsMiddleware(req, res, next) {
|
|
|
37
37
|
baseDir = join(siteContext.themeDir, "assets");
|
|
38
38
|
}
|
|
39
39
|
if (!path.startsWith(pathPrefix)) {
|
|
40
|
-
|
|
41
|
-
return;
|
|
40
|
+
await render404Asset(siteContext, httpContext);
|
|
41
|
+
return true;
|
|
42
42
|
}
|
|
43
43
|
path = path.substring(pathPrefix.length);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (!error)
|
|
51
|
-
return;
|
|
52
|
-
sendFileErrorHandler(error, siteContext, res, path);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
siteContext.logger.error(error);
|
|
57
|
-
serve500Html(res);
|
|
58
|
-
}
|
|
44
|
+
await serveFile(httpContext, path, {
|
|
45
|
+
root: baseDir,
|
|
46
|
+
immutable: appConf.immutableAssets,
|
|
47
|
+
maxAge: appConf.immutableAssets ? HTTP_MAX_AGE : 0,
|
|
48
|
+
});
|
|
49
|
+
return true;
|
|
59
50
|
}
|
|
60
|
-
export async function
|
|
61
|
-
const
|
|
51
|
+
export async function boFilesReqHandler(siteContext, httpContext) {
|
|
52
|
+
const { req } = httpContext;
|
|
62
53
|
let path = req.path;
|
|
63
54
|
if (!["GET", "HEAD"].includes(req.method) ||
|
|
64
55
|
path.startsWith("/adm/api/v1") ||
|
|
65
56
|
(path !== "/adm" && !path.startsWith("/adm/"))) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
path =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
sendFileErrorHandler(error, siteContext, res, path);
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
siteContext.logger.error(error);
|
|
84
|
-
serve500Html(res);
|
|
85
|
-
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
path = path.substring("/adm/".length);
|
|
60
|
+
if (path === "")
|
|
61
|
+
path = "index.html";
|
|
62
|
+
if (!(await pathExists(join(boDistDir, path)))) {
|
|
63
|
+
path = "index.html";
|
|
64
|
+
}
|
|
65
|
+
await serveFile(httpContext, path, {
|
|
66
|
+
root: boDistDir,
|
|
67
|
+
on404: () => render404Asset(siteContext, httpContext),
|
|
68
|
+
});
|
|
69
|
+
return true;
|
|
86
70
|
}
|
|
87
|
-
export async function
|
|
88
|
-
const
|
|
71
|
+
export async function boPluginsReqHandler(siteContext, httpContext) {
|
|
72
|
+
const { req } = httpContext;
|
|
89
73
|
const prefix = "/adm/plugins/";
|
|
90
74
|
if (!["GET", "HEAD"].includes(req.method) || !req.path.startsWith(prefix)) {
|
|
91
|
-
|
|
92
|
-
return;
|
|
75
|
+
return false;
|
|
93
76
|
}
|
|
94
77
|
const relPathIndex = req.path.indexOf("/", prefix.length);
|
|
95
78
|
if (relPathIndex === -1) {
|
|
96
|
-
serve404SimpleHtml(
|
|
97
|
-
return;
|
|
79
|
+
serve404SimpleHtml(httpContext);
|
|
80
|
+
return true;
|
|
98
81
|
}
|
|
99
82
|
const urlPath = req.path.substring(prefix.length, relPathIndex);
|
|
100
83
|
const relPath = req.path.substring(relPathIndex + 1);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (!error)
|
|
110
|
-
return;
|
|
111
|
-
sendFileErrorHandler(error, siteContext, res, join(boAssetsDir, relPath));
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
siteContext.logger.error(error);
|
|
116
|
-
serve500Html(res);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
function sendFileErrorHandler(error, siteContext, res, path) {
|
|
120
|
-
if ("statusCode" in error && error.statusCode === 404) {
|
|
121
|
-
void render404Asset(siteContext, res);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
if ("code" in error) {
|
|
125
|
-
if (error.code === "ECONNABORTED") {
|
|
126
|
-
res.send();
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
siteContext.logger.error(`failed to serve file '${path}':`, error.code, error);
|
|
130
|
-
}
|
|
131
|
-
serve500Html(res);
|
|
132
|
-
}
|
|
84
|
+
const plugin = siteContext.plugins.get(urlPath);
|
|
85
|
+
const boAssetsDir = plugin?.boAssetsDir;
|
|
86
|
+
if (!boAssetsDir || !(await pathExists(join(boAssetsDir, relPath)))) {
|
|
87
|
+
serve404SimpleHtml(httpContext);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
await serveFile(httpContext, relPath, { root: boAssetsDir });
|
|
91
|
+
return true;
|
|
133
92
|
}
|
|
134
|
-
async function render404Asset(siteContext,
|
|
93
|
+
async function render404Asset(siteContext, httpContext) {
|
|
135
94
|
try {
|
|
136
|
-
await render404Html(siteContext,
|
|
95
|
+
await render404Html(siteContext, httpContext);
|
|
137
96
|
}
|
|
138
97
|
catch (error) {
|
|
139
98
|
siteContext.logger.error("failed to render 404", error);
|
|
140
|
-
serve500Html(
|
|
99
|
+
serve500Html(httpContext);
|
|
141
100
|
}
|
|
142
101
|
}
|
|
143
102
|
//# sourceMappingURL=static-files-middlewares.js.map
|