@porulle/core 0.63.0 → 0.65.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/dist/adapters/email-render.d.ts +18 -0
- package/dist/adapters/email-render.d.ts.map +1 -0
- package/dist/adapters/email-render.js +37 -0
- package/dist/auth/actor.d.ts.map +1 -1
- package/dist/auth/actor.js +11 -0
- package/dist/auth/auth-failure.d.ts +0 -2
- package/dist/auth/auth-failure.d.ts.map +1 -1
- package/dist/auth/auth-failure.js +0 -4
- package/dist/auth/middleware.d.ts +0 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +7 -6
- package/dist/auth/permissions.d.ts +2 -0
- package/dist/auth/permissions.d.ts.map +1 -1
- package/dist/auth/permissions.js +8 -6
- package/dist/auth/role-authority.d.ts +0 -1
- package/dist/auth/role-authority.d.ts.map +1 -1
- package/dist/auth/role-authority.js +1 -8
- package/dist/auth/setup.d.ts.map +1 -1
- package/dist/auth/setup.js +8 -0
- package/dist/auth/strict-org-resolution.d.ts +8 -1
- package/dist/auth/strict-org-resolution.d.ts.map +1 -1
- package/dist/auth/strict-org-resolution.js +9 -19
- package/dist/auth/system-actor.d.ts +3 -2
- package/dist/auth/system-actor.d.ts.map +1 -1
- package/dist/auth/system-actor.js +3 -3
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +3 -20
- package/dist/config/define-config.d.ts +2 -2
- package/dist/config/define-config.d.ts.map +1 -1
- package/dist/config/define-config.js +3 -2
- package/dist/config/types.d.ts +13 -3
- package/dist/config/types.d.ts.map +1 -1
- package/dist/hooks/checkout.d.ts +2 -15
- package/dist/hooks/checkout.d.ts.map +1 -1
- package/dist/hooks/checkout.js +2 -51
- package/dist/index.d.ts +11 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -12
- package/dist/interfaces/rest/router.js +3 -3
- package/dist/interfaces/rest/routes/admin/compensation-failures.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/admin/compensation-failures.js +5 -5
- package/dist/interfaces/rest/routes/admin/entity-field-definitions.js +5 -5
- package/dist/interfaces/rest/routes/admin/staff.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/admin/staff.js +2 -3
- package/dist/interfaces/rest/routes/analytics.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/analytics.js +2 -2
- package/dist/interfaces/rest/routes/carts.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/carts.js +12 -12
- package/dist/interfaces/rest/routes/catalog.js +37 -37
- package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/checkout.js +9 -10
- package/dist/interfaces/rest/routes/customers.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/customers.js +12 -12
- package/dist/interfaces/rest/routes/documents.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/documents.js +9 -9
- package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/inventory.js +8 -8
- package/dist/interfaces/rest/routes/media.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/media.js +5 -5
- package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/orders.js +32 -32
- package/dist/interfaces/rest/routes/payments.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/payments.js +2 -2
- package/dist/interfaces/rest/routes/pricing.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/pricing.js +8 -8
- package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/promotions.js +7 -7
- package/dist/interfaces/rest/routes/search.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/search.js +3 -3
- package/dist/interfaces/rest/routes/settings.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/settings.js +4 -4
- package/dist/interfaces/rest/routes/shipping.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/shipping.js +9 -9
- package/dist/interfaces/rest/routes/tax.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/tax.js +9 -9
- package/dist/interfaces/rest/routes/webhooks.d.ts.map +1 -1
- package/dist/interfaces/rest/routes/webhooks.js +4 -4
- package/dist/interfaces/rest/utils.d.ts +1 -1
- package/dist/interfaces/rest/utils.d.ts.map +1 -1
- package/dist/interfaces/rest/utils.js +4 -13
- package/dist/jobs.d.ts +1 -0
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +1 -0
- package/dist/kernel/database/adapter.d.ts +9 -0
- package/dist/kernel/database/adapter.d.ts.map +1 -1
- package/dist/kernel/database/adapter.js +1 -1
- package/dist/kernel/database/migrate.d.ts +0 -4
- package/dist/kernel/database/migrate.d.ts.map +1 -1
- package/dist/kernel/database/migrate.js +2 -14
- package/dist/kernel/database/pglite-transaction.d.ts +28 -0
- package/dist/kernel/database/pglite-transaction.d.ts.map +1 -0
- package/dist/kernel/database/pglite-transaction.js +52 -0
- package/dist/kernel/database/tx-context.d.ts +0 -1
- package/dist/kernel/database/tx-context.d.ts.map +1 -1
- package/dist/kernel/database/tx-context.js +2 -14
- package/dist/kernel/database/unique-violation.d.ts +3 -0
- package/dist/kernel/database/unique-violation.d.ts.map +1 -0
- package/dist/kernel/database/unique-violation.js +9 -0
- package/dist/kernel/error-mapper.d.ts.map +1 -1
- package/dist/kernel/error-mapper.js +1 -0
- package/dist/kernel/errors.d.ts +12 -0
- package/dist/kernel/errors.d.ts.map +1 -1
- package/dist/kernel/errors.js +16 -0
- package/dist/kernel/hooks/create-context.d.ts +18 -9
- package/dist/kernel/hooks/create-context.d.ts.map +1 -1
- package/dist/kernel/hooks/create-context.js +24 -3
- package/dist/kernel/hooks/registry.d.ts +0 -19
- package/dist/kernel/hooks/registry.d.ts.map +1 -1
- package/dist/kernel/hooks/registry.js +0 -32
- package/dist/kernel/jobs/drizzle-adapter.d.ts.map +1 -1
- package/dist/kernel/jobs/drizzle-adapter.js +3 -10
- package/dist/kernel/jobs/prepare-enqueue.d.ts +20 -0
- package/dist/kernel/jobs/prepare-enqueue.d.ts.map +1 -0
- package/dist/kernel/jobs/prepare-enqueue.js +24 -0
- package/dist/kernel/jobs/types.d.ts +0 -4
- package/dist/kernel/jobs/types.d.ts.map +1 -1
- package/dist/kernel/jobs/types.js +0 -4
- package/dist/kernel/local-api.d.ts +0 -33
- package/dist/kernel/local-api.d.ts.map +1 -1
- package/dist/kernel/local-api.js +0 -36
- package/dist/kernel/plugin/manifest.d.ts +3 -5
- package/dist/kernel/plugin/manifest.d.ts.map +1 -1
- package/dist/modules/analytics/service.d.ts +0 -6
- package/dist/modules/analytics/service.d.ts.map +1 -1
- package/dist/modules/analytics/service.js +0 -32
- package/dist/modules/cart/service.d.ts.map +1 -1
- package/dist/modules/cart/service.js +5 -17
- package/dist/modules/catalog/entity-service.d.ts.map +1 -1
- package/dist/modules/catalog/entity-service.js +9 -17
- package/dist/modules/catalog/import-service.d.ts.map +1 -1
- package/dist/modules/catalog/import-service.js +4 -13
- package/dist/modules/catalog/service.d.ts +1 -81
- package/dist/modules/catalog/service.d.ts.map +1 -1
- package/dist/modules/catalog/service.js +1 -8
- package/dist/modules/customers/service.d.ts.map +1 -1
- package/dist/modules/customers/service.js +5 -17
- package/dist/modules/documents/render.d.ts +0 -3
- package/dist/modules/documents/render.d.ts.map +1 -1
- package/dist/modules/documents/render.js +2 -17
- package/dist/modules/fulfillment/service.d.ts.map +1 -1
- package/dist/modules/fulfillment/service.js +8 -26
- package/dist/modules/inventory/service.d.ts.map +1 -1
- package/dist/modules/inventory/service.js +3 -20
- package/dist/modules/media/service.d.ts.map +1 -1
- package/dist/modules/media/service.js +2 -10
- package/dist/modules/orders/quote.d.ts.map +1 -1
- package/dist/modules/orders/quote.js +1 -2
- package/dist/modules/orders/service.d.ts.map +1 -1
- package/dist/modules/orders/service.js +4 -17
- package/dist/modules/pricing/service.d.ts.map +1 -1
- package/dist/modules/pricing/service.js +7 -18
- package/dist/modules/promotions/service.d.ts.map +1 -1
- package/dist/modules/promotions/service.js +4 -16
- package/dist/modules/tax/service.d.ts +1 -3
- package/dist/modules/tax/service.d.ts.map +1 -1
- package/dist/modules/tax/service.js +16 -52
- package/dist/modules/webhooks/hook.d.ts.map +1 -1
- package/dist/modules/webhooks/hook.js +3 -2
- package/dist/modules/webhooks/service.d.ts.map +1 -1
- package/dist/modules/webhooks/service.js +1 -50
- package/dist/runtime/commerce.d.ts.map +1 -1
- package/dist/runtime/commerce.js +4 -11
- package/dist/runtime/kernel-modules.d.ts +38 -1799
- package/dist/runtime/kernel-modules.d.ts.map +1 -1
- package/dist/runtime/kernel-modules.js +160 -66
- package/dist/runtime/kernel-types.d.ts +3 -15
- package/dist/runtime/kernel-types.d.ts.map +1 -1
- package/dist/runtime/kernel-types.js +0 -10
- package/dist/runtime/kernel.d.ts +2 -3
- package/dist/runtime/kernel.d.ts.map +1 -1
- package/dist/runtime/kernel.js +10 -51
- package/dist/runtime/server.d.ts +1 -1
- package/dist/runtime/server.d.ts.map +1 -1
- package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -1
- package/dist/test-utils/create-pglite-adapter.js +5 -62
- package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -1
- package/dist/test-utils/create-plugin-test-app.js +13 -32
- package/dist/test-utils/rest-api-test-utils.d.ts +0 -12
- package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -1
- package/dist/test-utils/rest-api-test-utils.js +3 -70
- package/dist/test-utils/test-actors.d.ts +9 -0
- package/dist/test-utils/test-actors.d.ts.map +1 -1
- package/dist/test-utils/test-actors.js +62 -0
- package/dist/testing.d.ts +1 -4
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +1 -4
- package/dist/utils/escape-html.d.ts +3 -0
- package/dist/utils/escape-html.d.ts.map +1 -0
- package/dist/utils/escape-html.js +9 -0
- package/dist/utils/id.d.ts +0 -1
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +0 -3
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/money.d.ts +13 -0
- package/dist/utils/money.d.ts.map +1 -0
- package/dist/utils/money.js +58 -0
- package/package.json +5 -6
- package/src/adapters/email-render.ts +63 -0
- package/src/auth/actor.ts +14 -0
- package/src/auth/auth-failure.ts +0 -5
- package/src/auth/middleware.ts +7 -6
- package/src/auth/permissions.ts +12 -6
- package/src/auth/role-authority.ts +1 -10
- package/src/auth/setup.ts +11 -0
- package/src/auth/strict-org-resolution.ts +9 -16
- package/src/auth/system-actor.ts +3 -3
- package/src/config/defaults.ts +3 -20
- package/src/config/define-config.ts +5 -4
- package/src/config/types.ts +13 -2
- package/src/hooks/checkout.ts +2 -86
- package/src/index.ts +9 -36
- package/src/interfaces/rest/router.ts +3 -3
- package/src/interfaces/rest/routes/admin/compensation-failures.ts +5 -5
- package/src/interfaces/rest/routes/admin/entity-field-definitions.ts +5 -5
- package/src/interfaces/rest/routes/admin/staff.ts +2 -3
- package/src/interfaces/rest/routes/analytics.ts +2 -2
- package/src/interfaces/rest/routes/carts.ts +12 -12
- package/src/interfaces/rest/routes/catalog.ts +37 -37
- package/src/interfaces/rest/routes/checkout.ts +8 -10
- package/src/interfaces/rest/routes/customers.ts +12 -12
- package/src/interfaces/rest/routes/documents.ts +9 -9
- package/src/interfaces/rest/routes/inventory.ts +8 -8
- package/src/interfaces/rest/routes/media.ts +5 -5
- package/src/interfaces/rest/routes/orders.ts +32 -32
- package/src/interfaces/rest/routes/payments.ts +2 -2
- package/src/interfaces/rest/routes/pricing.ts +8 -8
- package/src/interfaces/rest/routes/promotions.ts +7 -7
- package/src/interfaces/rest/routes/search.ts +3 -3
- package/src/interfaces/rest/routes/settings.ts +4 -4
- package/src/interfaces/rest/routes/shipping.ts +9 -9
- package/src/interfaces/rest/routes/tax.ts +9 -9
- package/src/interfaces/rest/routes/webhooks.ts +4 -4
- package/src/interfaces/rest/utils.ts +4 -14
- package/src/jobs.ts +2 -1
- package/src/kernel/database/adapter.ts +1 -1
- package/src/kernel/database/migrate.ts +2 -17
- package/src/kernel/database/pglite-transaction.ts +61 -0
- package/src/kernel/database/tx-context.ts +2 -20
- package/src/kernel/database/unique-violation.ts +7 -0
- package/src/kernel/error-mapper.ts +1 -0
- package/src/kernel/errors.ts +18 -0
- package/src/kernel/hooks/create-context.ts +38 -8
- package/src/kernel/hooks/registry.ts +0 -37
- package/src/kernel/jobs/drizzle-adapter.ts +4 -15
- package/src/kernel/jobs/prepare-enqueue.ts +42 -0
- package/src/kernel/jobs/types.ts +0 -5
- package/src/kernel/local-api.ts +0 -44
- package/src/kernel/plugin/manifest.ts +3 -5
- package/src/modules/analytics/service.ts +0 -36
- package/src/modules/cart/service.ts +6 -29
- package/src/modules/catalog/entity-service.ts +9 -19
- package/src/modules/catalog/import-service.ts +4 -11
- package/src/modules/catalog/service.ts +2 -286
- package/src/modules/customers/service.ts +6 -27
- package/src/modules/documents/render.ts +2 -19
- package/src/modules/fulfillment/service.ts +8 -27
- package/src/modules/inventory/service.ts +3 -21
- package/src/modules/media/service.ts +2 -8
- package/src/modules/orders/quote.ts +1 -2
- package/src/modules/orders/service.ts +5 -30
- package/src/modules/pricing/service.ts +12 -30
- package/src/modules/promotions/service.ts +5 -28
- package/src/modules/tax/service.ts +20 -48
- package/src/modules/webhooks/hook.ts +3 -2
- package/src/modules/webhooks/service.ts +1 -42
- package/src/runtime/commerce.ts +4 -11
- package/src/runtime/kernel-modules.ts +191 -67
- package/src/runtime/kernel-types.ts +3 -26
- package/src/runtime/kernel.ts +11 -66
- package/src/runtime/server.ts +1 -3
- package/src/test-utils/create-pglite-adapter.ts +5 -67
- package/src/test-utils/create-plugin-test-app.ts +13 -52
- package/src/test-utils/rest-api-test-utils.ts +3 -70
- package/src/test-utils/test-actors.ts +66 -0
- package/src/testing.ts +1 -3
- package/src/utils/escape-html.ts +9 -0
- package/src/utils/id.ts +0 -4
- package/src/utils/logger.ts +1 -1
- package/src/utils/money.ts +62 -0
- package/dist/auth/access.d.ts +0 -101
- package/dist/auth/access.d.ts.map +0 -1
- package/dist/auth/access.js +0 -128
- package/dist/generated/plugin-manifest.d.ts +0 -51
- package/dist/generated/plugin-manifest.d.ts.map +0 -1
- package/dist/generated/plugin-manifest.js +0 -21
- package/dist/kernel/factory/repository-factory.d.ts +0 -71
- package/dist/kernel/factory/repository-factory.d.ts.map +0 -1
- package/dist/kernel/factory/repository-factory.js +0 -138
- package/dist/kernel/http-error.d.ts +0 -30
- package/dist/kernel/http-error.d.ts.map +0 -1
- package/dist/kernel/http-error.js +0 -35
- package/dist/kernel/jobs/builtin-job-tasks.d.ts +0 -3
- package/dist/kernel/jobs/builtin-job-tasks.d.ts.map +0 -1
- package/dist/kernel/jobs/builtin-job-tasks.js +0 -6
- package/dist/kernel/module/define.d.ts +0 -21
- package/dist/kernel/module/define.d.ts.map +0 -1
- package/dist/kernel/module/define.js +0 -3
- package/dist/kernel/module/index.d.ts +0 -4
- package/dist/kernel/module/index.d.ts.map +0 -1
- package/dist/kernel/module/index.js +0 -2
- package/dist/kernel/module/topo-sort.d.ts +0 -7
- package/dist/kernel/module/topo-sort.d.ts.map +0 -1
- package/dist/kernel/module/topo-sort.js +0 -89
- package/dist/kernel/query/executor.d.ts +0 -21
- package/dist/kernel/query/executor.d.ts.map +0 -1
- package/dist/kernel/query/executor.js +0 -128
- package/dist/kernel/query/registry.d.ts +0 -33
- package/dist/kernel/query/registry.d.ts.map +0 -1
- package/dist/kernel/query/registry.js +0 -20
- package/dist/kernel/service-registry.d.ts +0 -109
- package/dist/kernel/service-registry.d.ts.map +0 -1
- package/dist/kernel/service-registry.js +0 -26
- package/dist/modules/analytics/hooks.d.ts +0 -13
- package/dist/modules/analytics/hooks.d.ts.map +0 -1
- package/dist/modules/analytics/hooks.js +0 -12
- package/dist/modules/analytics/module.d.ts +0 -3
- package/dist/modules/analytics/module.d.ts.map +0 -1
- package/dist/modules/analytics/module.js +0 -24
- package/dist/modules/analytics/repository/index.d.ts +0 -5
- package/dist/modules/analytics/repository/index.d.ts.map +0 -1
- package/dist/modules/analytics/repository/index.js +0 -1
- package/dist/modules/audit/index.d.ts +0 -2
- package/dist/modules/audit/index.d.ts.map +0 -1
- package/dist/modules/audit/index.js +0 -1
- package/dist/modules/audit/module.d.ts +0 -180
- package/dist/modules/audit/module.d.ts.map +0 -1
- package/dist/modules/audit/module.js +0 -8
- package/dist/modules/cart/access.d.ts +0 -11
- package/dist/modules/cart/access.d.ts.map +0 -1
- package/dist/modules/cart/access.js +0 -18
- package/dist/modules/cart/module.d.ts +0 -14
- package/dist/modules/cart/module.d.ts.map +0 -1
- package/dist/modules/cart/module.js +0 -17
- package/dist/modules/catalog/module.d.ts +0 -26
- package/dist/modules/catalog/module.d.ts.map +0 -1
- package/dist/modules/catalog/module.js +0 -33
- package/dist/modules/customers/index.d.ts +0 -2
- package/dist/modules/customers/index.d.ts.map +0 -1
- package/dist/modules/customers/index.js +0 -1
- package/dist/modules/customers/module.d.ts +0 -563
- package/dist/modules/customers/module.d.ts.map +0 -1
- package/dist/modules/customers/module.js +0 -20
- package/dist/modules/documents/module.d.ts +0 -7
- package/dist/modules/documents/module.d.ts.map +0 -1
- package/dist/modules/documents/module.js +0 -13
- package/dist/modules/fulfillment/module.d.ts +0 -13
- package/dist/modules/fulfillment/module.d.ts.map +0 -1
- package/dist/modules/fulfillment/module.js +0 -23
- package/dist/modules/inventory/module.d.ts +0 -13
- package/dist/modules/inventory/module.d.ts.map +0 -1
- package/dist/modules/inventory/module.js +0 -20
- package/dist/modules/media/index.d.ts +0 -2
- package/dist/modules/media/index.d.ts.map +0 -1
- package/dist/modules/media/index.js +0 -1
- package/dist/modules/media/module.d.ts +0 -360
- package/dist/modules/media/module.d.ts.map +0 -1
- package/dist/modules/media/module.js +0 -24
- package/dist/modules/orders/module.d.ts +0 -25
- package/dist/modules/orders/module.d.ts.map +0 -1
- package/dist/modules/orders/module.js +0 -33
- package/dist/modules/organization/index.d.ts +0 -2
- package/dist/modules/organization/index.d.ts.map +0 -1
- package/dist/modules/organization/index.js +0 -1
- package/dist/modules/organization/module.d.ts +0 -205
- package/dist/modules/organization/module.d.ts.map +0 -1
- package/dist/modules/organization/module.js +0 -8
- package/dist/modules/payments/module.d.ts +0 -3
- package/dist/modules/payments/module.d.ts.map +0 -1
- package/dist/modules/payments/module.js +0 -7
- package/dist/modules/payments/repository/index.d.ts +0 -5
- package/dist/modules/payments/repository/index.d.ts.map +0 -1
- package/dist/modules/payments/repository/index.js +0 -1
- package/dist/modules/pricing/index.d.ts +0 -2
- package/dist/modules/pricing/index.d.ts.map +0 -1
- package/dist/modules/pricing/index.js +0 -1
- package/dist/modules/pricing/module.d.ts +0 -14
- package/dist/modules/pricing/module.d.ts.map +0 -1
- package/dist/modules/pricing/module.js +0 -17
- package/dist/modules/promotions/module.d.ts +0 -14
- package/dist/modules/promotions/module.d.ts.map +0 -1
- package/dist/modules/promotions/module.js +0 -19
- package/dist/modules/search/module.d.ts +0 -8
- package/dist/modules/search/module.d.ts.map +0 -1
- package/dist/modules/search/module.js +0 -22
- package/dist/modules/search/repository/index.d.ts +0 -5
- package/dist/modules/search/repository/index.d.ts.map +0 -1
- package/dist/modules/search/repository/index.js +0 -1
- package/dist/modules/settings/module.d.ts +0 -6
- package/dist/modules/settings/module.d.ts.map +0 -1
- package/dist/modules/settings/module.js +0 -12
- package/dist/modules/shipping/module.d.ts +0 -12
- package/dist/modules/shipping/module.d.ts.map +0 -1
- package/dist/modules/shipping/module.js +0 -14
- package/dist/modules/tax/module.d.ts +0 -7
- package/dist/modules/tax/module.d.ts.map +0 -1
- package/dist/modules/tax/module.js +0 -13
- package/dist/modules/webhooks/index.d.ts +0 -2
- package/dist/modules/webhooks/index.d.ts.map +0 -1
- package/dist/modules/webhooks/index.js +0 -1
- package/dist/modules/webhooks/module.d.ts +0 -403
- package/dist/modules/webhooks/module.d.ts.map +0 -1
- package/dist/modules/webhooks/module.js +0 -16
- package/dist/test-utils/create-repository-test-harness.d.ts +0 -8
- package/dist/test-utils/create-repository-test-harness.d.ts.map +0 -1
- package/dist/test-utils/create-repository-test-harness.js +0 -7
- package/dist/test-utils/create-test-plugin-context.d.ts +0 -38
- package/dist/test-utils/create-test-plugin-context.d.ts.map +0 -1
- package/dist/test-utils/create-test-plugin-context.js +0 -39
- package/dist/test-utils/typed-hooks.d.ts +0 -44
- package/dist/test-utils/typed-hooks.d.ts.map +0 -1
- package/dist/test-utils/typed-hooks.js +0 -36
- package/dist/types/commerce-types.d.ts +0 -34
- package/dist/types/commerce-types.d.ts.map +0 -1
- package/dist/types/commerce-types.js +0 -1
- package/src/auth/access.ts +0 -187
- package/src/generated/plugin-capabilities.d.ts +0 -21
- package/src/generated/plugin-manifest.ts +0 -24
- package/src/generated/plugin-repositories.d.ts +0 -21
- package/src/kernel/factory/repository-factory.ts +0 -244
- package/src/kernel/http-error.ts +0 -44
- package/src/kernel/jobs/builtin-job-tasks.ts +0 -17
- package/src/kernel/module/define.ts +0 -36
- package/src/kernel/module/index.ts +0 -3
- package/src/kernel/module/topo-sort.ts +0 -99
- package/src/kernel/query/executor.ts +0 -184
- package/src/kernel/query/registry.ts +0 -46
- package/src/kernel/service-registry.ts +0 -76
- package/src/modules/analytics/hooks.ts +0 -11
- package/src/modules/analytics/module.ts +0 -35
- package/src/modules/analytics/repository/index.ts +0 -5
- package/src/modules/audit/index.ts +0 -1
- package/src/modules/audit/module.ts +0 -11
- package/src/modules/cart/access.ts +0 -27
- package/src/modules/cart/module.ts +0 -32
- package/src/modules/catalog/module.ts +0 -80
- package/src/modules/customers/index.ts +0 -1
- package/src/modules/customers/module.ts +0 -29
- package/src/modules/documents/module.ts +0 -21
- package/src/modules/fulfillment/module.ts +0 -44
- package/src/modules/inventory/module.ts +0 -37
- package/src/modules/media/index.ts +0 -1
- package/src/modules/media/module.ts +0 -27
- package/src/modules/orders/module.ts +0 -67
- package/src/modules/organization/index.ts +0 -1
- package/src/modules/organization/module.ts +0 -11
- package/src/modules/payments/module.ts +0 -14
- package/src/modules/payments/repository/index.ts +0 -5
- package/src/modules/pricing/index.ts +0 -1
- package/src/modules/pricing/module.ts +0 -32
- package/src/modules/promotions/module.ts +0 -34
- package/src/modules/search/module.ts +0 -32
- package/src/modules/search/repository/index.ts +0 -5
- package/src/modules/settings/module.ts +0 -20
- package/src/modules/shipping/module.ts +0 -27
- package/src/modules/tax/module.ts +0 -21
- package/src/modules/webhooks/index.ts +0 -1
- package/src/modules/webhooks/module.ts +0 -24
- package/src/test-utils/create-repository-test-harness.ts +0 -16
- package/src/test-utils/create-test-plugin-context.ts +0 -66
- package/src/test-utils/typed-hooks.ts +0 -55
- package/src/types/commerce-types.ts +0 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-modules.d.ts","sourceRoot":"","sources":["../../src/runtime/kernel-modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"kernel-modules.d.ts","sourceRoot":"","sources":["../../src/runtime/kernel-modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAUD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,mCACrB,kBAAkB,oFACf,kBAAkB,kDAEjB,kBAAkB,kDAEnB,kBAAkB,6CAErB,kBAAkB,kDAWX,kBAAkB,sDACrB,kBAAkB,gDAQpB,kBAAkB,+CAQtB,kBAAkB,4CAMb,kBAAkB,kDACjB,kBAAkB,iDAOpB,kBAAkB,iDAShB,kBAAkB,oDAQjB,kBAAkB,gDAUtB,kBAAkB,+CAahB,kBAAkB,6CAMtB,kBAAkB,gDASX,kBAAkB,kDAUvB,kBAAkB,mBAWzB,CAAC"}
|
|
@@ -1,66 +1,160 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
1
|
+
import { extendOrderStateMachine } from "../kernel/state-machine/machine.js";
|
|
2
|
+
import { DrizzleAnalyticsAdapter } from "../modules/analytics/drizzle-adapter.js";
|
|
3
|
+
import { BUILTIN_ANALYTICS_MODELS } from "../modules/analytics/models.js";
|
|
4
|
+
import { RetailReportsEngine } from "../modules/analytics/reports.js";
|
|
5
|
+
import { AnalyticsService } from "../modules/analytics/service.js";
|
|
6
|
+
import { createAuditService } from "../modules/audit/service.js";
|
|
7
|
+
import { CartRepository } from "../modules/cart/repository/index.js";
|
|
8
|
+
import { CartService } from "../modules/cart/service.js";
|
|
9
|
+
import { CatalogRepository } from "../modules/catalog/repository/index.js";
|
|
10
|
+
import { CatalogServiceImpl } from "../modules/catalog/service.js";
|
|
11
|
+
import { CustomersRepository } from "../modules/customers/repository/index.js";
|
|
12
|
+
import { CustomerService } from "../modules/customers/service.js";
|
|
13
|
+
import { DocumentsRepository } from "../modules/documents/repository/index.js";
|
|
14
|
+
import { DocumentsService } from "../modules/documents/service.js";
|
|
15
|
+
import { FulfillmentRepository } from "../modules/fulfillment/repository/index.js";
|
|
16
|
+
import { FulfillmentService } from "../modules/fulfillment/service.js";
|
|
17
|
+
import { InventoryRepository } from "../modules/inventory/repository/index.js";
|
|
18
|
+
import { InventoryService } from "../modules/inventory/service.js";
|
|
19
|
+
import { MediaRepository } from "../modules/media/repository/index.js";
|
|
20
|
+
import { MediaService } from "../modules/media/service.js";
|
|
21
|
+
import { OrdersRepository } from "../modules/orders/repository/index.js";
|
|
22
|
+
import { OrderService } from "../modules/orders/service.js";
|
|
23
|
+
import { OrganizationService } from "../modules/organization/service.js";
|
|
24
|
+
import { PaymentsService } from "../modules/payments/service.js";
|
|
25
|
+
import { PricingRepository } from "../modules/pricing/repository/index.js";
|
|
26
|
+
import { PricingService } from "../modules/pricing/service.js";
|
|
27
|
+
import { PromotionsRepository } from "../modules/promotions/repository/index.js";
|
|
28
|
+
import { PromotionService } from "../modules/promotions/service.js";
|
|
29
|
+
import { SearchService } from "../modules/search/service.js";
|
|
30
|
+
import { SettingsRepository } from "../modules/settings/repository/index.js";
|
|
31
|
+
import { SettingsService } from "../modules/settings/service.js";
|
|
32
|
+
import { ShippingConfigRepository } from "../modules/shipping/repository/index.js";
|
|
33
|
+
import { ShippingService } from "../modules/shipping/service.js";
|
|
34
|
+
import { TaxRatesRepository } from "../modules/tax/repository/index.js";
|
|
35
|
+
import { TaxService } from "../modules/tax/service.js";
|
|
36
|
+
import { WebhooksRepository } from "../modules/webhooks/repository/index.js";
|
|
37
|
+
import { WebhookService } from "../modules/webhooks/service.js";
|
|
38
|
+
const built = (deps) => deps.services;
|
|
39
|
+
/**
|
|
40
|
+
* The core services, in the order the kernel constructs them. A factory that
|
|
41
|
+
* reads another service at construction (catalog's repository, the inventory
|
|
42
|
+
* service) must come after it; services reached only at call time through
|
|
43
|
+
* `deps.services` may sit anywhere.
|
|
44
|
+
*/
|
|
45
|
+
export const KERNEL_SERVICE_FACTORIES = [
|
|
46
|
+
["audit", (d) => createAuditService(d.db)],
|
|
47
|
+
["settings", (d) => new SettingsService({ repository: new SettingsRepository(d.db), config: d.config })],
|
|
48
|
+
["documents", (d) => new DocumentsService({ repository: new DocumentsRepository(d.db), services: d.services, config: d.config })],
|
|
49
|
+
["webhooks", (d) => new WebhookService({ repository: new WebhooksRepository(d.db), config: d.config })],
|
|
50
|
+
["media", (d) => {
|
|
51
|
+
if (d.config.storage == null)
|
|
52
|
+
throw new Error("Media module requires config.storage");
|
|
53
|
+
return new MediaService({
|
|
54
|
+
repository: new MediaRepository(d.db),
|
|
55
|
+
catalogRepository: new CatalogRepository(d.db),
|
|
56
|
+
storage: d.config.storage,
|
|
57
|
+
config: d.config,
|
|
58
|
+
database: d.database,
|
|
59
|
+
services: d.services,
|
|
60
|
+
});
|
|
61
|
+
}],
|
|
62
|
+
["organization", (d) => new OrganizationService(d.db)],
|
|
63
|
+
["customers", (d) => new CustomerService({
|
|
64
|
+
repository: new CustomersRepository(d.db),
|
|
65
|
+
hooks: d.hooks,
|
|
66
|
+
config: d.config,
|
|
67
|
+
services: d.services,
|
|
68
|
+
database: d.database,
|
|
69
|
+
})],
|
|
70
|
+
["catalog", (d) => new CatalogServiceImpl({
|
|
71
|
+
repository: new CatalogRepository(d.db),
|
|
72
|
+
hooks: d.hooks,
|
|
73
|
+
config: d.config,
|
|
74
|
+
services: d.services,
|
|
75
|
+
database: d.database,
|
|
76
|
+
})],
|
|
77
|
+
["tax", (d) => new TaxService({
|
|
78
|
+
adapter: d.config.tax?.adapter,
|
|
79
|
+
repository: new TaxRatesRepository(d.db),
|
|
80
|
+
config: d.config,
|
|
81
|
+
})],
|
|
82
|
+
["payments", (d) => new PaymentsService(d.config.payments)],
|
|
83
|
+
["analytics", (d) => {
|
|
84
|
+
const adapter = new DrizzleAnalyticsAdapter(d.db);
|
|
85
|
+
for (const model of BUILTIN_ANALYTICS_MODELS)
|
|
86
|
+
adapter.registerModel(model);
|
|
87
|
+
// Settings is read at call time, not construction.
|
|
88
|
+
const reports = new RetailReportsEngine(d.db, (orgId, group) => built(d).settings.read(orgId, group));
|
|
89
|
+
return new AnalyticsService({ adapter, config: d.config, reports });
|
|
90
|
+
}],
|
|
91
|
+
["pricing", (d) => new PricingService({
|
|
92
|
+
repository: new PricingRepository(d.db),
|
|
93
|
+
catalogRepository: built(d).catalog.repository,
|
|
94
|
+
hooks: d.hooks,
|
|
95
|
+
config: d.config,
|
|
96
|
+
services: d.services,
|
|
97
|
+
database: d.database,
|
|
98
|
+
})],
|
|
99
|
+
["inventory", (d) => new InventoryService({
|
|
100
|
+
repository: new InventoryRepository(d.db),
|
|
101
|
+
hooks: d.hooks,
|
|
102
|
+
config: d.config,
|
|
103
|
+
services: d.services,
|
|
104
|
+
database: d.database,
|
|
105
|
+
})],
|
|
106
|
+
["promotions", (d) => new PromotionService({
|
|
107
|
+
repository: new PromotionsRepository(d.db),
|
|
108
|
+
catalogRepository: built(d).catalog.repository,
|
|
109
|
+
ordersRepository: new OrdersRepository(d.db),
|
|
110
|
+
hooks: d.hooks,
|
|
111
|
+
config: d.config,
|
|
112
|
+
services: d.services,
|
|
113
|
+
database: d.database,
|
|
114
|
+
})],
|
|
115
|
+
["search", (d) => {
|
|
116
|
+
const adapter = d.config.search?.adapter;
|
|
117
|
+
adapter?.init?.({ db: d.db });
|
|
118
|
+
const catalog = built(d).catalog;
|
|
119
|
+
return new SearchService({
|
|
120
|
+
catalogRepository: catalog.repository,
|
|
121
|
+
resolveEntityFieldDefinitions: catalog.resolveEntityFieldDefinitions.bind(catalog),
|
|
122
|
+
config: d.config,
|
|
123
|
+
...(d.config.entities ? { entities: d.config.entities } : {}),
|
|
124
|
+
...(adapter ? { adapter } : {}),
|
|
125
|
+
...(d.config.search?.defaultFacets ? { defaultFacets: d.config.search.defaultFacets } : {}),
|
|
126
|
+
});
|
|
127
|
+
}],
|
|
128
|
+
["shipping", (d) => new ShippingService({
|
|
129
|
+
config: d.config,
|
|
130
|
+
catalogRepository: built(d).catalog.repository,
|
|
131
|
+
repository: new ShippingConfigRepository(d.db),
|
|
132
|
+
})],
|
|
133
|
+
["cart", (d) => new CartService({
|
|
134
|
+
repository: new CartRepository(d.db),
|
|
135
|
+
catalogRepository: built(d).catalog.repository,
|
|
136
|
+
hooks: d.hooks,
|
|
137
|
+
config: d.config,
|
|
138
|
+
services: d.services,
|
|
139
|
+
database: d.database,
|
|
140
|
+
})],
|
|
141
|
+
["fulfillment", (d) => new FulfillmentService({
|
|
142
|
+
repository: new FulfillmentRepository(d.db),
|
|
143
|
+
ordersRepository: new OrdersRepository(d.db),
|
|
144
|
+
inventoryService: built(d).inventory,
|
|
145
|
+
hooks: d.hooks,
|
|
146
|
+
config: d.config,
|
|
147
|
+
services: d.services,
|
|
148
|
+
database: d.database,
|
|
149
|
+
})],
|
|
150
|
+
["orders", (d) => new OrderService({
|
|
151
|
+
repository: new OrdersRepository(d.db),
|
|
152
|
+
hooks: d.hooks,
|
|
153
|
+
config: d.config,
|
|
154
|
+
services: d.services,
|
|
155
|
+
database: d.database,
|
|
156
|
+
...(d.config.orders?.customTransitions
|
|
157
|
+
? { stateMachine: extendOrderStateMachine(d.config.orders.customTransitions) }
|
|
158
|
+
: {}),
|
|
159
|
+
})],
|
|
160
|
+
];
|
|
@@ -21,17 +21,8 @@ import { SettingsService } from "../modules/settings/service.js";
|
|
|
21
21
|
import { DocumentsService } from "../modules/documents/service.js";
|
|
22
22
|
import type { AuditService } from "../modules/audit/service.js";
|
|
23
23
|
import { OrganizationService } from "../modules/organization/service.js";
|
|
24
|
-
import {
|
|
24
|
+
import { createConsoleLogger } from "../utils/logger.js";
|
|
25
25
|
import { CompensationFailuresRepository } from "../kernel/compensation/repository.js";
|
|
26
|
-
export interface WebhookDeliveryPayload {
|
|
27
|
-
endpoint: {
|
|
28
|
-
id: string;
|
|
29
|
-
url: string;
|
|
30
|
-
secret: string;
|
|
31
|
-
};
|
|
32
|
-
eventName: string;
|
|
33
|
-
payload: unknown;
|
|
34
|
-
}
|
|
35
26
|
export interface Kernel {
|
|
36
27
|
config: CommerceConfig;
|
|
37
28
|
hooks: HookRegistry;
|
|
@@ -45,9 +36,7 @@ export interface Kernel {
|
|
|
45
36
|
payments: PaymentsService;
|
|
46
37
|
fulfillment: FulfillmentService;
|
|
47
38
|
customers: CustomerService;
|
|
48
|
-
webhooks: WebhookService
|
|
49
|
-
enqueueDelivery(payload: WebhookDeliveryPayload): Promise<void>;
|
|
50
|
-
};
|
|
39
|
+
webhooks: WebhookService;
|
|
51
40
|
analytics: AnalyticsService;
|
|
52
41
|
pricing: PricingService;
|
|
53
42
|
promotions: PromotionService;
|
|
@@ -62,7 +51,7 @@ export interface Kernel {
|
|
|
62
51
|
organization: OrganizationService;
|
|
63
52
|
};
|
|
64
53
|
pluginPermissions: PluginPermission[];
|
|
65
|
-
logger: ReturnType<typeof
|
|
54
|
+
logger: ReturnType<typeof createConsoleLogger>;
|
|
66
55
|
}
|
|
67
56
|
export interface ConfigRouteDatabase extends DatabaseAdapter {
|
|
68
57
|
readonly scoped: PluginDb;
|
|
@@ -72,5 +61,4 @@ export type ConfigRouteKernel = Omit<Kernel, "database"> & {
|
|
|
72
61
|
};
|
|
73
62
|
export declare const KERNEL_REQUIRED_SERVICE_KEYS: ["catalog", "inventory", "media", "cart", "orders", "payments", "fulfillment", "customers", "webhooks", "analytics", "pricing", "promotions", "tax", "shipping", "search", "settings", "documents", "audit", "compensationFailures"];
|
|
74
63
|
export declare function assertKernelServicesReady(services: Partial<Kernel["services"]>): asserts services is Kernel["services"];
|
|
75
|
-
export declare function assertSortedBefore(topo: readonly string[], a: string, b: string): void;
|
|
76
64
|
//# sourceMappingURL=kernel-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-types.d.ts","sourceRoot":"","sources":["../../src/runtime/kernel-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kernel-types.d.ts","sourceRoot":"","sources":["../../src/runtime/kernel-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAGtF,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE;QACR,OAAO,EAAE,kBAAkB,CAAC;QAC5B,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,YAAY,CAAC;QACpB,IAAI,EAAE,WAAW,CAAC;QAClB,MAAM,EAAE,YAAY,CAAC;QACrB,QAAQ,EAAE,eAAe,CAAC;QAC1B,WAAW,EAAE,kBAAkB,CAAC;QAChC,SAAS,EAAE,eAAe,CAAC;QAC3B,QAAQ,EAAE,cAAc,CAAC;QACzB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,EAAE,gBAAgB,CAAC;QAC7B,GAAG,EAAE,UAAU,CAAC;QAChB,QAAQ,EAAE,eAAe,CAAC;QAC1B,MAAM,EAAE,aAAa,CAAC;QACtB,QAAQ,EAAE,eAAe,CAAC;QAC1B,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,YAAY,CAAC;QACpB,oBAAoB,EAAE,8BAA8B,CAAC;QACrD,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAC/B,YAAY,EAAE,mBAAmB,CAAC;KACnC,CAAC;IACF,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG;IACzD,QAAQ,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,4BAA4B,sOAoBW,CAAC;AAErD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GACpC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,CAMxC"}
|
|
@@ -26,13 +26,3 @@ export function assertKernelServicesReady(services) {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
export function assertSortedBefore(topo, a, b) {
|
|
30
|
-
const ia = topo.indexOf(a);
|
|
31
|
-
const ib = topo.indexOf(b);
|
|
32
|
-
if (ia < 0 || ib < 0) {
|
|
33
|
-
throw new Error(`kernelModuleInstantiationOrder missing key: ${a} or ${b}`);
|
|
34
|
-
}
|
|
35
|
-
if (ia >= ib) {
|
|
36
|
-
throw new Error(`Invalid kernel topo order: expected "${a}" before "${b}" (indices ${ia}, ${ib})`);
|
|
37
|
-
}
|
|
38
|
-
}
|
package/dist/runtime/kernel.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { CommerceConfig } from "../config/types.js";
|
|
2
|
-
import { type Kernel
|
|
3
|
-
export type { Kernel
|
|
2
|
+
import { type Kernel } from "./kernel-types.js";
|
|
3
|
+
export type { Kernel };
|
|
4
4
|
export type { ConfigRouteKernel, ConfigRouteDatabase } from "./kernel-types.js";
|
|
5
|
-
export { KERNEL_ALL_MODULES, kernelModuleInstantiationOrder, } from "./kernel-modules.js";
|
|
6
5
|
export declare function createKernel(config: CommerceConfig): Kernel;
|
|
7
6
|
//# sourceMappingURL=kernel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/runtime/kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/runtime/kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAazD,OAAO,EAEL,KAAK,MAAM,EACZ,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,MAAM,EAAE,CAAC;AACvB,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwG3D"}
|
package/dist/runtime/kernel.js
CHANGED
|
@@ -1,27 +1,19 @@
|
|
|
1
1
|
import { HookRegistry, isHookMarkedInTransaction } from "../kernel/hooks/registry.js";
|
|
2
2
|
import { createDatabaseConnection } from "../kernel/database/adapter.js";
|
|
3
|
-
import {
|
|
4
|
-
import { WebhookDeliveryWorker } from "../modules/webhooks/worker.js";
|
|
5
|
-
import { WebhooksRepository } from "../modules/webhooks/repository/index.js";
|
|
6
|
-
import { createLogger } from "../utils/logger.js";
|
|
3
|
+
import { createConsoleLogger } from "../utils/logger.js";
|
|
7
4
|
import { withTiming } from "../kernel/service-timing.js";
|
|
8
5
|
import { setBootDefaultOrgId } from "../auth/org.js";
|
|
9
|
-
import { setBootStrictOrgResolution } from "../auth/strict-org-resolution.js";
|
|
10
6
|
import { DrizzleJobsAdapter } from "../kernel/jobs/drizzle-adapter.js";
|
|
11
7
|
import { CompensationFailuresRepository } from "../kernel/compensation/repository.js";
|
|
12
|
-
import {
|
|
8
|
+
import { KERNEL_SERVICE_FACTORIES } from "./kernel-modules.js";
|
|
13
9
|
import { registerConfiguredKernelHooks } from "./kernel-register-hooks.js";
|
|
14
|
-
import { assertKernelServicesReady,
|
|
15
|
-
export { KERNEL_ALL_MODULES, kernelModuleInstantiationOrder, } from "./kernel-modules.js";
|
|
10
|
+
import { assertKernelServicesReady, } from "./kernel-types.js";
|
|
16
11
|
export function createKernel(config) {
|
|
17
12
|
const hooks = new HookRegistry();
|
|
18
|
-
const logger =
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
// had services fall back to DEFAULT_ORG_ID with a deprecation warning even
|
|
23
|
-
// when config.auth.defaultOrganizationId was set.
|
|
24
|
-
setBootStrictOrgResolution(config.auth?.strictOrgResolution === true);
|
|
13
|
+
const logger = createConsoleLogger("kernel");
|
|
14
|
+
// Register the configured default organization for resolveOrgId(). Done here
|
|
15
|
+
// rather than only in createCommerce so tests calling createKernel directly
|
|
16
|
+
// see it too.
|
|
25
17
|
if (config.auth?.defaultOrganizationId) {
|
|
26
18
|
setBootDefaultOrgId(config.auth.defaultOrganizationId);
|
|
27
19
|
}
|
|
@@ -45,50 +37,17 @@ export function createKernel(config) {
|
|
|
45
37
|
const db = database.db;
|
|
46
38
|
const jobsTaskMap = new Map((config.jobs?.tasks ?? []).map((t) => [t.slug, t]));
|
|
47
39
|
const jobsEngine = config.jobs?.adapter ?? new DrizzleJobsAdapter(db);
|
|
48
|
-
const jobLogger = {
|
|
49
|
-
info: (message, data) => logger.info(message, data),
|
|
50
|
-
warn: (message, data) => logger.warn(message, data),
|
|
51
|
-
error: (message, data) => logger.error(message, data),
|
|
52
|
-
};
|
|
53
40
|
jobsEngine.register({
|
|
54
41
|
tasks: jobsTaskMap,
|
|
55
|
-
context: { logger
|
|
42
|
+
context: { logger, db, services: serviceContainer },
|
|
56
43
|
...(config.jobs?.processingOrder !== undefined
|
|
57
44
|
? { processingOrder: config.jobs.processingOrder }
|
|
58
45
|
: {}),
|
|
59
46
|
});
|
|
60
47
|
serviceContainer.jobs = jobsEngine;
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
const moduleKeys = Object.keys(KERNEL_ALL_MODULES);
|
|
64
|
-
if (order.length !== moduleKeys.length) {
|
|
65
|
-
throw new Error(`topoSortModules length mismatch: got ${order.length}, expected ${moduleKeys.length}`);
|
|
48
|
+
for (const [id, create] of KERNEL_SERVICE_FACTORIES) {
|
|
49
|
+
serviceContainer[id] = create({ database, db, hooks, config, services: serviceContainer });
|
|
66
50
|
}
|
|
67
|
-
assertSortedBefore(order, "catalog", "inventory");
|
|
68
|
-
assertSortedBefore(order, "catalog", "pricing");
|
|
69
|
-
const moduleDeps = {
|
|
70
|
-
db: database,
|
|
71
|
-
hooks,
|
|
72
|
-
config,
|
|
73
|
-
logger,
|
|
74
|
-
};
|
|
75
|
-
for (const id of order) {
|
|
76
|
-
const mod = KERNEL_ALL_MODULES[id];
|
|
77
|
-
const svc = mod.service({
|
|
78
|
-
...moduleDeps,
|
|
79
|
-
services: services,
|
|
80
|
-
});
|
|
81
|
-
services[id] = svc;
|
|
82
|
-
}
|
|
83
|
-
const baseWebhooks = services.webhooks;
|
|
84
|
-
const webhookWorker = new WebhookDeliveryWorker({
|
|
85
|
-
repository: new WebhooksRepository(db),
|
|
86
|
-
});
|
|
87
|
-
services.webhooks = Object.assign(baseWebhooks, {
|
|
88
|
-
async enqueueDelivery(payload) {
|
|
89
|
-
await webhookWorker.deliver(payload);
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
51
|
services.compensationFailures = new CompensationFailuresRepository(db);
|
|
93
52
|
assertKernelServicesReady(services);
|
|
94
53
|
if (process.env.NODE_ENV !== "test") {
|
package/dist/runtime/server.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { OpenAPIHono } from "@hono/zod-openapi";
|
|
|
2
2
|
import type { Actor } from "../auth/types.js";
|
|
3
3
|
import type { AuthInstance } from "../auth/setup.js";
|
|
4
4
|
import type { CommerceConfig } from "../config/types.js";
|
|
5
|
-
import {
|
|
5
|
+
import type { Logger } from "./logger.js";
|
|
6
6
|
import { type CommerceInstance } from "./commerce.js";
|
|
7
7
|
type ServerEnv = {
|
|
8
8
|
Variables: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAStE,KAAK,SAAS,GAAG;IACf,SAAS,EAAE;QACT,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAcvC;AAeD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc;;;;;sBAwXxB,MAAM,UAAU,MAAM;GA8GtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pglite-adapter.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-pglite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"create-pglite-adapter.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-pglite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAOrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,4DAA4D;IAC5D,KAAK,IAAI,IAAI,CAAC;IACd,mEAAmE;IACnE,IAAI,IAAI,MAAM,EAAE,CAAC;CAClB;AAGD;;;;;;;;;;GAUG;AACH,6FAA6F;AAC7F,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAAE,aAAa,IAAI,OAAO,CAAA;CAAE,CAAC;AAE/E,wBAAsB,uBAAuB,IAAI,OAAO,CAAC;IACvD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,EAAE,EAAE,eAAe,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC,CAqFD"}
|
|
@@ -14,28 +14,11 @@
|
|
|
14
14
|
import { PGlite } from "@electric-sql/pglite";
|
|
15
15
|
import { drizzle } from "drizzle-orm/pglite";
|
|
16
16
|
import { sql } from "drizzle-orm";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import { createPGliteTransaction } from "../kernel/database/pglite-transaction.js";
|
|
18
|
+
import { pushSchema } from "../kernel/database/migrate.js";
|
|
19
19
|
import { ensureDefaultOrg } from "../auth/org.js";
|
|
20
20
|
// Single barrel import --- includes all core modules + auth tables
|
|
21
21
|
import * as fullSchema from "../kernel/database/schema.js";
|
|
22
|
-
// drizzle-kit/api uses CJS internally; createRequire provides ESM compat.
|
|
23
|
-
const require = createRequire(import.meta.url);
|
|
24
|
-
/**
|
|
25
|
-
* Pushes the core Drizzle schema to the database using drizzle-kit/api.
|
|
26
|
-
*
|
|
27
|
-
* drizzle-kit introspects the live database via information_schema, diffs
|
|
28
|
-
* against the pgTable definitions, and generates the minimal DDL needed.
|
|
29
|
-
* Typed as DrizzleDatabase (our concrete schema type) to avoid the
|
|
30
|
-
* PGlite → PgDatabase<HKT> invariance cast — drizzle-kit accepts any
|
|
31
|
-
* Drizzle instance at runtime regardless of the schema generic.
|
|
32
|
-
*/
|
|
33
|
-
async function pushCoreSchema(db) {
|
|
34
|
-
const coreSchema = getSchema();
|
|
35
|
-
const drizzleKit = require("drizzle-kit/api");
|
|
36
|
-
const { apply } = await drizzleKit.pushSchema(coreSchema, db);
|
|
37
|
-
await apply();
|
|
38
|
-
}
|
|
39
22
|
export async function createPGliteTestAdapter() {
|
|
40
23
|
// Create in-memory PGlite instance
|
|
41
24
|
const pg = new PGlite();
|
|
@@ -69,50 +52,10 @@ export async function createPGliteTestAdapter() {
|
|
|
69
52
|
// PgliteDatabase<Schema> and DrizzleDatabase share the same Schema type;
|
|
70
53
|
// the HKT parameter differs (PgliteQueryResultHKT vs PgQueryResultHKT)
|
|
71
54
|
// but drizzle-kit's pushSchema doesn't use it at runtime.
|
|
72
|
-
await
|
|
55
|
+
await pushSchema(db);
|
|
73
56
|
// Ensure the default organization exists for all tests
|
|
74
57
|
await ensureDefaultOrg(db);
|
|
75
|
-
|
|
76
|
-
* PGlite-compatible transaction wrapper.
|
|
77
|
-
*
|
|
78
|
-
* Drizzle's transaction() method can hang with PGlite due to how the adapter
|
|
79
|
-
* manages transaction state, so this drives BEGIN/COMMIT manually.
|
|
80
|
-
*
|
|
81
|
-
* PGlite is a single connection, so two transaction bodies awaiting
|
|
82
|
-
* concurrently would otherwise interleave their statements between one
|
|
83
|
-
* BEGIN and one COMMIT — the second BEGIN is a no-op Postgres only warns
|
|
84
|
-
* about. Merged that way, two callers share a snapshot and hold each other's
|
|
85
|
-
* row locks, so an isolation bug reads as if the guard failed. Bodies are
|
|
86
|
-
* queued instead, which is what a connection pool would do to two
|
|
87
|
-
* transactions competing for the same rows.
|
|
88
|
-
*
|
|
89
|
-
* A nested call joins the transaction already open rather than deadlocking
|
|
90
|
-
* on the queue; without savepoints that is the only sound reading.
|
|
91
|
-
*/
|
|
92
|
-
let transactionQueue = Promise.resolve();
|
|
93
|
-
let inTransaction = false;
|
|
94
|
-
async function transaction(fn) {
|
|
95
|
-
if (inTransaction)
|
|
96
|
-
return fn(db);
|
|
97
|
-
const run = transactionQueue.then(async () => {
|
|
98
|
-
inTransaction = true;
|
|
99
|
-
await pg.exec("BEGIN");
|
|
100
|
-
try {
|
|
101
|
-
const result = await fn(db);
|
|
102
|
-
await pg.exec("COMMIT");
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
await pg.exec("ROLLBACK");
|
|
107
|
-
throw error;
|
|
108
|
-
}
|
|
109
|
-
finally {
|
|
110
|
-
inTransaction = false;
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
transactionQueue = run.catch(() => undefined);
|
|
114
|
-
return run;
|
|
115
|
-
}
|
|
58
|
+
const { transaction, inTransaction } = createPGliteTransaction(pg, db);
|
|
116
59
|
const adapter = {
|
|
117
60
|
provider: "postgresql",
|
|
118
61
|
db,
|
|
@@ -131,7 +74,7 @@ export async function createPGliteTestAdapter() {
|
|
|
131
74
|
* Test-utils only. Production adapters do not carry it, and nothing outside a test may branch
|
|
132
75
|
* on it — a behaviour that depends on this flag would be a behaviour no production adapter has.
|
|
133
76
|
*/
|
|
134
|
-
inTransaction
|
|
77
|
+
inTransaction,
|
|
135
78
|
};
|
|
136
79
|
/**
|
|
137
80
|
* Cleanup function to reset data between tests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-plugin-test-app.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-plugin-test-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-plugin-test-app.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-plugin-test-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKnD,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKjE;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE;QACT,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,wFAAwF;IACxF,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7B,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,EAAE,EAAE,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,wFAAwF;IACxF,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,eAAe,GAAE,OAAO,CAAC,cAAc,CAAM,GAC5C,OAAO,CAAC,aAAa,CAAC,CA2DxB"}
|
|
@@ -17,17 +17,14 @@
|
|
|
17
17
|
* expect(res.status).toBe(201);
|
|
18
18
|
*/
|
|
19
19
|
import { OpenAPIHono } from "@hono/zod-openapi";
|
|
20
|
-
import { createRequire } from "node:module";
|
|
21
20
|
import { createTestConfig } from "./create-test-config.js";
|
|
22
21
|
import { createKernel } from "../runtime/kernel.js";
|
|
23
|
-
import {
|
|
24
|
-
import { unwrapDb } from "../kernel/database/adapter.js";
|
|
22
|
+
import { pushSchema } from "../kernel/database/migrate.js";
|
|
25
23
|
import { ensureDefaultOrg } from "../auth/org.js";
|
|
26
|
-
import {
|
|
24
|
+
import { mapErrorToResponse } from "../kernel/error-mapper.js";
|
|
25
|
+
import { buildConfigRoutesKernel } from "../kernel/plugin/manifest.js";
|
|
27
26
|
import { createAuth } from "../auth/setup.js";
|
|
28
27
|
import { authMiddleware } from "../auth/middleware.js";
|
|
29
|
-
// drizzle-kit/api uses CJS internally; createRequire provides ESM compat.
|
|
30
|
-
const require = createRequire(import.meta.url);
|
|
31
28
|
/**
|
|
32
29
|
* Creates a fully-wired test application for plugin E2E testing.
|
|
33
30
|
*
|
|
@@ -43,16 +40,9 @@ export async function createPluginTestApp(plugin, configOverrides = {}) {
|
|
|
43
40
|
});
|
|
44
41
|
// 2. Boot kernel (creates core services, hook registry)
|
|
45
42
|
const kernel = createKernel(config);
|
|
46
|
-
// 3.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// Diffs current DB state against pgTable definitions, generates DDL, applies it.
|
|
50
|
-
// On fresh PGlite: creates all tables. On existing DB: creates only missing tables.
|
|
51
|
-
const drizzleKit = require("drizzle-kit/api");
|
|
52
|
-
const { apply } = await drizzleKit.pushSchema(mergedSchema,
|
|
53
|
-
// drizzle-kit needs the native driver result shape; unwrap the normalized db.
|
|
54
|
-
unwrapDb(kernel.database.db));
|
|
55
|
-
await apply();
|
|
43
|
+
// 3. Create core + plugin tables (drizzle-kit diffs the live database and
|
|
44
|
+
// applies only the missing DDL).
|
|
45
|
+
await pushSchema(kernel.database.db, config);
|
|
56
46
|
// Ensure the default organization exists for plugin tests
|
|
57
47
|
await ensureDefaultOrg(kernel.database.db);
|
|
58
48
|
// 5. Create OpenAPIHono --- matching production server.ts
|
|
@@ -77,24 +67,15 @@ export async function createPluginTestApp(plugin, configOverrides = {}) {
|
|
|
77
67
|
return next();
|
|
78
68
|
return authMiddleware(auth, config)(c, next);
|
|
79
69
|
});
|
|
80
|
-
// 7. Register plugin routes (deferred via config.routes)
|
|
81
|
-
//
|
|
70
|
+
// 7. Register plugin routes (deferred via config.routes) exactly as
|
|
71
|
+
// server.ts does: with the tenant-scoped route kernel and the auth instance.
|
|
82
72
|
const routes = config.routes;
|
|
83
|
-
routes?.(app, kernel, auth);
|
|
84
|
-
// 8.
|
|
85
|
-
//
|
|
86
|
-
// to their proper HTTP status codes (403, 404, 409, 422, 503).
|
|
87
|
-
// Without this, route handlers that throw assertPermission() etc.
|
|
88
|
-
// surface as 500 in tests, masking real status assertions.
|
|
73
|
+
routes?.(app, buildConfigRoutesKernel(kernel), auth);
|
|
74
|
+
// 8. The production error handler: CommerceError subclasses map to their
|
|
75
|
+
// status (403, 404, 409, 422, 503) instead of surfacing as 500.
|
|
89
76
|
app.onError((err, c) => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (status !== 500) {
|
|
93
|
-
const errorCode = err.code;
|
|
94
|
-
return c.json({ error: { code: errorCode, message: err.message } }, status);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return c.json({ error: { code: "INTERNAL_ERROR", message: err.message } }, 500);
|
|
77
|
+
const { body, status } = mapErrorToResponse(err, false);
|
|
78
|
+
return c.json(body, status);
|
|
98
79
|
});
|
|
99
80
|
return {
|
|
100
81
|
app,
|