@acmekit/framework 2.13.1
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 +0 -0
- package/dist/acmekit-app-loader.d.ts +70 -0
- package/dist/acmekit-app-loader.d.ts.map +1 -0
- package/dist/acmekit-app-loader.js +256 -0
- package/dist/acmekit-app-loader.js.map +1 -0
- package/dist/build-tools/compiler.d.ts +64 -0
- package/dist/build-tools/compiler.d.ts.map +1 -0
- package/dist/build-tools/compiler.js +423 -0
- package/dist/build-tools/compiler.js.map +1 -0
- package/dist/build-tools/index.d.ts +2 -0
- package/dist/build-tools/index.d.ts.map +1 -0
- package/dist/build-tools/index.js +18 -0
- package/dist/build-tools/index.js.map +1 -0
- package/dist/config/config.d.ts +39 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +155 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +21 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +15 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +39 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/types.d.ts +2 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +3 -0
- package/dist/config/types.js.map +1 -0
- package/dist/container.d.ts +3 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +21 -0
- package/dist/container.js.map +1 -0
- package/dist/database/index.d.ts +3 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +19 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/pg-connection-loader.d.ts +6 -0
- package/dist/database/pg-connection-loader.d.ts.map +1 -0
- package/dist/database/pg-connection-loader.js +68 -0
- package/dist/database/pg-connection-loader.js.map +1 -0
- package/dist/deps/awilix.d.ts +2 -0
- package/dist/deps/awilix.d.ts.map +1 -0
- package/dist/deps/awilix.js +18 -0
- package/dist/deps/awilix.js.map +1 -0
- package/dist/deps/mikro-orm-cli.d.ts +2 -0
- package/dist/deps/mikro-orm-cli.d.ts.map +1 -0
- package/dist/deps/mikro-orm-cli.js +18 -0
- package/dist/deps/mikro-orm-cli.js.map +1 -0
- package/dist/deps/mikro-orm-core.d.ts +2 -0
- package/dist/deps/mikro-orm-core.d.ts.map +1 -0
- package/dist/deps/mikro-orm-core.js +18 -0
- package/dist/deps/mikro-orm-core.js.map +1 -0
- package/dist/deps/mikro-orm-knex.d.ts +2 -0
- package/dist/deps/mikro-orm-knex.d.ts.map +1 -0
- package/dist/deps/mikro-orm-knex.js +18 -0
- package/dist/deps/mikro-orm-knex.js.map +1 -0
- package/dist/deps/mikro-orm-migrations.d.ts +2 -0
- package/dist/deps/mikro-orm-migrations.d.ts.map +1 -0
- package/dist/deps/mikro-orm-migrations.js +18 -0
- package/dist/deps/mikro-orm-migrations.js.map +1 -0
- package/dist/deps/mikro-orm-postgresql.d.ts +2 -0
- package/dist/deps/mikro-orm-postgresql.d.ts.map +1 -0
- package/dist/deps/mikro-orm-postgresql.js +18 -0
- package/dist/deps/mikro-orm-postgresql.js.map +1 -0
- package/dist/deps/opentelemetry-api.d.ts +2 -0
- package/dist/deps/opentelemetry-api.d.ts.map +1 -0
- package/dist/deps/opentelemetry-api.js +18 -0
- package/dist/deps/opentelemetry-api.js.map +1 -0
- package/dist/deps/opentelemetry-instrumentation-pg.d.ts +2 -0
- package/dist/deps/opentelemetry-instrumentation-pg.d.ts.map +1 -0
- package/dist/deps/opentelemetry-instrumentation-pg.js +18 -0
- package/dist/deps/opentelemetry-instrumentation-pg.js.map +1 -0
- package/dist/deps/opentelemetry-resources.d.ts +2 -0
- package/dist/deps/opentelemetry-resources.d.ts.map +1 -0
- package/dist/deps/opentelemetry-resources.js +18 -0
- package/dist/deps/opentelemetry-resources.js.map +1 -0
- package/dist/deps/opentelemetry-sdk-node.d.ts +2 -0
- package/dist/deps/opentelemetry-sdk-node.d.ts.map +1 -0
- package/dist/deps/opentelemetry-sdk-node.js +18 -0
- package/dist/deps/opentelemetry-sdk-node.js.map +1 -0
- package/dist/deps/opentelemetry-sdk-trace-node.d.ts +2 -0
- package/dist/deps/opentelemetry-sdk-trace-node.d.ts.map +1 -0
- package/dist/deps/opentelemetry-sdk-trace-node.js +18 -0
- package/dist/deps/opentelemetry-sdk-trace-node.js.map +1 -0
- package/dist/deps/pg.d.ts +2 -0
- package/dist/deps/pg.d.ts.map +1 -0
- package/dist/deps/pg.js +18 -0
- package/dist/deps/pg.js.map +1 -0
- package/dist/deps/zod.d.ts +2 -0
- package/dist/deps/zod.d.ts.map +1 -0
- package/dist/deps/zod.js +18 -0
- package/dist/deps/zod.js.map +1 -0
- package/dist/feature-flags/feature-flag-loader.d.ts +7 -0
- package/dist/feature-flags/feature-flag-loader.d.ts.map +1 -0
- package/dist/feature-flags/feature-flag-loader.js +34 -0
- package/dist/feature-flags/feature-flag-loader.js.map +1 -0
- package/dist/feature-flags/flag-router.d.ts +32 -0
- package/dist/feature-flags/flag-router.d.ts.map +1 -0
- package/dist/feature-flags/flag-router.js +67 -0
- package/dist/feature-flags/flag-router.js.map +1 -0
- package/dist/feature-flags/index.d.ts +5 -0
- package/dist/feature-flags/index.d.ts.map +1 -0
- package/dist/feature-flags/index.js +21 -0
- package/dist/feature-flags/index.js.map +1 -0
- package/dist/feature-flags/types.d.ts +31 -0
- package/dist/feature-flags/types.d.ts.map +1 -0
- package/dist/feature-flags/types.js +3 -0
- package/dist/feature-flags/types.js.map +1 -0
- package/dist/http/express-loader.d.ts +10 -0
- package/dist/http/express-loader.d.ts.map +1 -0
- package/dist/http/express-loader.js +130 -0
- package/dist/http/express-loader.js.map +1 -0
- package/dist/http/index.d.ts +15 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +31 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/middleware-file-loader.d.ts +33 -0
- package/dist/http/middleware-file-loader.d.ts.map +1 -0
- package/dist/http/middleware-file-loader.js +186 -0
- package/dist/http/middleware-file-loader.js.map +1 -0
- package/dist/http/middlewares/apply-default-filters.d.ts +3 -0
- package/dist/http/middlewares/apply-default-filters.d.ts.map +1 -0
- package/dist/http/middlewares/apply-default-filters.js +32 -0
- package/dist/http/middlewares/apply-default-filters.js.map +1 -0
- package/dist/http/middlewares/apply-locale.d.ts +12 -0
- package/dist/http/middlewares/apply-locale.d.ts.map +1 -0
- package/dist/http/middlewares/apply-locale.js +31 -0
- package/dist/http/middlewares/apply-locale.js.map +1 -0
- package/dist/http/middlewares/apply-params-as-filters.d.ts +5 -0
- package/dist/http/middlewares/apply-params-as-filters.d.ts.map +1 -0
- package/dist/http/middlewares/apply-params-as-filters.js +14 -0
- package/dist/http/middlewares/apply-params-as-filters.js.map +1 -0
- package/dist/http/middlewares/authenticate-middleware.d.ts +14 -0
- package/dist/http/middlewares/authenticate-middleware.d.ts.map +1 -0
- package/dist/http/middlewares/authenticate-middleware.js +142 -0
- package/dist/http/middlewares/authenticate-middleware.js.map +1 -0
- package/dist/http/middlewares/bodyparser.d.ts +13 -0
- package/dist/http/middlewares/bodyparser.d.ts.map +1 -0
- package/dist/http/middlewares/bodyparser.js +62 -0
- package/dist/http/middlewares/bodyparser.js.map +1 -0
- package/dist/http/middlewares/check-permissions.d.ts +15 -0
- package/dist/http/middlewares/check-permissions.d.ts.map +1 -0
- package/dist/http/middlewares/check-permissions.js +54 -0
- package/dist/http/middlewares/check-permissions.js.map +1 -0
- package/dist/http/middlewares/clear-filters-by-key.d.ts +3 -0
- package/dist/http/middlewares/clear-filters-by-key.d.ts.map +1 -0
- package/dist/http/middlewares/clear-filters-by-key.js +12 -0
- package/dist/http/middlewares/clear-filters-by-key.js.map +1 -0
- package/dist/http/middlewares/ensure-publishable-api-key.d.ts +3 -0
- package/dist/http/middlewares/ensure-publishable-api-key.d.ts.map +1 -0
- package/dist/http/middlewares/ensure-publishable-api-key.js +58 -0
- package/dist/http/middlewares/ensure-publishable-api-key.js.map +1 -0
- package/dist/http/middlewares/error-handler.d.ts +21 -0
- package/dist/http/middlewares/error-handler.d.ts.map +1 -0
- package/dist/http/middlewares/error-handler.js +107 -0
- package/dist/http/middlewares/error-handler.js.map +1 -0
- package/dist/http/middlewares/exception-formatter.d.ts +9 -0
- package/dist/http/middlewares/exception-formatter.d.ts.map +1 -0
- package/dist/http/middlewares/exception-formatter.js +36 -0
- package/dist/http/middlewares/exception-formatter.js.map +1 -0
- package/dist/http/middlewares/index.d.ts +10 -0
- package/dist/http/middlewares/index.d.ts.map +1 -0
- package/dist/http/middlewares/index.js +26 -0
- package/dist/http/middlewares/index.js.map +1 -0
- package/dist/http/middlewares/set-context.d.ts +3 -0
- package/dist/http/middlewares/set-context.d.ts.map +1 -0
- package/dist/http/middlewares/set-context.js +18 -0
- package/dist/http/middlewares/set-context.js.map +1 -0
- package/dist/http/router.d.ts +36 -0
- package/dist/http/router.d.ts.map +1 -0
- package/dist/http/router.js +317 -0
- package/dist/http/router.js.map +1 -0
- package/dist/http/routes-finder.d.ts +22 -0
- package/dist/http/routes-finder.d.ts.map +1 -0
- package/dist/http/routes-finder.js +68 -0
- package/dist/http/routes-finder.js.map +1 -0
- package/dist/http/routes-loader.d.ts +39 -0
- package/dist/http/routes-loader.d.ts.map +1 -0
- package/dist/http/routes-loader.js +232 -0
- package/dist/http/routes-loader.js.map +1 -0
- package/dist/http/routes-sorter.d.ts +105 -0
- package/dist/http/routes-sorter.d.ts.map +1 -0
- package/dist/http/routes-sorter.js +146 -0
- package/dist/http/routes-sorter.js.map +1 -0
- package/dist/http/types.d.ts +191 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/http/types.js +16 -0
- package/dist/http/types.js.map +1 -0
- package/dist/http/utils/define-middlewares.d.ts +22 -0
- package/dist/http/utils/define-middlewares.d.ts.map +1 -0
- package/dist/http/utils/define-middlewares.js +27 -0
- package/dist/http/utils/define-middlewares.js.map +1 -0
- package/dist/http/utils/field-filtering/field-parser.d.ts +32 -0
- package/dist/http/utils/field-filtering/field-parser.d.ts.map +1 -0
- package/dist/http/utils/field-filtering/field-parser.js +87 -0
- package/dist/http/utils/field-filtering/field-parser.js.map +1 -0
- package/dist/http/utils/field-filtering/field-validator.d.ts +24 -0
- package/dist/http/utils/field-filtering/field-validator.d.ts.map +1 -0
- package/dist/http/utils/field-filtering/field-validator.js +67 -0
- package/dist/http/utils/field-filtering/field-validator.js.map +1 -0
- package/dist/http/utils/field-filtering/index.d.ts +33 -0
- package/dist/http/utils/field-filtering/index.d.ts.map +1 -0
- package/dist/http/utils/field-filtering/index.js +9 -0
- package/dist/http/utils/field-filtering/index.js.map +1 -0
- package/dist/http/utils/get-query-config.d.ts +50 -0
- package/dist/http/utils/get-query-config.d.ts.map +1 -0
- package/dist/http/utils/get-query-config.js +109 -0
- package/dist/http/utils/get-query-config.js.map +1 -0
- package/dist/http/utils/http-compression.d.ts +5 -0
- package/dist/http/utils/http-compression.d.ts.map +1 -0
- package/dist/http/utils/http-compression.js +33 -0
- package/dist/http/utils/http-compression.js.map +1 -0
- package/dist/http/utils/maybe-apply-link-filter.d.ts +8 -0
- package/dist/http/utils/maybe-apply-link-filter.d.ts.map +1 -0
- package/dist/http/utils/maybe-apply-link-filter.js +68 -0
- package/dist/http/utils/maybe-apply-link-filter.js.map +1 -0
- package/dist/http/utils/policies/rbac-field-filter.d.ts +19 -0
- package/dist/http/utils/policies/rbac-field-filter.d.ts.map +1 -0
- package/dist/http/utils/policies/rbac-field-filter.js +348 -0
- package/dist/http/utils/policies/rbac-field-filter.js.map +1 -0
- package/dist/http/utils/refetch-entities.d.ts +21 -0
- package/dist/http/utils/refetch-entities.d.ts.map +1 -0
- package/dist/http/utils/refetch-entities.js +42 -0
- package/dist/http/utils/refetch-entities.js.map +1 -0
- package/dist/http/utils/restricted-fields.d.ts +6 -0
- package/dist/http/utils/restricted-fields.d.ts.map +1 -0
- package/dist/http/utils/restricted-fields.js +30 -0
- package/dist/http/utils/restricted-fields.js.map +1 -0
- package/dist/http/utils/unless-path.d.ts +9 -0
- package/dist/http/utils/unless-path.d.ts.map +1 -0
- package/dist/http/utils/unless-path.js +19 -0
- package/dist/http/utils/unless-path.js.map +1 -0
- package/dist/http/utils/validate-body.d.ts +5 -0
- package/dist/http/utils/validate-body.d.ts.map +1 -0
- package/dist/http/utils/validate-body.js +23 -0
- package/dist/http/utils/validate-body.js.map +1 -0
- package/dist/http/utils/validate-query.d.ts +6 -0
- package/dist/http/utils/validate-query.d.ts.map +1 -0
- package/dist/http/utils/validate-query.js +84 -0
- package/dist/http/utils/validate-query.js.map +1 -0
- package/dist/http/utils/wrap-handler.d.ts +3 -0
- package/dist/http/utils/wrap-handler.d.ts.map +1 -0
- package/dist/http/utils/wrap-handler.js +26 -0
- package/dist/http/utils/wrap-handler.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/index.d.ts +2 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +18 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/job-loader.d.ts +44 -0
- package/dist/jobs/job-loader.d.ts.map +1 -0
- package/dist/jobs/job-loader.js +91 -0
- package/dist/jobs/job-loader.js.map +1 -0
- package/dist/links/index.d.ts +2 -0
- package/dist/links/index.d.ts.map +1 -0
- package/dist/links/index.js +18 -0
- package/dist/links/index.js.map +1 -0
- package/dist/links/link-loader.d.ts +11 -0
- package/dist/links/link-loader.d.ts.map +1 -0
- package/dist/links/link-loader.js +76 -0
- package/dist/links/link-loader.js.map +1 -0
- package/dist/logger/index.d.ts +3 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +9 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/migrations/index.d.ts +3 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +19 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/migrator.d.ts +38 -0
- package/dist/migrations/migrator.d.ts.map +1 -0
- package/dist/migrations/migrator.js +146 -0
- package/dist/migrations/migrator.js.map +1 -0
- package/dist/migrations/run-migration-scripts.d.ts +17 -0
- package/dist/migrations/run-migration-scripts.d.ts.map +1 -0
- package/dist/migrations/run-migration-scripts.js +97 -0
- package/dist/migrations/run-migration-scripts.js.map +1 -0
- package/dist/mikro-orm-cli/bin.d.ts +14 -0
- package/dist/mikro-orm-cli/bin.d.ts.map +1 -0
- package/dist/mikro-orm-cli/bin.js +54 -0
- package/dist/mikro-orm-cli/bin.js.map +1 -0
- package/dist/modules-sdk/index.d.ts +2 -0
- package/dist/modules-sdk/index.d.ts.map +1 -0
- package/dist/modules-sdk/index.js +18 -0
- package/dist/modules-sdk/index.js.map +1 -0
- package/dist/orchestration/index.d.ts +2 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +18 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/policies/has-permission.d.ts +33 -0
- package/dist/policies/has-permission.d.ts.map +1 -0
- package/dist/policies/has-permission.js +110 -0
- package/dist/policies/has-permission.js.map +1 -0
- package/dist/policies/index.d.ts +3 -0
- package/dist/policies/index.d.ts.map +1 -0
- package/dist/policies/index.js +19 -0
- package/dist/policies/index.js.map +1 -0
- package/dist/policies/policy-loader.d.ts +6 -0
- package/dist/policies/policy-loader.d.ts.map +1 -0
- package/dist/policies/policy-loader.js +17 -0
- package/dist/policies/policy-loader.js.map +1 -0
- package/dist/subscribers/index.d.ts +3 -0
- package/dist/subscribers/index.d.ts.map +1 -0
- package/dist/subscribers/index.js +19 -0
- package/dist/subscribers/index.js.map +1 -0
- package/dist/subscribers/subscriber-loader.d.ts +20 -0
- package/dist/subscribers/subscriber-loader.d.ts.map +1 -0
- package/dist/subscribers/subscriber-loader.js +156 -0
- package/dist/subscribers/subscriber-loader.js.map +1 -0
- package/dist/subscribers/types.d.ts +15 -0
- package/dist/subscribers/types.d.ts.map +1 -0
- package/dist/subscribers/types.js +3 -0
- package/dist/subscribers/types.js.map +1 -0
- package/dist/telemetry/index.d.ts +50 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +81 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/types/container.d.ts +68 -0
- package/dist/types/container.d.ts.map +1 -0
- package/dist/types/container.js +3 -0
- package/dist/types/container.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/resource-loader.d.ts +28 -0
- package/dist/utils/resource-loader.d.ts.map +1 -0
- package/dist/utils/resource-loader.js +78 -0
- package/dist/utils/resource-loader.js.map +1 -0
- package/dist/workflows/index.d.ts +3 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +19 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/workflow-loader.d.ts +13 -0
- package/dist/workflows/workflow-loader.d.ts.map +1 -0
- package/dist/workflows/workflow-loader.js +36 -0
- package/dist/workflows/workflow-loader.js.map +1 -0
- package/dist/workflows-sdk/composer.d.ts +2 -0
- package/dist/workflows-sdk/composer.d.ts.map +1 -0
- package/dist/workflows-sdk/composer.js +18 -0
- package/dist/workflows-sdk/composer.js.map +1 -0
- package/dist/workflows-sdk/index.d.ts +3 -0
- package/dist/workflows-sdk/index.d.ts.map +1 -0
- package/dist/workflows-sdk/index.js +19 -0
- package/dist/workflows-sdk/index.js.map +1 -0
- package/dist/zod/index.d.ts +2 -0
- package/dist/zod/index.d.ts.map +1 -0
- package/dist/zod/index.js +18 -0
- package/dist/zod/index.js.map +1 -0
- package/dist/zod/zod-helpers.d.ts +3 -0
- package/dist/zod/zod-helpers.d.ts.map +1 -0
- package/dist/zod/zod-helpers.js +95 -0
- package/dist/zod/zod-helpers.js.map +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import type { ZodNullable, ZodObject, ZodOptional, ZodRawShape } from "@acmekit/deps/zod";
|
|
2
|
+
import type { NextFunction, Request, Response } from "express";
|
|
3
|
+
import { FindConfig, AcmeKitPricingContext, RequestQueryFields } from "@acmekit/types";
|
|
4
|
+
import { AcmeKitContainer } from "../container";
|
|
5
|
+
import { PolicyAction } from "./middlewares/check-permissions";
|
|
6
|
+
import { RestrictedFields } from "./utils/restricted-fields";
|
|
7
|
+
/**
|
|
8
|
+
* List of all the supported HTTP methods
|
|
9
|
+
*/
|
|
10
|
+
export declare const HTTP_METHODS: readonly ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"];
|
|
11
|
+
export type RouteVerb = (typeof HTTP_METHODS)[number];
|
|
12
|
+
export type MiddlewareVerb = "USE" | "ALL" | RouteVerb;
|
|
13
|
+
type SyncRouteHandler = (req: AcmeKitRequest, res: AcmeKitResponse) => void;
|
|
14
|
+
export type AsyncRouteHandler = (req: AcmeKitRequest, res: AcmeKitResponse) => Promise<void>;
|
|
15
|
+
export type RouteHandler = SyncRouteHandler | AsyncRouteHandler;
|
|
16
|
+
export type MiddlewareFunction = AcmeKitRequestHandler | ((...args: any[]) => any);
|
|
17
|
+
export type AcmeKitErrorHandlerFunction = (error: any, req: AcmeKitRequest, res: AcmeKitResponse, next: AcmeKitNextFunction) => Promise<void> | void;
|
|
18
|
+
export type ParserConfigArgs = {
|
|
19
|
+
sizeLimit?: string | number | undefined;
|
|
20
|
+
preserveRawBody?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type ParserConfig = false | ParserConfigArgs;
|
|
23
|
+
export type MiddlewareRoute = {
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated. Instead use {@link MiddlewareRoute.methods}
|
|
26
|
+
*/
|
|
27
|
+
method?: MiddlewareVerb | MiddlewareVerb[];
|
|
28
|
+
methods?: MiddlewareVerb[];
|
|
29
|
+
matcher: string | RegExp;
|
|
30
|
+
bodyParser?: ParserConfig;
|
|
31
|
+
additionalDataValidator?: ZodRawShape;
|
|
32
|
+
middlewares?: MiddlewareFunction[];
|
|
33
|
+
/** @ignore */
|
|
34
|
+
policies?: {
|
|
35
|
+
resource: string;
|
|
36
|
+
operation: string;
|
|
37
|
+
} | Array<{
|
|
38
|
+
resource: string;
|
|
39
|
+
operation: string | string[];
|
|
40
|
+
}>;
|
|
41
|
+
};
|
|
42
|
+
export type MiddlewaresConfig = {
|
|
43
|
+
errorHandler?: false | AcmeKitErrorHandlerFunction;
|
|
44
|
+
routes?: MiddlewareRoute[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Route descriptor refers represents a route either scanned
|
|
48
|
+
* from the filesystem or registered manually. It does not
|
|
49
|
+
* represent a middleware
|
|
50
|
+
*/
|
|
51
|
+
export type RouteDescriptor = {
|
|
52
|
+
matcher: string;
|
|
53
|
+
method: RouteVerb;
|
|
54
|
+
handler: RouteHandler;
|
|
55
|
+
optedOutOfAuth: boolean;
|
|
56
|
+
isRoute: true;
|
|
57
|
+
routeType?: "admin" | "store" | "auth";
|
|
58
|
+
absolutePath?: string;
|
|
59
|
+
relativePath?: string;
|
|
60
|
+
shouldAppendAdminCors: boolean;
|
|
61
|
+
shouldAppendStoreCors: boolean;
|
|
62
|
+
shouldAppendAuthCors: boolean;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Represents a middleware
|
|
66
|
+
*/
|
|
67
|
+
export type MiddlewareDescriptor = {
|
|
68
|
+
matcher: string;
|
|
69
|
+
methods?: MiddlewareVerb | MiddlewareVerb[];
|
|
70
|
+
handler: MiddlewareFunction;
|
|
71
|
+
policies?: {
|
|
72
|
+
resource: string;
|
|
73
|
+
operation: string;
|
|
74
|
+
} | Array<{
|
|
75
|
+
resource: string;
|
|
76
|
+
operation: string | string[];
|
|
77
|
+
}>;
|
|
78
|
+
};
|
|
79
|
+
export type BodyParserConfigRoute = {
|
|
80
|
+
matcher: string;
|
|
81
|
+
methods: MiddlewareVerb | MiddlewareVerb[];
|
|
82
|
+
config: ParserConfig;
|
|
83
|
+
};
|
|
84
|
+
export type AdditionalDataValidatorRoute = {
|
|
85
|
+
matcher: string;
|
|
86
|
+
methods: MiddlewareVerb | MiddlewareVerb[];
|
|
87
|
+
schema: ZodRawShape;
|
|
88
|
+
validator: ZodOptional<ZodNullable<ZodObject<any, any>>>;
|
|
89
|
+
};
|
|
90
|
+
export type GlobalMiddlewareDescriptor = {
|
|
91
|
+
config?: MiddlewaresConfig;
|
|
92
|
+
};
|
|
93
|
+
export interface AcmeKitRequest<Body = unknown, QueryFields = Record<string, unknown>> extends Request<{
|
|
94
|
+
[key: string]: string;
|
|
95
|
+
}, any, Body> {
|
|
96
|
+
validatedBody: Body;
|
|
97
|
+
validatedQuery: RequestQueryFields & QueryFields;
|
|
98
|
+
/**
|
|
99
|
+
* TODO: shouldn't this correspond to returnable fields instead of allowed fields? also it is used by the cleanResponseData util
|
|
100
|
+
*/
|
|
101
|
+
allowedProperties: string[];
|
|
102
|
+
/**
|
|
103
|
+
* An object containing the select, relation, skip, take and order to be used with acmekit internal services
|
|
104
|
+
*/
|
|
105
|
+
listConfig: FindConfig<unknown>;
|
|
106
|
+
/**
|
|
107
|
+
* An object containing the select, relation to be used with acmekit internal services
|
|
108
|
+
*/
|
|
109
|
+
retrieveConfig: FindConfig<unknown>;
|
|
110
|
+
/**
|
|
111
|
+
* An object containing fields and variables to be used with the remoteQuery
|
|
112
|
+
*
|
|
113
|
+
* @since 2.2.0
|
|
114
|
+
*/
|
|
115
|
+
queryConfig: {
|
|
116
|
+
fields: string[];
|
|
117
|
+
pagination: {
|
|
118
|
+
order?: Record<string, string>;
|
|
119
|
+
skip: number;
|
|
120
|
+
take?: number;
|
|
121
|
+
};
|
|
122
|
+
withDeleted?: boolean;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* @deprecated Use {@link queryConfig} instead.
|
|
126
|
+
*/
|
|
127
|
+
remoteQueryConfig: AcmeKitRequest["queryConfig"];
|
|
128
|
+
/**
|
|
129
|
+
* An object containing the fields that are filterable e.g `{ id: Any<String> }`
|
|
130
|
+
*/
|
|
131
|
+
filterableFields: QueryFields;
|
|
132
|
+
includes?: Record<string, boolean>;
|
|
133
|
+
/**
|
|
134
|
+
* An array of fields and relations that are allowed to be queried, this can be set by the
|
|
135
|
+
* consumer as part of a middleware and it will take precedence over the req.allowed set
|
|
136
|
+
* by the api
|
|
137
|
+
*/
|
|
138
|
+
allowed?: string[];
|
|
139
|
+
errors: string[];
|
|
140
|
+
scope: AcmeKitContainer;
|
|
141
|
+
session?: any;
|
|
142
|
+
rawBody?: any;
|
|
143
|
+
requestId?: string;
|
|
144
|
+
restrictedFields?: RestrictedFields;
|
|
145
|
+
/**
|
|
146
|
+
* An object that carries the context that is used to calculate prices for variants
|
|
147
|
+
*/
|
|
148
|
+
pricingContext?: AcmeKitPricingContext;
|
|
149
|
+
/**
|
|
150
|
+
* A generic context object that can be used across the request lifecycle
|
|
151
|
+
*/
|
|
152
|
+
context?: Record<string, any>;
|
|
153
|
+
/**
|
|
154
|
+
* Custom validator to validate the `additional_data` property in
|
|
155
|
+
* requests that allows for additional_data
|
|
156
|
+
*/
|
|
157
|
+
additionalDataValidator?: ZodOptional<ZodNullable<ZodObject<any, any>>>;
|
|
158
|
+
/**
|
|
159
|
+
* The locale for the current request, resolved from:
|
|
160
|
+
* 1. Query parameter `?locale=`
|
|
161
|
+
* 2. x-acmekit-locale header
|
|
162
|
+
* 3. Store's default locale
|
|
163
|
+
*/
|
|
164
|
+
locale?: string;
|
|
165
|
+
}
|
|
166
|
+
export interface AuthContext {
|
|
167
|
+
actor_id: string;
|
|
168
|
+
actor_type: string;
|
|
169
|
+
auth_identity_id: string;
|
|
170
|
+
app_metadata: Record<string, unknown>;
|
|
171
|
+
user_metadata: Record<string, unknown>;
|
|
172
|
+
}
|
|
173
|
+
export interface PublishableKeyContext {
|
|
174
|
+
key: string;
|
|
175
|
+
sales_channel_ids: string[];
|
|
176
|
+
}
|
|
177
|
+
export interface AuthenticatedAcmeKitRequest<Body = unknown, QueryFields = Record<string, unknown>> extends AcmeKitRequest<Body, QueryFields> {
|
|
178
|
+
auth_context: AuthContext;
|
|
179
|
+
publishable_key_context?: PublishableKeyContext;
|
|
180
|
+
policies?: PolicyAction[];
|
|
181
|
+
}
|
|
182
|
+
export interface AcmeKitStoreRequest<Body = unknown, QueryFields = Record<string, unknown>> extends AcmeKitRequest<Body, QueryFields> {
|
|
183
|
+
auth_context?: AuthContext;
|
|
184
|
+
publishable_key_context: PublishableKeyContext;
|
|
185
|
+
policies?: PolicyAction | PolicyAction[];
|
|
186
|
+
}
|
|
187
|
+
export type AcmeKitResponse<Body = unknown> = Response<Body>;
|
|
188
|
+
export type AcmeKitNextFunction = NextFunction;
|
|
189
|
+
export type AcmeKitRequestHandler<Body = unknown, Res = unknown> = (req: AcmeKitRequest<Body>, res: AcmeKitResponse<Res>, next: AcmeKitNextFunction) => Promise<void> | void;
|
|
190
|
+
export {};
|
|
191
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/http/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HTTP_METHODS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* List of all the supported HTTP methods
|
|
6
|
+
*/
|
|
7
|
+
exports.HTTP_METHODS = [
|
|
8
|
+
"GET",
|
|
9
|
+
"POST",
|
|
10
|
+
"PUT",
|
|
11
|
+
"PATCH",
|
|
12
|
+
"DELETE",
|
|
13
|
+
"OPTIONS",
|
|
14
|
+
"HEAD",
|
|
15
|
+
];
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/http/types.ts"],"names":[],"mappings":";;;AAiBA;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,KAAK;IACL,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,SAAS;IACT,MAAM;CACE,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AcmeKitNextFunction, AcmeKitRequest, AcmeKitResponse, MiddlewaresConfig, MiddlewareVerb, ParserConfig } from "../types";
|
|
2
|
+
import type { ZodRawShape } from "@acmekit/deps/zod";
|
|
3
|
+
/**
|
|
4
|
+
* A helper function to configure the routes by defining custom middleware,
|
|
5
|
+
* bodyparser config and validators to be merged with the pre-existing
|
|
6
|
+
* route validators.
|
|
7
|
+
*/
|
|
8
|
+
export declare function defineMiddlewares<Route extends {
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated. Instead use {@link MiddlewareRoute.methods}
|
|
11
|
+
*/
|
|
12
|
+
method?: MiddlewareVerb | MiddlewareVerb[];
|
|
13
|
+
methods?: MiddlewareVerb[];
|
|
14
|
+
matcher: string | RegExp;
|
|
15
|
+
bodyParser?: ParserConfig;
|
|
16
|
+
additionalDataValidator?: ZodRawShape;
|
|
17
|
+
middlewares?: (<Req extends AcmeKitRequest>(req: Req, res: AcmeKitResponse, next: AcmeKitNextFunction) => any)[];
|
|
18
|
+
}>(config: Route[] | {
|
|
19
|
+
routes?: Route[];
|
|
20
|
+
errorHandler?: MiddlewaresConfig["errorHandler"];
|
|
21
|
+
}): MiddlewaresConfig;
|
|
22
|
+
//# sourceMappingURL=define-middlewares.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-middlewares.d.ts","sourceRoot":"","sources":["../../../src/http/utils/define-middlewares.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,YAAY,EACb,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,SAAS;IACZ;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAA;IAC1C,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;IAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,YAAY,CAAA;IACzB,uBAAuB,CAAC,EAAE,WAAW,CAAA;IAErC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,cAAc,EACxC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,mBAAmB,KACtB,GAAG,CAAC,EAAE,CAAA;CACZ,EAED,MAAM,EACF,KAAK,EAAE,GACP;IAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAA;CAAE,GACzE,iBAAiB,CAmBnB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineMiddlewares = defineMiddlewares;
|
|
4
|
+
/**
|
|
5
|
+
* A helper function to configure the routes by defining custom middleware,
|
|
6
|
+
* bodyparser config and validators to be merged with the pre-existing
|
|
7
|
+
* route validators.
|
|
8
|
+
*/
|
|
9
|
+
function defineMiddlewares(config) {
|
|
10
|
+
const routes = Array.isArray(config) ? config : config.routes || [];
|
|
11
|
+
const errorHandler = Array.isArray(config) ? undefined : config.errorHandler;
|
|
12
|
+
return {
|
|
13
|
+
errorHandler,
|
|
14
|
+
routes: routes.map((route) => {
|
|
15
|
+
let { middlewares, method, methods, ...rest } = route;
|
|
16
|
+
if (!methods) {
|
|
17
|
+
methods = Array.isArray(method) ? method : method ? [method] : method;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
...rest,
|
|
21
|
+
methods,
|
|
22
|
+
middlewares: [...(middlewares ?? [])],
|
|
23
|
+
};
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=define-middlewares.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-middlewares.js","sourceRoot":"","sources":["../../../src/http/utils/define-middlewares.ts"],"names":[],"mappings":";;AAeA,8CAwCC;AA7CD;;;;GAIG;AACH,SAAgB,iBAAiB,CAkB/B,MAE0E;IAE1E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;IACnE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAA;IAE5E,OAAO;QACL,YAAY;QACZ,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACvE,CAAC;YAED,OAAO;gBACL,GAAG,IAAI;gBACP,OAAO;gBACP,WAAW,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;aACtC,CAAA;QACH,CAAC,CAAC;KACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ParsedFields } from "./index";
|
|
2
|
+
/**
|
|
3
|
+
* Handles parsing of field strings into structured field sets
|
|
4
|
+
* Supports various field modifiers:
|
|
5
|
+
* - `+field` or ` field`: Add to defaults
|
|
6
|
+
* - `-field`: Remove from defaults
|
|
7
|
+
* - `*field` or `field.*`: Select all properties of a relation
|
|
8
|
+
*/
|
|
9
|
+
export declare class FieldParser {
|
|
10
|
+
/**
|
|
11
|
+
* Parse field string and defaults into structured field sets
|
|
12
|
+
* @param fields - Comma-separated field string from query
|
|
13
|
+
* @param defaults - Default fields to include
|
|
14
|
+
* @returns ParsedFields with fields and starFields sets
|
|
15
|
+
*/
|
|
16
|
+
static parse(fields: string | undefined, defaults?: string[]): ParsedFields;
|
|
17
|
+
/**
|
|
18
|
+
* Determines if custom fields should replace defaults
|
|
19
|
+
* Fields replace defaults when any field doesn't have a modifier prefix
|
|
20
|
+
*/
|
|
21
|
+
private static shouldReplaceDefaults;
|
|
22
|
+
/**
|
|
23
|
+
* Apply field modifiers (+, -, etc) to the field set
|
|
24
|
+
*/
|
|
25
|
+
private static applyFieldModifiers;
|
|
26
|
+
/**
|
|
27
|
+
* Extract star fields (* prefix or .* suffix) from allFields into starFields set
|
|
28
|
+
* Star fields represent "select all properties" for a relation
|
|
29
|
+
*/
|
|
30
|
+
private static extractStarFields;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=field-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-parser.d.ts","sourceRoot":"","sources":["../../../../src/http/utils/field-filtering/field-parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,GAAE,MAAM,EAAO,GACtB,YAAY;IAsBf;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAepC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwBlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAWjC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FieldParser = void 0;
|
|
4
|
+
const utils_1 = require("@acmekit/utils");
|
|
5
|
+
/**
|
|
6
|
+
* Handles parsing of field strings into structured field sets
|
|
7
|
+
* Supports various field modifiers:
|
|
8
|
+
* - `+field` or ` field`: Add to defaults
|
|
9
|
+
* - `-field`: Remove from defaults
|
|
10
|
+
* - `*field` or `field.*`: Select all properties of a relation
|
|
11
|
+
*/
|
|
12
|
+
class FieldParser {
|
|
13
|
+
/**
|
|
14
|
+
* Parse field string and defaults into structured field sets
|
|
15
|
+
* @param fields - Comma-separated field string from query
|
|
16
|
+
* @param defaults - Default fields to include
|
|
17
|
+
* @returns ParsedFields with fields and starFields sets
|
|
18
|
+
*/
|
|
19
|
+
static parse(fields, defaults = []) {
|
|
20
|
+
const starFields = new Set();
|
|
21
|
+
let allFields = new Set(defaults);
|
|
22
|
+
if ((0, utils_1.isDefined)(fields)) {
|
|
23
|
+
const customFields = fields.split(",").filter(Boolean);
|
|
24
|
+
const shouldReplaceDefaultFields = this.shouldReplaceDefaults(customFields);
|
|
25
|
+
if (shouldReplaceDefaultFields) {
|
|
26
|
+
allFields = new Set(customFields.map((f) => f.replace(/^[+ -]/, "")));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.applyFieldModifiers(customFields, allFields);
|
|
30
|
+
}
|
|
31
|
+
allFields.add("id");
|
|
32
|
+
}
|
|
33
|
+
this.extractStarFields(allFields, starFields);
|
|
34
|
+
return { fields: allFields, starFields };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Determines if custom fields should replace defaults
|
|
38
|
+
* Fields replace defaults when any field doesn't have a modifier prefix
|
|
39
|
+
*/
|
|
40
|
+
static shouldReplaceDefaults(customFields) {
|
|
41
|
+
return (!customFields.length ||
|
|
42
|
+
customFields.some((field) => {
|
|
43
|
+
return !(field.startsWith("-") ||
|
|
44
|
+
field.startsWith("+") ||
|
|
45
|
+
field.startsWith(" ") ||
|
|
46
|
+
field.startsWith("*") ||
|
|
47
|
+
field.endsWith(".*"));
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Apply field modifiers (+, -, etc) to the field set
|
|
52
|
+
*/
|
|
53
|
+
static applyFieldModifiers(customFields, allFields) {
|
|
54
|
+
customFields.forEach((field) => {
|
|
55
|
+
if (field.startsWith("+") || field.startsWith(" ")) {
|
|
56
|
+
allFields.add(field.trim().replace(/^\+/, ""));
|
|
57
|
+
}
|
|
58
|
+
else if (field.startsWith("-")) {
|
|
59
|
+
const fieldName = field.replace(/^-/, "");
|
|
60
|
+
for (const reqField of allFields) {
|
|
61
|
+
const reqFieldName = reqField.replace(/^\*/, "");
|
|
62
|
+
if (reqFieldName === fieldName ||
|
|
63
|
+
reqFieldName.startsWith(fieldName + ".")) {
|
|
64
|
+
allFields.delete(reqField);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
allFields.add(field);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Extract star fields (* prefix or .* suffix) from allFields into starFields set
|
|
75
|
+
* Star fields represent "select all properties" for a relation
|
|
76
|
+
*/
|
|
77
|
+
static extractStarFields(allFields, starFields) {
|
|
78
|
+
allFields.forEach((field) => {
|
|
79
|
+
if (field.startsWith("*") || field.endsWith(".*")) {
|
|
80
|
+
starFields.add(field.replace(/(^\*|\.\*$)/, ""));
|
|
81
|
+
allFields.delete(field);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.FieldParser = FieldParser;
|
|
87
|
+
//# sourceMappingURL=field-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-parser.js","sourceRoot":"","sources":["../../../../src/http/utils/field-filtering/field-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FieldFilterContext, IFieldFilter } from "./index";
|
|
2
|
+
/**
|
|
3
|
+
* Filter that only allows explicitly specified fields
|
|
4
|
+
* Fields not in the allowed list are returned as not allowed
|
|
5
|
+
*/
|
|
6
|
+
export declare class AllowedFieldFilter implements IFieldFilter {
|
|
7
|
+
private allowed;
|
|
8
|
+
constructor({ allowed }: {
|
|
9
|
+
allowed: string[];
|
|
10
|
+
});
|
|
11
|
+
getNotAllowedFields(context: FieldFilterContext): string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Filter that restricts specific fields
|
|
15
|
+
* Fields containing any restricted segment are returned as not allowed
|
|
16
|
+
*/
|
|
17
|
+
export declare class RestrictedFieldFilter implements IFieldFilter {
|
|
18
|
+
private restricted;
|
|
19
|
+
constructor({ restricted }: {
|
|
20
|
+
restricted: string[];
|
|
21
|
+
});
|
|
22
|
+
getNotAllowedFields(context: FieldFilterContext): string[];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=field-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-validator.d.ts","sourceRoot":"","sources":["../../../../src/http/utils/field-filtering/field-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1D;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,OAAO,CAAU;gBAEb,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAI9C,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE;CAmC3D;AAED;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACxD,OAAO,CAAC,UAAU,CAAU;gBAEhB,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAIpD,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE;CAqB3D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestrictedFieldFilter = exports.AllowedFieldFilter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Filter that only allows explicitly specified fields
|
|
6
|
+
* Fields not in the allowed list are returned as not allowed
|
|
7
|
+
*/
|
|
8
|
+
class AllowedFieldFilter {
|
|
9
|
+
constructor({ allowed }) {
|
|
10
|
+
this.allowed = allowed;
|
|
11
|
+
}
|
|
12
|
+
getNotAllowedFields(context) {
|
|
13
|
+
const { parsedFields } = context;
|
|
14
|
+
const { fields, starFields } = parsedFields;
|
|
15
|
+
const fieldsToCheck = [...fields, ...Array.from(starFields)];
|
|
16
|
+
const notAllowedFields = [];
|
|
17
|
+
fieldsToCheck.forEach((field) => {
|
|
18
|
+
const hasAllowedField = this.allowed.includes(field);
|
|
19
|
+
if (hasAllowedField) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// Select full relation - must match an allowed field fully
|
|
23
|
+
// e.g product.variants must have product.variants in allowedFields
|
|
24
|
+
if (starFields.has(field)) {
|
|
25
|
+
if (hasAllowedField) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
notAllowedFields.push(field);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const fieldStartsWithAllowedField = this.allowed.some((allowedField) => field.startsWith(allowedField));
|
|
32
|
+
if (!fieldStartsWithAllowedField) {
|
|
33
|
+
notAllowedFields.push(field);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return notAllowedFields;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.AllowedFieldFilter = AllowedFieldFilter;
|
|
41
|
+
/**
|
|
42
|
+
* Filter that restricts specific fields
|
|
43
|
+
* Fields containing any restricted segment are returned as not allowed
|
|
44
|
+
*/
|
|
45
|
+
class RestrictedFieldFilter {
|
|
46
|
+
constructor({ restricted }) {
|
|
47
|
+
this.restricted = restricted;
|
|
48
|
+
}
|
|
49
|
+
getNotAllowedFields(context) {
|
|
50
|
+
const { parsedFields } = context;
|
|
51
|
+
const { fields, starFields } = parsedFields;
|
|
52
|
+
const fieldsToCheck = [...fields, ...Array.from(starFields)];
|
|
53
|
+
const notAllowedFields = [];
|
|
54
|
+
fieldsToCheck.forEach((field) => {
|
|
55
|
+
const fieldSegments = field.split(".");
|
|
56
|
+
const hasRestrictedField = this.restricted.some((restrictedField) => fieldSegments.includes(restrictedField));
|
|
57
|
+
if (hasRestrictedField) {
|
|
58
|
+
notAllowedFields.push(field);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
});
|
|
63
|
+
return notAllowedFields;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.RestrictedFieldFilter = RestrictedFieldFilter;
|
|
67
|
+
//# sourceMappingURL=field-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-validator.js","sourceRoot":"","sources":["../../../../src/http/utils/field-filtering/field-validator.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,kBAAkB;IAG7B,YAAY,EAAE,OAAO,EAAyB;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,mBAAmB,CAAC,OAA2B;QAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;QAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAA;QAC3C,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAC5D,MAAM,gBAAgB,GAAa,EAAE,CAAA;QAErC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAEpD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAM;YACR,CAAC;YAED,2DAA2D;YAC3D,mEAAmE;YACnE,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,eAAe,EAAE,CAAC;oBACpB,OAAM;gBACR,CAAC;gBACD,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,OAAM;YACR,CAAC;YAED,MAAM,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CACrE,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAC/B,CAAA;YAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,OAAM;YACR,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,gBAAgB,CAAA;IACzB,CAAC;CACF;AA1CD,gDA0CC;AAED;;;GAGG;AACH,MAAa,qBAAqB;IAGhC,YAAY,EAAE,UAAU,EAA4B;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,mBAAmB,CAAC,OAA2B;QAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;QAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAA;QAC3C,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAC5D,MAAM,gBAAgB,GAAa,EAAE,CAAA;QAErC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CAClE,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CACxC,CAAA;YACD,IAAI,kBAAkB,EAAE,CAAC;gBACvB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,OAAM;YACR,CAAC;YAED,OAAM;QACR,CAAC,CAAC,CAAA;QAEF,OAAO,gBAAgB,CAAA;IACzB,CAAC;CACF;AA5BD,sDA4BC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parsed fields structure after processing field strings
|
|
3
|
+
*/
|
|
4
|
+
export interface ParsedFields {
|
|
5
|
+
/** Regular fields to select */
|
|
6
|
+
fields: Set<string>;
|
|
7
|
+
/** Star fields representing full relation selections (e.g., *product.variants) */
|
|
8
|
+
starFields: Set<string>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Context passed to field filters for determining access
|
|
12
|
+
*/
|
|
13
|
+
export interface FieldFilterContext {
|
|
14
|
+
/** The main entity being queried (e.g., "product", "order") */
|
|
15
|
+
entity: string;
|
|
16
|
+
/** Parsed fields to filter */
|
|
17
|
+
parsedFields: ParsedFields;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Interface for field filters following the Strategy pattern
|
|
21
|
+
* Allows adding new field filtering logic without modifying prepareListQuery
|
|
22
|
+
*/
|
|
23
|
+
export interface IFieldFilter {
|
|
24
|
+
/**
|
|
25
|
+
* Returns fields that should be excluded from the query
|
|
26
|
+
* @param context - The filter context containing entity and parsed fields
|
|
27
|
+
* @returns Array of field names that are not allowed
|
|
28
|
+
*/
|
|
29
|
+
getNotAllowedFields(context: FieldFilterContext): Promise<string[]> | string[];
|
|
30
|
+
}
|
|
31
|
+
export { FieldParser } from "./field-parser";
|
|
32
|
+
export { AllowedFieldFilter, RestrictedFieldFilter } from "./field-validator";
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http/utils/field-filtering/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,kFAAkF;IAClF,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAA;CAC/E;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestrictedFieldFilter = exports.AllowedFieldFilter = exports.FieldParser = void 0;
|
|
4
|
+
var field_parser_1 = require("./field-parser");
|
|
5
|
+
Object.defineProperty(exports, "FieldParser", { enumerable: true, get: function () { return field_parser_1.FieldParser; } });
|
|
6
|
+
var field_validator_1 = require("./field-validator");
|
|
7
|
+
Object.defineProperty(exports, "AllowedFieldFilter", { enumerable: true, get: function () { return field_validator_1.AllowedFieldFilter; } });
|
|
8
|
+
Object.defineProperty(exports, "RestrictedFieldFilter", { enumerable: true, get: function () { return field_validator_1.RestrictedFieldFilter; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/http/utils/field-filtering/index.ts"],"names":[],"mappings":";;;AAiCA,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,qDAA6E;AAApE,qHAAA,kBAAkB,OAAA;AAAE,wHAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { FindConfig, QueryConfig, RequestQueryFields } from "@acmekit/types";
|
|
2
|
+
import { PolicyDefinition } from "@acmekit/utils";
|
|
3
|
+
import { AuthContext, AcmeKitRequest } from "../types";
|
|
4
|
+
export declare function pickByConfig<TModel>(obj: TModel | TModel[], config: FindConfig<TModel>): Partial<TModel> | Partial<TModel>[];
|
|
5
|
+
export declare function prepareListQuery<T extends RequestQueryFields, TEntity>(validated: T, queryConfig?: QueryConfig<TEntity> & {
|
|
6
|
+
restricted?: string[];
|
|
7
|
+
}, req?: AcmeKitRequest & {
|
|
8
|
+
policies?: PolicyDefinition[];
|
|
9
|
+
auth_context?: AuthContext;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
listConfig: {
|
|
12
|
+
select: string[] | undefined;
|
|
13
|
+
relations: string[];
|
|
14
|
+
skip: number;
|
|
15
|
+
take: number;
|
|
16
|
+
order: import("@acmekit/utils").Order | undefined;
|
|
17
|
+
withDeleted: boolean | undefined;
|
|
18
|
+
};
|
|
19
|
+
remoteQueryConfig: {
|
|
20
|
+
entity: string | TEntity | undefined;
|
|
21
|
+
fields: string[];
|
|
22
|
+
pagination: {
|
|
23
|
+
skip: number;
|
|
24
|
+
take: number;
|
|
25
|
+
order: import("@acmekit/utils").Order | undefined;
|
|
26
|
+
} | {
|
|
27
|
+
skip?: undefined;
|
|
28
|
+
take?: undefined;
|
|
29
|
+
order?: undefined;
|
|
30
|
+
};
|
|
31
|
+
withDeleted: boolean | undefined;
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
export declare function prepareRetrieveQuery<T extends RequestQueryFields, TEntity>(validated: T, queryConfig?: QueryConfig<TEntity> & {
|
|
35
|
+
restricted?: string[];
|
|
36
|
+
}, req?: AcmeKitRequest & {
|
|
37
|
+
policies?: PolicyDefinition[];
|
|
38
|
+
auth_context?: AuthContext;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
retrieveConfig: {
|
|
41
|
+
select: string[] | undefined;
|
|
42
|
+
relations: string[];
|
|
43
|
+
};
|
|
44
|
+
remoteQueryConfig: {
|
|
45
|
+
fields: string[];
|
|
46
|
+
pagination: {};
|
|
47
|
+
withDeleted: boolean | undefined;
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
//# sourceMappingURL=get-query-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-query-config.d.ts","sourceRoot":"","sources":["../../../src/http/utils/get-query-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAOL,gBAAgB,EAGjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAStD,wBAAgB,YAAY,CAAC,MAAM,EACjC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EACtB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GACzB,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAWrC;AAED,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,kBAAkB,EAAE,OAAO,EAC1E,SAAS,EAAE,CAAC,EACZ,WAAW,GAAE,WAAW,CAAC,OAAO,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,EAClE,GAAG,CAAC,EAAE,cAAc,GAAG;IACrB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAA;CAC3B;;;;;;;;;;;;;;;;;;;;;;;GA8GF;AAED,wBAAsB,oBAAoB,CACxC,CAAC,SAAS,kBAAkB,EAC5B,OAAO,EAEP,SAAS,EAAE,CAAC,EACZ,WAAW,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,EAC9D,GAAG,CAAC,EAAE,cAAc,GAAG;IACrB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAA;CAC3B;;;;;;;;;;GAmBF"}
|