@unifiedcommerce/core 0.4.2 → 0.4.4
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/interfaces/rest/index.d.ts.map +1 -1
- package/dist/interfaces/rest/index.js +4 -17
- package/dist/runtime/server.d.ts.map +1 -1
- package/dist/runtime/server.js +33 -0
- package/package.json +1 -1
- package/src/interfaces/rest/index.ts +4 -18
- package/src/runtime/server.ts +33 -0
- package/dist/adapters/console-email.d.ts +0 -23
- package/dist/adapters/console-email.d.ts.map +0 -1
- package/dist/adapters/console-email.js +0 -38
- 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/auth/auth-schema.d.ts +0 -1475
- package/dist/auth/auth-schema.d.ts.map +0 -1
- package/dist/auth/auth-schema.js +0 -124
- package/dist/auth/middleware.d.ts +0 -5
- package/dist/auth/middleware.d.ts.map +0 -1
- package/dist/auth/middleware.js +0 -141
- package/dist/auth/org.d.ts +0 -22
- package/dist/auth/org.d.ts.map +0 -1
- package/dist/auth/org.js +0 -36
- package/dist/auth/permissions.d.ts +0 -4
- package/dist/auth/permissions.d.ts.map +0 -1
- package/dist/auth/permissions.js +0 -24
- package/dist/auth/setup.d.ts +0 -29
- package/dist/auth/setup.d.ts.map +0 -1
- package/dist/auth/setup.js +0 -117
- package/dist/auth/system-actor.d.ts +0 -7
- package/dist/auth/system-actor.d.ts.map +0 -1
- package/dist/auth/system-actor.js +0 -17
- package/dist/auth/types.d.ts +0 -11
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -1
- package/dist/config/defaults.d.ts +0 -3
- package/dist/config/defaults.d.ts.map +0 -1
- package/dist/config/defaults.js +0 -80
- package/dist/config/define-config.d.ts +0 -9
- package/dist/config/define-config.d.ts.map +0 -1
- package/dist/config/define-config.js +0 -44
- package/dist/config/types.d.ts +0 -327
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -1
- package/dist/generated/plugin-manifest.d.ts +0 -48
- package/dist/generated/plugin-manifest.d.ts.map +0 -1
- package/dist/generated/plugin-manifest.js +0 -20
- package/dist/hooks/checkout-completion.d.ts +0 -58
- package/dist/hooks/checkout-completion.d.ts.map +0 -1
- package/dist/hooks/checkout-completion.js +0 -137
- package/dist/hooks/checkout.d.ts +0 -99
- package/dist/hooks/checkout.d.ts.map +0 -1
- package/dist/hooks/checkout.js +0 -317
- package/dist/hooks/order-emails.d.ts +0 -16
- package/dist/hooks/order-emails.d.ts.map +0 -1
- package/dist/hooks/order-emails.js +0 -44
- package/dist/index.d.ts +0 -77
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -45
- package/dist/interfaces/mcp/agent-prompt.d.ts +0 -16
- package/dist/interfaces/mcp/agent-prompt.d.ts.map +0 -1
- package/dist/interfaces/mcp/agent-prompt.js +0 -172
- package/dist/interfaces/mcp/context-enrichment.d.ts +0 -39
- package/dist/interfaces/mcp/context-enrichment.d.ts.map +0 -1
- package/dist/interfaces/mcp/context-enrichment.js +0 -119
- package/dist/interfaces/mcp/server.d.ts +0 -5
- package/dist/interfaces/mcp/server.d.ts.map +0 -1
- package/dist/interfaces/mcp/server.js +0 -30
- package/dist/interfaces/mcp/tool-builder.d.ts +0 -120
- package/dist/interfaces/mcp/tool-builder.d.ts.map +0 -1
- package/dist/interfaces/mcp/tool-builder.js +0 -224
- package/dist/interfaces/mcp/tools/analytics.d.ts +0 -42
- package/dist/interfaces/mcp/tools/analytics.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/analytics.js +0 -70
- package/dist/interfaces/mcp/tools/cart.d.ts +0 -14
- package/dist/interfaces/mcp/tools/cart.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/cart.js +0 -47
- package/dist/interfaces/mcp/tools/catalog.d.ts +0 -53
- package/dist/interfaces/mcp/tools/catalog.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/catalog.js +0 -284
- package/dist/interfaces/mcp/tools/index.d.ts +0 -3
- package/dist/interfaces/mcp/tools/index.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/index.js +0 -20
- package/dist/interfaces/mcp/tools/inventory.d.ts +0 -27
- package/dist/interfaces/mcp/tools/inventory.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/inventory.js +0 -143
- package/dist/interfaces/mcp/tools/orders.d.ts +0 -18
- package/dist/interfaces/mcp/tools/orders.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/orders.js +0 -82
- package/dist/interfaces/mcp/tools/pricing.d.ts +0 -29
- package/dist/interfaces/mcp/tools/pricing.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/pricing.js +0 -90
- package/dist/interfaces/mcp/tools/promotions.d.ts +0 -44
- package/dist/interfaces/mcp/tools/promotions.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/promotions.js +0 -109
- package/dist/interfaces/mcp/tools/registry.d.ts +0 -32
- package/dist/interfaces/mcp/tools/registry.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/registry.js +0 -55
- package/dist/interfaces/mcp/tools/search.d.ts +0 -14
- package/dist/interfaces/mcp/tools/search.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/search.js +0 -39
- package/dist/interfaces/mcp/tools/webhooks.d.ts +0 -15
- package/dist/interfaces/mcp/tools/webhooks.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/webhooks.js +0 -48
- package/dist/interfaces/mcp/transport.d.ts +0 -20
- package/dist/interfaces/mcp/transport.d.ts.map +0 -1
- package/dist/interfaces/mcp/transport.js +0 -99
- package/dist/interfaces/rest/customer-portal.d.ts +0 -5
- package/dist/interfaces/rest/customer-portal.d.ts.map +0 -1
- package/dist/interfaces/rest/customer-portal.js +0 -206
- package/dist/interfaces/rest/router.d.ts +0 -164
- package/dist/interfaces/rest/router.d.ts.map +0 -1
- package/dist/interfaces/rest/router.js +0 -259
- package/dist/interfaces/rest/routes/admin-jobs.d.ts +0 -5
- package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/admin-jobs.js +0 -48
- package/dist/interfaces/rest/routes/audit.d.ts +0 -5
- package/dist/interfaces/rest/routes/audit.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/audit.js +0 -43
- package/dist/interfaces/rest/routes/carts.d.ts +0 -5
- package/dist/interfaces/rest/routes/carts.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/carts.js +0 -55
- package/dist/interfaces/rest/routes/catalog.d.ts +0 -5
- package/dist/interfaces/rest/routes/catalog.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/catalog.js +0 -256
- package/dist/interfaces/rest/routes/checkout.d.ts +0 -5
- package/dist/interfaces/rest/routes/checkout.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/checkout.js +0 -216
- package/dist/interfaces/rest/routes/customers.d.ts +0 -5
- package/dist/interfaces/rest/routes/customers.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/customers.js +0 -74
- package/dist/interfaces/rest/routes/entity-aliases.d.ts +0 -18
- package/dist/interfaces/rest/routes/entity-aliases.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/entity-aliases.js +0 -39
- package/dist/interfaces/rest/routes/inventory.d.ts +0 -5
- package/dist/interfaces/rest/routes/inventory.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/inventory.js +0 -72
- package/dist/interfaces/rest/routes/media.d.ts +0 -5
- package/dist/interfaces/rest/routes/media.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/media.js +0 -65
- package/dist/interfaces/rest/routes/orders.d.ts +0 -5
- package/dist/interfaces/rest/routes/orders.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/orders.js +0 -64
- package/dist/interfaces/rest/routes/payments.d.ts +0 -5
- package/dist/interfaces/rest/routes/payments.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/payments.js +0 -45
- package/dist/interfaces/rest/routes/pricing.d.ts +0 -5
- package/dist/interfaces/rest/routes/pricing.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/pricing.js +0 -48
- package/dist/interfaces/rest/routes/promotions.d.ts +0 -5
- package/dist/interfaces/rest/routes/promotions.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/promotions.js +0 -76
- package/dist/interfaces/rest/routes/search.d.ts +0 -5
- package/dist/interfaces/rest/routes/search.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/search.js +0 -60
- package/dist/interfaces/rest/routes/webhooks.d.ts +0 -5
- package/dist/interfaces/rest/routes/webhooks.d.ts.map +0 -1
- package/dist/interfaces/rest/routes/webhooks.js +0 -39
- package/dist/interfaces/rest/schemas/admin-jobs.d.ts +0 -327
- package/dist/interfaces/rest/schemas/admin-jobs.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/admin-jobs.js +0 -37
- package/dist/interfaces/rest/schemas/audit.d.ts +0 -59
- package/dist/interfaces/rest/schemas/audit.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/audit.js +0 -43
- package/dist/interfaces/rest/schemas/carts.d.ts +0 -1456
- package/dist/interfaces/rest/schemas/carts.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/carts.js +0 -109
- package/dist/interfaces/rest/schemas/catalog.d.ts +0 -5452
- package/dist/interfaces/rest/schemas/catalog.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/catalog.js +0 -397
- package/dist/interfaces/rest/schemas/checkout.d.ts +0 -160
- package/dist/interfaces/rest/schemas/checkout.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/checkout.js +0 -60
- package/dist/interfaces/rest/schemas/customer-portal.d.ts +0 -2203
- package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/customer-portal.js +0 -177
- package/dist/interfaces/rest/schemas/customers.d.ts +0 -422
- package/dist/interfaces/rest/schemas/customers.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/customers.js +0 -150
- package/dist/interfaces/rest/schemas/inventory.d.ts +0 -561
- package/dist/interfaces/rest/schemas/inventory.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/inventory.js +0 -148
- package/dist/interfaces/rest/schemas/media.d.ts +0 -303
- package/dist/interfaces/rest/schemas/media.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/media.js +0 -69
- package/dist/interfaces/rest/schemas/orders.d.ts +0 -1792
- package/dist/interfaces/rest/schemas/orders.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/orders.js +0 -93
- package/dist/interfaces/rest/schemas/pricing.d.ts +0 -256
- package/dist/interfaces/rest/schemas/pricing.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/pricing.js +0 -72
- package/dist/interfaces/rest/schemas/promotions.d.ts +0 -363
- package/dist/interfaces/rest/schemas/promotions.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/promotions.js +0 -98
- package/dist/interfaces/rest/schemas/responses.d.ts +0 -4086
- package/dist/interfaces/rest/schemas/responses.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/responses.js +0 -74
- package/dist/interfaces/rest/schemas/search.d.ts +0 -247
- package/dist/interfaces/rest/schemas/search.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/search.js +0 -55
- package/dist/interfaces/rest/schemas/shared.d.ts +0 -95
- package/dist/interfaces/rest/schemas/shared.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/shared.js +0 -51
- package/dist/interfaces/rest/schemas/webhooks.d.ts +0 -221
- package/dist/interfaces/rest/schemas/webhooks.d.ts.map +0 -1
- package/dist/interfaces/rest/schemas/webhooks.js +0 -62
- package/dist/interfaces/rest/utils.d.ts +0 -45
- package/dist/interfaces/rest/utils.d.ts.map +0 -1
- package/dist/interfaces/rest/utils.js +0 -71
- package/dist/interfaces/rest/webhook-router.d.ts +0 -41
- package/dist/interfaces/rest/webhook-router.d.ts.map +0 -1
- package/dist/interfaces/rest/webhook-router.js +0 -36
- package/dist/kernel/compensation/executor.d.ts +0 -21
- package/dist/kernel/compensation/executor.d.ts.map +0 -1
- package/dist/kernel/compensation/executor.js +0 -36
- package/dist/kernel/compensation/types.d.ts +0 -25
- package/dist/kernel/compensation/types.d.ts.map +0 -1
- package/dist/kernel/compensation/types.js +0 -1
- package/dist/kernel/database/adapter.d.ts +0 -18
- package/dist/kernel/database/adapter.d.ts.map +0 -1
- package/dist/kernel/database/adapter.js +0 -3
- package/dist/kernel/database/drizzle-db.d.ts +0 -49
- package/dist/kernel/database/drizzle-db.d.ts.map +0 -1
- package/dist/kernel/database/drizzle-db.js +0 -20
- package/dist/kernel/database/migrate.d.ts +0 -38
- package/dist/kernel/database/migrate.d.ts.map +0 -1
- package/dist/kernel/database/migrate.js +0 -61
- package/dist/kernel/database/plugin-types.d.ts +0 -32
- package/dist/kernel/database/plugin-types.d.ts.map +0 -1
- package/dist/kernel/database/plugin-types.js +0 -10
- package/dist/kernel/database/schema.d.ts +0 -24
- package/dist/kernel/database/schema.d.ts.map +0 -1
- package/dist/kernel/database/schema.js +0 -36
- package/dist/kernel/database/scoped-db.d.ts +0 -20
- package/dist/kernel/database/scoped-db.d.ts.map +0 -1
- package/dist/kernel/database/scoped-db.js +0 -62
- package/dist/kernel/database/tx-context.d.ts +0 -15
- package/dist/kernel/database/tx-context.d.ts.map +0 -1
- package/dist/kernel/database/tx-context.js +0 -19
- package/dist/kernel/error-mapper.d.ts +0 -3
- package/dist/kernel/error-mapper.d.ts.map +0 -1
- package/dist/kernel/error-mapper.js +0 -12
- package/dist/kernel/errors.d.ts +0 -38
- package/dist/kernel/errors.d.ts.map +0 -1
- package/dist/kernel/errors.js +0 -69
- 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/hooks/create-context.d.ts +0 -25
- package/dist/kernel/hooks/create-context.d.ts.map +0 -1
- package/dist/kernel/hooks/create-context.js +0 -22
- package/dist/kernel/hooks/executor.d.ts +0 -12
- package/dist/kernel/hooks/executor.d.ts.map +0 -1
- package/dist/kernel/hooks/executor.js +0 -50
- package/dist/kernel/hooks/registry.d.ts +0 -28
- package/dist/kernel/hooks/registry.d.ts.map +0 -1
- package/dist/kernel/hooks/registry.js +0 -58
- package/dist/kernel/hooks/types.d.ts +0 -37
- package/dist/kernel/hooks/types.d.ts.map +0 -1
- package/dist/kernel/hooks/types.js +0 -1
- 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/adapter.d.ts +0 -25
- package/dist/kernel/jobs/adapter.d.ts.map +0 -1
- package/dist/kernel/jobs/adapter.js +0 -9
- package/dist/kernel/jobs/drizzle-adapter.d.ts +0 -15
- package/dist/kernel/jobs/drizzle-adapter.d.ts.map +0 -1
- package/dist/kernel/jobs/drizzle-adapter.js +0 -42
- package/dist/kernel/jobs/runner.d.ts +0 -24
- package/dist/kernel/jobs/runner.d.ts.map +0 -1
- package/dist/kernel/jobs/runner.js +0 -114
- package/dist/kernel/jobs/schema.d.ts +0 -280
- package/dist/kernel/jobs/schema.d.ts.map +0 -1
- package/dist/kernel/jobs/schema.js +0 -37
- package/dist/kernel/jobs/types.d.ts +0 -30
- package/dist/kernel/jobs/types.d.ts.map +0 -1
- package/dist/kernel/jobs/types.js +0 -1
- package/dist/kernel/local-api.d.ts +0 -103
- package/dist/kernel/local-api.d.ts.map +0 -1
- package/dist/kernel/local-api.js +0 -89
- package/dist/kernel/plugin/manifest.d.ts +0 -90
- package/dist/kernel/plugin/manifest.d.ts.map +0 -1
- package/dist/kernel/plugin/manifest.js +0 -169
- 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/result.d.ts +0 -36
- package/dist/kernel/result.d.ts.map +0 -1
- package/dist/kernel/result.js +0 -16
- package/dist/kernel/schema/extra-columns.d.ts +0 -23
- package/dist/kernel/schema/extra-columns.d.ts.map +0 -1
- package/dist/kernel/schema/extra-columns.js +0 -10
- 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/kernel/service-timing.d.ts +0 -25
- package/dist/kernel/service-timing.d.ts.map +0 -1
- package/dist/kernel/service-timing.js +0 -62
- package/dist/kernel/state-machine/machine.d.ts +0 -24
- package/dist/kernel/state-machine/machine.d.ts.map +0 -1
- package/dist/kernel/state-machine/machine.js +0 -70
- package/dist/modules/analytics/drizzle-adapter.d.ts +0 -13
- package/dist/modules/analytics/drizzle-adapter.d.ts.map +0 -1
- package/dist/modules/analytics/drizzle-adapter.js +0 -358
- 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/models.d.ts +0 -14
- package/dist/modules/analytics/models.d.ts.map +0 -1
- package/dist/modules/analytics/models.js +0 -118
- 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/analytics/service.d.ts +0 -45
- package/dist/modules/analytics/service.d.ts.map +0 -1
- package/dist/modules/analytics/service.js +0 -196
- package/dist/modules/analytics/types.d.ts +0 -119
- package/dist/modules/analytics/types.d.ts.map +0 -1
- package/dist/modules/analytics/types.js +0 -25
- package/dist/modules/audit/hooks.d.ts +0 -7
- package/dist/modules/audit/hooks.d.ts.map +0 -1
- package/dist/modules/audit/hooks.js +0 -67
- package/dist/modules/audit/schema.d.ts +0 -178
- package/dist/modules/audit/schema.d.ts.map +0 -1
- package/dist/modules/audit/schema.js +0 -21
- package/dist/modules/audit/service.d.ts +0 -38
- package/dist/modules/audit/service.d.ts.map +0 -1
- package/dist/modules/audit/service.js +0 -109
- 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/matcher.d.ts +0 -20
- package/dist/modules/cart/matcher.d.ts.map +0 -1
- package/dist/modules/cart/matcher.js +0 -2
- package/dist/modules/cart/repository/index.d.ts +0 -45
- package/dist/modules/cart/repository/index.d.ts.map +0 -1
- package/dist/modules/cart/repository/index.js +0 -158
- package/dist/modules/cart/schema.d.ts +0 -359
- package/dist/modules/cart/schema.d.ts.map +0 -1
- package/dist/modules/cart/schema.js +0 -40
- package/dist/modules/cart/schemas.d.ts +0 -29
- package/dist/modules/cart/schemas.d.ts.map +0 -1
- package/dist/modules/cart/schemas.js +0 -14
- package/dist/modules/cart/service.d.ts +0 -63
- package/dist/modules/cart/service.d.ts.map +0 -1
- package/dist/modules/cart/service.js +0 -339
- package/dist/modules/catalog/repository/index.d.ts +0 -106
- package/dist/modules/catalog/repository/index.d.ts.map +0 -1
- package/dist/modules/catalog/repository/index.js +0 -455
- package/dist/modules/catalog/schema.d.ts +0 -1193
- package/dist/modules/catalog/schema.d.ts.map +0 -1
- package/dist/modules/catalog/schema.js +0 -149
- package/dist/modules/catalog/schemas.d.ts +0 -81
- package/dist/modules/catalog/schemas.d.ts.map +0 -1
- package/dist/modules/catalog/schemas.js +0 -62
- package/dist/modules/catalog/service.d.ts +0 -160
- package/dist/modules/catalog/service.d.ts.map +0 -1
- package/dist/modules/catalog/service.js +0 -759
- package/dist/modules/customers/repository/index.d.ts +0 -47
- package/dist/modules/customers/repository/index.d.ts.map +0 -1
- package/dist/modules/customers/repository/index.js +0 -206
- package/dist/modules/customers/schema.d.ts +0 -560
- package/dist/modules/customers/schema.d.ts.map +0 -1
- package/dist/modules/customers/schema.js +0 -60
- package/dist/modules/customers/service.d.ts +0 -27
- package/dist/modules/customers/service.d.ts.map +0 -1
- package/dist/modules/customers/service.js +0 -106
- package/dist/modules/fulfillment/repository/index.d.ts +0 -63
- package/dist/modules/fulfillment/repository/index.d.ts.map +0 -1
- package/dist/modules/fulfillment/repository/index.js +0 -268
- package/dist/modules/fulfillment/schema.d.ts +0 -655
- package/dist/modules/fulfillment/schema.d.ts.map +0 -1
- package/dist/modules/fulfillment/schema.js +0 -83
- package/dist/modules/fulfillment/service.d.ts +0 -58
- package/dist/modules/fulfillment/service.d.ts.map +0 -1
- package/dist/modules/fulfillment/service.js +0 -338
- package/dist/modules/fulfillment/types.d.ts +0 -44
- package/dist/modules/fulfillment/types.d.ts.map +0 -1
- package/dist/modules/fulfillment/types.js +0 -1
- package/dist/modules/inventory/repository/index.d.ts +0 -81
- package/dist/modules/inventory/repository/index.d.ts.map +0 -1
- package/dist/modules/inventory/repository/index.js +0 -310
- package/dist/modules/inventory/schema.d.ts +0 -570
- package/dist/modules/inventory/schema.d.ts.map +0 -1
- package/dist/modules/inventory/schema.js +0 -69
- package/dist/modules/inventory/schemas.d.ts +0 -31
- package/dist/modules/inventory/schemas.d.ts.map +0 -1
- package/dist/modules/inventory/schemas.js +0 -28
- package/dist/modules/inventory/service.d.ts +0 -69
- package/dist/modules/inventory/service.d.ts.map +0 -1
- package/dist/modules/inventory/service.js +0 -283
- package/dist/modules/media/adapter.d.ts +0 -16
- package/dist/modules/media/adapter.d.ts.map +0 -1
- package/dist/modules/media/adapter.js +0 -1
- package/dist/modules/media/repository/index.d.ts +0 -35
- package/dist/modules/media/repository/index.d.ts.map +0 -1
- package/dist/modules/media/repository/index.js +0 -176
- package/dist/modules/media/schema.d.ts +0 -289
- package/dist/modules/media/schema.d.ts.map +0 -1
- package/dist/modules/media/schema.js +0 -35
- package/dist/modules/media/service.d.ts +0 -42
- package/dist/modules/media/service.d.ts.map +0 -1
- package/dist/modules/media/service.js +0 -89
- package/dist/modules/orders/repository/index.d.ts +0 -48
- package/dist/modules/orders/repository/index.d.ts.map +0 -1
- package/dist/modules/orders/repository/index.js +0 -199
- package/dist/modules/orders/schema.d.ts +0 -672
- package/dist/modules/orders/schema.d.ts.map +0 -1
- package/dist/modules/orders/schema.js +0 -63
- package/dist/modules/orders/service.d.ts +0 -85
- package/dist/modules/orders/service.d.ts.map +0 -1
- package/dist/modules/orders/service.js +0 -313
- package/dist/modules/orders/stale-order-cleanup.d.ts +0 -27
- package/dist/modules/orders/stale-order-cleanup.d.ts.map +0 -1
- package/dist/modules/orders/stale-order-cleanup.js +0 -55
- package/dist/modules/organization/service.d.ts +0 -53
- package/dist/modules/organization/service.d.ts.map +0 -1
- package/dist/modules/organization/service.js +0 -151
- package/dist/modules/payments/adapter.d.ts +0 -42
- package/dist/modules/payments/adapter.d.ts.map +0 -1
- package/dist/modules/payments/adapter.js +0 -1
- 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/payments/service.d.ts +0 -23
- package/dist/modules/payments/service.d.ts.map +0 -1
- package/dist/modules/payments/service.js +0 -72
- package/dist/modules/pricing/repository/index.d.ts +0 -34
- package/dist/modules/pricing/repository/index.d.ts.map +0 -1
- package/dist/modules/pricing/repository/index.js +0 -176
- package/dist/modules/pricing/schema.d.ts +0 -565
- package/dist/modules/pricing/schema.d.ts.map +0 -1
- package/dist/modules/pricing/schema.js +0 -57
- package/dist/modules/pricing/schemas.d.ts +0 -37
- package/dist/modules/pricing/schemas.d.ts.map +0 -1
- package/dist/modules/pricing/schemas.js +0 -30
- package/dist/modules/pricing/service.d.ts +0 -62
- package/dist/modules/pricing/service.d.ts.map +0 -1
- package/dist/modules/pricing/service.js +0 -308
- package/dist/modules/promotions/repository/index.d.ts +0 -41
- package/dist/modules/promotions/repository/index.d.ts.map +0 -1
- package/dist/modules/promotions/repository/index.js +0 -204
- package/dist/modules/promotions/schema.d.ts +0 -427
- package/dist/modules/promotions/schema.d.ts.map +0 -1
- package/dist/modules/promotions/schema.js +0 -52
- package/dist/modules/promotions/schemas.d.ts +0 -33
- package/dist/modules/promotions/schemas.d.ts.map +0 -1
- package/dist/modules/promotions/schemas.js +0 -32
- package/dist/modules/promotions/service.d.ts +0 -80
- package/dist/modules/promotions/service.d.ts.map +0 -1
- package/dist/modules/promotions/service.js +0 -347
- package/dist/modules/search/adapter.d.ts +0 -51
- package/dist/modules/search/adapter.d.ts.map +0 -1
- package/dist/modules/search/adapter.js +0 -1
- package/dist/modules/search/hooks.d.ts +0 -8
- package/dist/modules/search/hooks.d.ts.map +0 -1
- package/dist/modules/search/hooks.js +0 -6
- 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/search/service.d.ts +0 -24
- package/dist/modules/search/service.d.ts.map +0 -1
- package/dist/modules/search/service.js +0 -217
- package/dist/modules/shipping/calculator.d.ts +0 -42
- package/dist/modules/shipping/calculator.d.ts.map +0 -1
- package/dist/modules/shipping/calculator.js +0 -91
- package/dist/modules/shipping/repository/index.d.ts +0 -5
- package/dist/modules/shipping/repository/index.d.ts.map +0 -1
- package/dist/modules/shipping/repository/index.js +0 -1
- package/dist/modules/shipping/service.d.ts +0 -28
- package/dist/modules/shipping/service.d.ts.map +0 -1
- package/dist/modules/shipping/service.js +0 -20
- package/dist/modules/tax/adapter.d.ts +0 -58
- package/dist/modules/tax/adapter.d.ts.map +0 -1
- package/dist/modules/tax/adapter.js +0 -1
- package/dist/modules/tax/repository/index.d.ts +0 -5
- package/dist/modules/tax/repository/index.d.ts.map +0 -1
- package/dist/modules/tax/repository/index.js +0 -1
- package/dist/modules/tax/service.d.ts +0 -19
- package/dist/modules/tax/service.d.ts.map +0 -1
- package/dist/modules/tax/service.js +0 -34
- package/dist/modules/webhooks/hook.d.ts +0 -13
- package/dist/modules/webhooks/hook.d.ts.map +0 -1
- package/dist/modules/webhooks/hook.js +0 -29
- package/dist/modules/webhooks/repository/index.d.ts +0 -40
- package/dist/modules/webhooks/repository/index.d.ts.map +0 -1
- package/dist/modules/webhooks/repository/index.js +0 -175
- package/dist/modules/webhooks/schema.d.ts +0 -404
- package/dist/modules/webhooks/schema.d.ts.map +0 -1
- package/dist/modules/webhooks/schema.js +0 -40
- package/dist/modules/webhooks/service.d.ts +0 -23
- package/dist/modules/webhooks/service.d.ts.map +0 -1
- package/dist/modules/webhooks/service.js +0 -92
- package/dist/modules/webhooks/signing.d.ts +0 -2
- package/dist/modules/webhooks/signing.d.ts.map +0 -1
- package/dist/modules/webhooks/signing.js +0 -5
- package/dist/modules/webhooks/ssrf-guard.d.ts +0 -19
- package/dist/modules/webhooks/ssrf-guard.d.ts.map +0 -1
- package/dist/modules/webhooks/ssrf-guard.js +0 -79
- package/dist/modules/webhooks/tasks.d.ts +0 -16
- package/dist/modules/webhooks/tasks.d.ts.map +0 -1
- package/dist/modules/webhooks/tasks.js +0 -35
- package/dist/modules/webhooks/worker.d.ts +0 -21
- package/dist/modules/webhooks/worker.d.ts.map +0 -1
- package/dist/modules/webhooks/worker.js +0 -113
- package/dist/runtime/commerce.d.ts +0 -110
- package/dist/runtime/commerce.d.ts.map +0 -1
- package/dist/runtime/commerce.js +0 -37
- package/dist/runtime/kernel.d.ts +0 -71
- package/dist/runtime/kernel.d.ts.map +0 -1
- package/dist/runtime/kernel.js +0 -306
- package/dist/runtime/logger.d.ts +0 -11
- package/dist/runtime/logger.d.ts.map +0 -1
- package/dist/runtime/logger.js +0 -32
- package/dist/runtime/shutdown.d.ts +0 -15
- package/dist/runtime/shutdown.d.ts.map +0 -1
- package/dist/runtime/shutdown.js +0 -34
- package/dist/test-utils/create-pglite-adapter.d.ts +0 -32
- package/dist/test-utils/create-pglite-adapter.d.ts.map +0 -1
- package/dist/test-utils/create-pglite-adapter.js +0 -107
- package/dist/test-utils/create-plugin-test-app.d.ts +0 -50
- package/dist/test-utils/create-plugin-test-app.d.ts.map +0 -1
- package/dist/test-utils/create-plugin-test-app.js +0 -74
- 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-config.d.ts +0 -18
- package/dist/test-utils/create-test-config.d.ts.map +0 -1
- package/dist/test-utils/create-test-config.js +0 -172
- package/dist/test-utils/create-test-kernel.d.ts +0 -3
- package/dist/test-utils/create-test-kernel.d.ts.map +0 -1
- package/dist/test-utils/create-test-kernel.js +0 -5
- package/dist/test-utils/create-test-plugin-context.d.ts +0 -42
- package/dist/test-utils/create-test-plugin-context.d.ts.map +0 -1
- package/dist/test-utils/create-test-plugin-context.js +0 -46
- package/dist/test-utils/rest-api-test-utils.d.ts +0 -64
- package/dist/test-utils/rest-api-test-utils.d.ts.map +0 -1
- package/dist/test-utils/rest-api-test-utils.js +0 -207
- package/dist/test-utils/test-actors.d.ts +0 -15
- package/dist/test-utils/test-actors.d.ts.map +0 -1
- package/dist/test-utils/test-actors.js +0 -57
- package/dist/test-utils/typed-hooks.d.ts +0 -43
- package/dist/test-utils/typed-hooks.d.ts.map +0 -1
- package/dist/test-utils/typed-hooks.js +0 -35
- package/dist/testing.d.ts +0 -14
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -13
- package/dist/tsconfig.tsbuildinfo +0 -1
- 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/dist/utils/id.d.ts +0 -2
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js +0 -3
- package/dist/utils/logger.d.ts +0 -3
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -16
- package/dist/utils/pagination.d.ts +0 -11
- package/dist/utils/pagination.d.ts.map +0 -1
- package/dist/utils/pagination.js +0 -15
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One-call plugin E2E test setup.
|
|
3
|
-
*
|
|
4
|
-
* Boots a PGlite kernel (or real PG if overridden), programmatically pushes
|
|
5
|
-
* the merged schema (core + plugin tables) via drizzle-kit/api, mounts the
|
|
6
|
-
* test actor middleware on an OpenAPIHono instance, and registers all plugin
|
|
7
|
-
* routes --- matching the production server.ts boot sequence.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* import { createPluginTestApp, jsonHeaders, testAdminActor } from "@unifiedcommerce/core";
|
|
11
|
-
* const { app } = await createPluginTestApp(myPlugin());
|
|
12
|
-
* const res = await app.request("/api/my-route", {
|
|
13
|
-
* method: "POST",
|
|
14
|
-
* headers: jsonHeaders(testAdminActor),
|
|
15
|
-
* body: JSON.stringify({ ... }),
|
|
16
|
-
* });
|
|
17
|
-
* expect(res.status).toBe(201);
|
|
18
|
-
*/
|
|
19
|
-
import { OpenAPIHono } from "@hono/zod-openapi";
|
|
20
|
-
import { createRequire } from "node:module";
|
|
21
|
-
import { createTestConfig } from "./create-test-config.js";
|
|
22
|
-
import { createKernel } from "../runtime/kernel.js";
|
|
23
|
-
import { buildSchema } from "../kernel/database/migrate.js";
|
|
24
|
-
import { ensureDefaultOrg } from "../auth/org.js";
|
|
25
|
-
// drizzle-kit/api uses CJS internally; createRequire provides ESM compat.
|
|
26
|
-
const require = createRequire(import.meta.url);
|
|
27
|
-
/**
|
|
28
|
-
* Creates a fully-wired test application for plugin E2E testing.
|
|
29
|
-
*
|
|
30
|
-
* @param plugin - The plugin under test (e.g., `appointmentPlugin()`)
|
|
31
|
-
* @param configOverrides - Optional config overrides. Pass `databaseAdapter`
|
|
32
|
-
* to use a real PostgreSQL instance instead of PGlite.
|
|
33
|
-
*/
|
|
34
|
-
export async function createPluginTestApp(plugin, configOverrides = {}) {
|
|
35
|
-
// 1. Build config with plugin applied (PGlite auto-provisioned if no adapter)
|
|
36
|
-
const config = await createTestConfig({
|
|
37
|
-
plugins: [plugin],
|
|
38
|
-
...configOverrides,
|
|
39
|
-
});
|
|
40
|
-
// 2. Boot kernel (creates core services, hook registry)
|
|
41
|
-
const kernel = createKernel(config);
|
|
42
|
-
// 3. Merge core + plugin schemas
|
|
43
|
-
const mergedSchema = buildSchema(config);
|
|
44
|
-
// 4. Programmatic schema push via drizzle-kit/api
|
|
45
|
-
// Diffs current DB state against pgTable definitions, generates DDL, applies it.
|
|
46
|
-
// On fresh PGlite: creates all tables. On existing DB: creates only missing tables.
|
|
47
|
-
const drizzleKit = require("drizzle-kit/api");
|
|
48
|
-
const { apply } = await drizzleKit.pushSchema(mergedSchema, kernel.database.db);
|
|
49
|
-
await apply();
|
|
50
|
-
// Ensure the default organization exists for plugin tests
|
|
51
|
-
await ensureDefaultOrg(kernel.database.db);
|
|
52
|
-
// 5. Create OpenAPIHono --- matching production server.ts
|
|
53
|
-
// Plugin routes register via manifest.ts which calls app.openapi().
|
|
54
|
-
const app = new OpenAPIHono();
|
|
55
|
-
// 6. Test actor middleware: parse x-test-actor header -> set on context
|
|
56
|
-
app.use("*", async (c, next) => {
|
|
57
|
-
const header = c.req.header("x-test-actor");
|
|
58
|
-
if (header) {
|
|
59
|
-
try {
|
|
60
|
-
c.set("actor", JSON.parse(header));
|
|
61
|
-
}
|
|
62
|
-
catch { /* malformed JSON --- fall through without actor */ }
|
|
63
|
-
}
|
|
64
|
-
await next();
|
|
65
|
-
});
|
|
66
|
-
// 7. Register plugin routes (deferred via config.routes)
|
|
67
|
-
const routes = config.routes;
|
|
68
|
-
routes?.(app, kernel);
|
|
69
|
-
return {
|
|
70
|
-
app,
|
|
71
|
-
kernel,
|
|
72
|
-
db: kernel.database.db,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { CommerceConfig } from "../config/types.js";
|
|
2
|
-
import { createKernel } from "../runtime/kernel.js";
|
|
3
|
-
export interface RepositoryTestHarness {
|
|
4
|
-
config: CommerceConfig;
|
|
5
|
-
kernel: ReturnType<typeof createKernel>;
|
|
6
|
-
}
|
|
7
|
-
export declare function createRepositoryTestHarness(overrides?: Partial<CommerceConfig>): Promise<RepositoryTestHarness>;
|
|
8
|
-
//# sourceMappingURL=create-repository-test-harness.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-repository-test-harness.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-repository-test-harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;CACzC;AAED,wBAAsB,2BAA2B,CAC/C,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,OAAO,CAAC,qBAAqB,CAAC,CAIhC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { createTestConfig } from "./create-test-config.js";
|
|
2
|
-
import { createKernel } from "../runtime/kernel.js";
|
|
3
|
-
export async function createRepositoryTestHarness(overrides = {}) {
|
|
4
|
-
const config = await createTestConfig(overrides);
|
|
5
|
-
const kernel = createKernel(config);
|
|
6
|
-
return { config, kernel };
|
|
7
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { CommerceConfig } from "../config/types.js";
|
|
2
|
-
export declare function createTestConfig(overrides?: Partial<CommerceConfig>): Promise<CommerceConfig>;
|
|
3
|
-
/**
|
|
4
|
-
* Creates a test config backed by PGlite (in-memory PostgreSQL).
|
|
5
|
-
*
|
|
6
|
-
* This provides production parity for tests by using real SQL execution
|
|
7
|
-
* and PostgreSQL behavior while remaining fast and self-contained.
|
|
8
|
-
*
|
|
9
|
-
* @param overrides - Optional config overrides
|
|
10
|
-
* @returns A promise resolving to an object containing:
|
|
11
|
-
* - config: The CommerceConfig to pass to createKernel
|
|
12
|
-
* - cleanup: Async function to reset data between tests
|
|
13
|
-
*/
|
|
14
|
-
export declare function createPGliteTestConfig(overrides?: Partial<CommerceConfig>): Promise<{
|
|
15
|
-
config: CommerceConfig;
|
|
16
|
-
cleanup: () => Promise<void>;
|
|
17
|
-
}>;
|
|
18
|
-
//# sourceMappingURL=create-test-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-test-config.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-test-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAgDzD,wBAAsB,gBAAgB,CACpC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,OAAO,CAAC,cAAc,CAAC,CA+GzB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAUnE"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from "../config/define-config.js";
|
|
2
|
-
import { Ok } from "../kernel/result.js";
|
|
3
|
-
function createInMemoryStorageAdapter() {
|
|
4
|
-
const files = new Map();
|
|
5
|
-
const baseUrl = "http://localhost:3000/test-assets";
|
|
6
|
-
return {
|
|
7
|
-
providerId: "test-memory-storage",
|
|
8
|
-
async upload(key, data, contentType) {
|
|
9
|
-
const body = data instanceof ArrayBuffer
|
|
10
|
-
? data
|
|
11
|
-
: await new Response(data).arrayBuffer();
|
|
12
|
-
files.set(key, { data: body, contentType });
|
|
13
|
-
return Ok({
|
|
14
|
-
key,
|
|
15
|
-
url: `${baseUrl}/${key}`,
|
|
16
|
-
contentType,
|
|
17
|
-
size: body.byteLength,
|
|
18
|
-
});
|
|
19
|
-
},
|
|
20
|
-
async getUrl(key) {
|
|
21
|
-
return Ok(`${baseUrl}/${key}`);
|
|
22
|
-
},
|
|
23
|
-
async getSignedUrl(key, expiresIn) {
|
|
24
|
-
return Ok(`${baseUrl}/${key}?expiresIn=${expiresIn}`);
|
|
25
|
-
},
|
|
26
|
-
async delete(key) {
|
|
27
|
-
files.delete(key);
|
|
28
|
-
return Ok(undefined);
|
|
29
|
-
},
|
|
30
|
-
async list(prefix) {
|
|
31
|
-
return Ok(Array.from(files.entries())
|
|
32
|
-
.filter(([key]) => key.startsWith(prefix))
|
|
33
|
-
.map(([key, file]) => ({
|
|
34
|
-
key,
|
|
35
|
-
url: `${baseUrl}/${key}`,
|
|
36
|
-
contentType: file.contentType,
|
|
37
|
-
size: file.data.byteLength,
|
|
38
|
-
})));
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export async function createTestConfig(overrides = {}) {
|
|
43
|
-
// Auto-provision PGlite when no databaseAdapter is provided
|
|
44
|
-
if (!overrides.databaseAdapter) {
|
|
45
|
-
const { createPGliteTestAdapter } = await import("./create-pglite-adapter.js");
|
|
46
|
-
const { adapter } = await createPGliteTestAdapter();
|
|
47
|
-
overrides = { ...overrides, databaseAdapter: adapter };
|
|
48
|
-
}
|
|
49
|
-
return defineConfig({
|
|
50
|
-
version: "0.0.1-test",
|
|
51
|
-
storeName: "Test Store",
|
|
52
|
-
database: {
|
|
53
|
-
provider: "postgresql",
|
|
54
|
-
},
|
|
55
|
-
auth: {
|
|
56
|
-
requireEmailVerification: false,
|
|
57
|
-
apiKeys: { enabled: true, defaultPermissions: ["catalog:read"] },
|
|
58
|
-
posPin: { enabled: true },
|
|
59
|
-
roles: {
|
|
60
|
-
owner: { permissions: ["*:*"] },
|
|
61
|
-
admin: { permissions: ["*:*"] },
|
|
62
|
-
staff: {
|
|
63
|
-
permissions: [
|
|
64
|
-
"catalog:create",
|
|
65
|
-
"catalog:update",
|
|
66
|
-
"catalog:delete",
|
|
67
|
-
"catalog:read",
|
|
68
|
-
"inventory:adjust",
|
|
69
|
-
"orders:create",
|
|
70
|
-
"orders:read",
|
|
71
|
-
"orders:update",
|
|
72
|
-
"cart:create",
|
|
73
|
-
"cart:update",
|
|
74
|
-
"customers:update:self",
|
|
75
|
-
],
|
|
76
|
-
},
|
|
77
|
-
ai_agent: {
|
|
78
|
-
permissions: [
|
|
79
|
-
"catalog:read",
|
|
80
|
-
"catalog:create",
|
|
81
|
-
"inventory:read",
|
|
82
|
-
"inventory:adjust",
|
|
83
|
-
"orders:read",
|
|
84
|
-
"cart:create",
|
|
85
|
-
"cart:update",
|
|
86
|
-
"mcp:access",
|
|
87
|
-
],
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
customerPermissions: [
|
|
91
|
-
"catalog:read",
|
|
92
|
-
"cart:create",
|
|
93
|
-
"cart:read",
|
|
94
|
-
"cart:update",
|
|
95
|
-
"orders:create",
|
|
96
|
-
"orders:read:own",
|
|
97
|
-
"customers:read:self",
|
|
98
|
-
"customers:update:self",
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
entities: {
|
|
102
|
-
product: {
|
|
103
|
-
fields: [
|
|
104
|
-
{ name: "weight", type: "number" },
|
|
105
|
-
{ name: "brand", type: "text" },
|
|
106
|
-
],
|
|
107
|
-
variants: { enabled: true, optionTypes: ["size", "color"] },
|
|
108
|
-
fulfillment: "physical",
|
|
109
|
-
},
|
|
110
|
-
digitalDownload: {
|
|
111
|
-
fields: [{ name: "fileAssetId", type: "text" }],
|
|
112
|
-
variants: { enabled: false },
|
|
113
|
-
fulfillment: "digital-download",
|
|
114
|
-
},
|
|
115
|
-
course: {
|
|
116
|
-
fields: [{ name: "modules", type: "json" }],
|
|
117
|
-
variants: { enabled: false },
|
|
118
|
-
fulfillment: "digital-access",
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
cart: {
|
|
122
|
-
ttlMinutes: 5,
|
|
123
|
-
hooks: {},
|
|
124
|
-
},
|
|
125
|
-
checkout: {
|
|
126
|
-
hooks: {
|
|
127
|
-
beforeCreate: [],
|
|
128
|
-
afterCreate: [],
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
orders: {
|
|
132
|
-
hooks: {
|
|
133
|
-
beforeCreate: [],
|
|
134
|
-
afterCreate: [],
|
|
135
|
-
beforeStatusChange: [],
|
|
136
|
-
afterStatusChange: [],
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
inventory: {
|
|
140
|
-
hooks: {
|
|
141
|
-
afterAdjust: [],
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
email: {
|
|
145
|
-
async send() {
|
|
146
|
-
// no-op for tests
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
storage: createInMemoryStorageAdapter(),
|
|
150
|
-
...overrides,
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Creates a test config backed by PGlite (in-memory PostgreSQL).
|
|
155
|
-
*
|
|
156
|
-
* This provides production parity for tests by using real SQL execution
|
|
157
|
-
* and PostgreSQL behavior while remaining fast and self-contained.
|
|
158
|
-
*
|
|
159
|
-
* @param overrides - Optional config overrides
|
|
160
|
-
* @returns A promise resolving to an object containing:
|
|
161
|
-
* - config: The CommerceConfig to pass to createKernel
|
|
162
|
-
* - cleanup: Async function to reset data between tests
|
|
163
|
-
*/
|
|
164
|
-
export async function createPGliteTestConfig(overrides = {}) {
|
|
165
|
-
const { createPGliteTestAdapter } = await import("./create-pglite-adapter.js");
|
|
166
|
-
const { adapter, cleanup } = await createPGliteTestAdapter();
|
|
167
|
-
const config = await createTestConfig({
|
|
168
|
-
databaseAdapter: adapter,
|
|
169
|
-
...overrides,
|
|
170
|
-
});
|
|
171
|
-
return { config, cleanup };
|
|
172
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-test-kernel.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-test-kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,wBAAsB,gBAAgB,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,kDAE7E"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { HookRegistry } from "../kernel/hooks/registry.js";
|
|
2
|
-
import type { CommerceConfig, MCPTool } from "../config/types.js";
|
|
3
|
-
interface PluginContextShape {
|
|
4
|
-
hooks: HookRegistry;
|
|
5
|
-
config: CommerceConfig;
|
|
6
|
-
services: Record<string, unknown>;
|
|
7
|
-
routes: {
|
|
8
|
-
add(method: string, path: string, handler: (...args: unknown[]) => unknown): void;
|
|
9
|
-
};
|
|
10
|
-
mcp: {
|
|
11
|
-
registerTool(tool: MCPTool): void;
|
|
12
|
-
};
|
|
13
|
-
analytics: {
|
|
14
|
-
registerModel(model: unknown): void;
|
|
15
|
-
};
|
|
16
|
-
database: {
|
|
17
|
-
registerSchema(schema: Record<string, unknown>): void;
|
|
18
|
-
query: unknown;
|
|
19
|
-
transaction<T>(fn: (tx: unknown) => Promise<T>): Promise<T>;
|
|
20
|
-
};
|
|
21
|
-
logger: {
|
|
22
|
-
info(message: string, data?: unknown): void;
|
|
23
|
-
warn(message: string, data?: unknown): void;
|
|
24
|
-
error(message: string, data?: unknown): void;
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
export interface TestPluginContext extends PluginContextShape {
|
|
28
|
-
registeredRoutes: Array<{
|
|
29
|
-
method: string;
|
|
30
|
-
path: string;
|
|
31
|
-
handler: (...args: unknown[]) => unknown;
|
|
32
|
-
}>;
|
|
33
|
-
registeredMCPTools: MCPTool[];
|
|
34
|
-
registeredAnalyticsModels: unknown[];
|
|
35
|
-
registeredSchemas: Array<Record<string, unknown>>;
|
|
36
|
-
}
|
|
37
|
-
export declare function createTestPluginContext(options?: {
|
|
38
|
-
config?: Partial<CommerceConfig>;
|
|
39
|
-
services?: Record<string, unknown>;
|
|
40
|
-
}): Promise<TestPluginContext>;
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=create-test-plugin-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-test-plugin-context.d.ts","sourceRoot":"","sources":["../../src/test-utils/create-test-plugin-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElE,UAAU,kBAAkB;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,EAAE;QAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9F,GAAG,EAAE;QAAE,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE;QAAE,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IACnD,QAAQ,EAAE;QACR,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACtD,KAAK,EAAE,OAAO,CAAC;QACf,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;CACpJ;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,gBAAgB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;KAAE,CAAC,CAAC;IACpG,kBAAkB,EAAE,OAAO,EAAE,CAAC;IAC9B,yBAAyB,EAAE,OAAO,EAAE,CAAC;IACrC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,wBAAsB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4C7B"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { HookRegistry } from "../kernel/hooks/registry.js";
|
|
2
|
-
import { createLogger } from "../utils/logger.js";
|
|
3
|
-
import { createTestConfig } from "./create-test-config.js";
|
|
4
|
-
export async function createTestPluginContext(options) {
|
|
5
|
-
const hooks = new HookRegistry();
|
|
6
|
-
const config = await createTestConfig(options?.config ?? {});
|
|
7
|
-
const services = options?.services ?? {};
|
|
8
|
-
const registeredRoutes = [];
|
|
9
|
-
const registeredMCPTools = [];
|
|
10
|
-
const registeredAnalyticsModels = [];
|
|
11
|
-
const registeredSchemas = [];
|
|
12
|
-
return {
|
|
13
|
-
hooks,
|
|
14
|
-
config,
|
|
15
|
-
services,
|
|
16
|
-
routes: {
|
|
17
|
-
add(method, path, handler) {
|
|
18
|
-
registeredRoutes.push({ method: method.toUpperCase(), path, handler });
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
mcp: {
|
|
22
|
-
registerTool(tool) {
|
|
23
|
-
registeredMCPTools.push(tool);
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
analytics: {
|
|
27
|
-
registerModel(model) {
|
|
28
|
-
registeredAnalyticsModels.push(model);
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
database: {
|
|
32
|
-
registerSchema(schema) {
|
|
33
|
-
registeredSchemas.push(schema);
|
|
34
|
-
},
|
|
35
|
-
query: {},
|
|
36
|
-
async transaction(fn) {
|
|
37
|
-
return fn({});
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
logger: createLogger("test-plugin-context"),
|
|
41
|
-
registeredRoutes,
|
|
42
|
-
registeredMCPTools,
|
|
43
|
-
registeredAnalyticsModels,
|
|
44
|
-
registeredSchemas,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Integration test utilities for REST API endpoints.
|
|
3
|
-
*
|
|
4
|
-
* Provides helper functions to test Hono routes with a real kernel,
|
|
5
|
-
* PGlite database, and authentication middleware.
|
|
6
|
-
*/
|
|
7
|
-
import { Hono } from "hono";
|
|
8
|
-
import { createKernel } from "../runtime/kernel.js";
|
|
9
|
-
import type { CommerceConfig } from "../config/types.js";
|
|
10
|
-
import type { Actor } from "../auth/types.js";
|
|
11
|
-
import type { AuthInstance } from "../auth/setup.js";
|
|
12
|
-
type ServerEnv = {
|
|
13
|
-
Variables: {
|
|
14
|
-
auth: AuthInstance;
|
|
15
|
-
actor: Actor | null;
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Creates a test server with PGlite-backed kernel for REST API testing.
|
|
20
|
-
*/
|
|
21
|
-
export declare function createTestServer(overrides?: Partial<CommerceConfig>): Promise<{
|
|
22
|
-
server: Hono<ServerEnv>;
|
|
23
|
-
kernel: ReturnType<typeof createKernel>;
|
|
24
|
-
auth: AuthInstance;
|
|
25
|
-
cleanup: () => Promise<void>;
|
|
26
|
-
}>;
|
|
27
|
-
/**
|
|
28
|
-
* Helper to parse JSON response from Hono Response
|
|
29
|
-
*/
|
|
30
|
-
export declare function parseJsonResponse<T = unknown>(response: Response): Promise<T>;
|
|
31
|
-
/**
|
|
32
|
-
* Common test actor with staff permissions
|
|
33
|
-
*/
|
|
34
|
-
export declare const testActor: Actor;
|
|
35
|
-
/**
|
|
36
|
-
* Test actor with read-only permissions
|
|
37
|
-
*/
|
|
38
|
-
export declare const readonlyActor: Actor;
|
|
39
|
-
/**
|
|
40
|
-
* Test actor with no permissions
|
|
41
|
-
*/
|
|
42
|
-
export declare const noPermActor: Actor;
|
|
43
|
-
/**
|
|
44
|
-
* Helper to create a mock request with actor context
|
|
45
|
-
*/
|
|
46
|
-
export declare function createMockRequest(server: Hono<ServerEnv>, options: {
|
|
47
|
-
method: string;
|
|
48
|
-
url: string;
|
|
49
|
-
body?: unknown;
|
|
50
|
-
headers?: Record<string, string>;
|
|
51
|
-
actor?: Actor;
|
|
52
|
-
}): Request;
|
|
53
|
-
/**
|
|
54
|
-
* Helper to make authenticated requests to the test server
|
|
55
|
-
*/
|
|
56
|
-
export declare function makeRequest(server: Hono<ServerEnv>, options: {
|
|
57
|
-
method: string;
|
|
58
|
-
url: string;
|
|
59
|
-
body?: unknown;
|
|
60
|
-
headers?: Record<string, string>;
|
|
61
|
-
actor?: Actor;
|
|
62
|
-
}): Promise<Response>;
|
|
63
|
-
export {};
|
|
64
|
-
//# sourceMappingURL=rest-api-test-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rest-api-test-utils.d.ts","sourceRoot":"","sources":["../../src/test-utils/rest-api-test-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,SAAS,GAAG;IACf,SAAS,EAAE;QACT,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;KACrB,CAAC;CACH,CAAC;AAiDF;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,OAAO,CAAC;IACT,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC,CAqDD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAEnF;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KA4BvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAS3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KASzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,WAwBA;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EACvB,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,qBAYF"}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Integration test utilities for REST API endpoints.
|
|
3
|
-
*
|
|
4
|
-
* Provides helper functions to test Hono routes with a real kernel,
|
|
5
|
-
* PGlite database, and authentication middleware.
|
|
6
|
-
*/
|
|
7
|
-
import { Hono } from "hono";
|
|
8
|
-
import { createKernel } from "../runtime/kernel.js";
|
|
9
|
-
import { createAuth } from "../auth/setup.js";
|
|
10
|
-
import { authMiddleware } from "../auth/middleware.js";
|
|
11
|
-
import { createRestRoutes } from "../interfaces/rest/index.js";
|
|
12
|
-
import { createPGliteTestConfig } from "./create-test-config.js";
|
|
13
|
-
import { CommerceValidationError } from "../kernel/errors.js";
|
|
14
|
-
import { Ok, Err } from "../kernel/result.js";
|
|
15
|
-
const mockPaymentAdapter = {
|
|
16
|
-
providerId: "test-payments",
|
|
17
|
-
async createPaymentIntent(params) {
|
|
18
|
-
return Ok({
|
|
19
|
-
id: "pi_test_" + Date.now(),
|
|
20
|
-
status: "requires_capture",
|
|
21
|
-
amount: params.amount,
|
|
22
|
-
currency: params.currency,
|
|
23
|
-
clientSecret: "secret_test",
|
|
24
|
-
});
|
|
25
|
-
},
|
|
26
|
-
async capturePayment() {
|
|
27
|
-
return Ok({ id: "pi_test_" + Date.now(), status: "succeeded", amountCaptured: 1000 });
|
|
28
|
-
},
|
|
29
|
-
async refundPayment() {
|
|
30
|
-
return Ok({ id: "re_test_" + Date.now(), status: "succeeded", amountRefunded: 1000 });
|
|
31
|
-
},
|
|
32
|
-
async cancelPaymentIntent() {
|
|
33
|
-
return Ok(undefined);
|
|
34
|
-
},
|
|
35
|
-
async verifyWebhook(request) {
|
|
36
|
-
// Extract signature from headers
|
|
37
|
-
const signature = request.headers.get("stripe-signature") || request.headers.get("webhook-signature");
|
|
38
|
-
// Extract payload from request body
|
|
39
|
-
let payload;
|
|
40
|
-
try {
|
|
41
|
-
payload = await request.clone().json();
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return Err(new CommerceValidationError("Webhook payload is invalid or missing"));
|
|
45
|
-
}
|
|
46
|
-
// Simulate signature verification for production-hardened testing
|
|
47
|
-
// Reject invalid signatures like "invalid_signature"
|
|
48
|
-
if (signature === "invalid_signature") {
|
|
49
|
-
return Err(new CommerceValidationError("Invalid webhook signature"));
|
|
50
|
-
}
|
|
51
|
-
// Reject requests with no required fields
|
|
52
|
-
if (!payload || !payload.type) {
|
|
53
|
-
return Err(new CommerceValidationError("Webhook payload is missing required fields"));
|
|
54
|
-
}
|
|
55
|
-
return Ok({ id: "evt_test_" + Date.now(), type: String(payload.type), data: (payload.data ?? {}) });
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Creates a test server with PGlite-backed kernel for REST API testing.
|
|
60
|
-
*/
|
|
61
|
-
export async function createTestServer(overrides = {}) {
|
|
62
|
-
const { config, cleanup } = await createPGliteTestConfig({
|
|
63
|
-
payments: [mockPaymentAdapter],
|
|
64
|
-
...overrides,
|
|
65
|
-
});
|
|
66
|
-
const kernel = createKernel(config);
|
|
67
|
-
const auth = createAuth(kernel.database, config);
|
|
68
|
-
const app = new Hono();
|
|
69
|
-
// Set auth in context (like createServer does)
|
|
70
|
-
app.use("*", async (c, next) => {
|
|
71
|
-
c.set("auth", auth);
|
|
72
|
-
await next();
|
|
73
|
-
});
|
|
74
|
-
// Test middleware: allow direct actor injection via x-test-actor header for testing
|
|
75
|
-
app.use("*", async (c, next) => {
|
|
76
|
-
const testActorHeader = c.req.header("x-test-actor");
|
|
77
|
-
if (testActorHeader) {
|
|
78
|
-
try {
|
|
79
|
-
const actor = JSON.parse(testActorHeader);
|
|
80
|
-
c.set("actor", actor);
|
|
81
|
-
await next();
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
// Invalid JSON, continue to auth middleware
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
await next();
|
|
89
|
-
});
|
|
90
|
-
// Add auth middleware
|
|
91
|
-
app.use("*", authMiddleware(auth, config));
|
|
92
|
-
// Error handling middleware - catch thrown errors and convert to JSON
|
|
93
|
-
app.use("*", async (c, next) => {
|
|
94
|
-
try {
|
|
95
|
-
await next();
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
// Import error handling utilities
|
|
99
|
-
const { mapErrorToResponse, mapErrorToStatus } = await import("../interfaces/rest/utils.js");
|
|
100
|
-
return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
// Add REST routes
|
|
104
|
-
app.route("/api", createRestRoutes(kernel));
|
|
105
|
-
return { server: app, kernel, auth, cleanup };
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Helper to parse JSON response from Hono Response
|
|
109
|
-
*/
|
|
110
|
-
export async function parseJsonResponse(response) {
|
|
111
|
-
return response.json();
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Common test actor with staff permissions
|
|
115
|
-
*/
|
|
116
|
-
export const testActor = {
|
|
117
|
-
type: "user",
|
|
118
|
-
userId: "00000000-0000-0000-0000-000000000001",
|
|
119
|
-
email: "test@example.com",
|
|
120
|
-
name: "Test Staff",
|
|
121
|
-
vendorId: null,
|
|
122
|
-
organizationId: "org_default",
|
|
123
|
-
role: "staff",
|
|
124
|
-
permissions: [
|
|
125
|
-
"catalog:create",
|
|
126
|
-
"catalog:update",
|
|
127
|
-
"catalog:read",
|
|
128
|
-
"inventory:adjust",
|
|
129
|
-
"inventory:read",
|
|
130
|
-
"orders:create",
|
|
131
|
-
"orders:read",
|
|
132
|
-
"orders:update",
|
|
133
|
-
"cart:create",
|
|
134
|
-
"cart:update",
|
|
135
|
-
"cart:read",
|
|
136
|
-
"customers:update:self",
|
|
137
|
-
"webhooks:manage",
|
|
138
|
-
"pricing:manage",
|
|
139
|
-
"promotions:manage",
|
|
140
|
-
"promotions:read",
|
|
141
|
-
"audit:read",
|
|
142
|
-
"media:write",
|
|
143
|
-
],
|
|
144
|
-
};
|
|
145
|
-
/**
|
|
146
|
-
* Test actor with read-only permissions
|
|
147
|
-
*/
|
|
148
|
-
export const readonlyActor = {
|
|
149
|
-
type: "user",
|
|
150
|
-
userId: "00000000-0000-0000-0000-000000000002",
|
|
151
|
-
email: "readonly@example.com",
|
|
152
|
-
name: "Read Only User",
|
|
153
|
-
vendorId: null,
|
|
154
|
-
organizationId: "org_default",
|
|
155
|
-
role: "customer",
|
|
156
|
-
permissions: ["catalog:read", "cart:read", "orders:read:own"],
|
|
157
|
-
};
|
|
158
|
-
/**
|
|
159
|
-
* Test actor with no permissions
|
|
160
|
-
*/
|
|
161
|
-
export const noPermActor = {
|
|
162
|
-
type: "user",
|
|
163
|
-
userId: "00000000-0000-0000-0000-000000000003",
|
|
164
|
-
email: "noperm@example.com",
|
|
165
|
-
name: "No Perm",
|
|
166
|
-
vendorId: null,
|
|
167
|
-
organizationId: "org_default",
|
|
168
|
-
role: "customer",
|
|
169
|
-
permissions: [],
|
|
170
|
-
};
|
|
171
|
-
/**
|
|
172
|
-
* Helper to create a mock request with actor context
|
|
173
|
-
*/
|
|
174
|
-
export function createMockRequest(server, options) {
|
|
175
|
-
const url = new URL(options.url, "http://localhost");
|
|
176
|
-
const headers = {
|
|
177
|
-
"content-type": "application/json",
|
|
178
|
-
...options.headers,
|
|
179
|
-
};
|
|
180
|
-
// Add actor as header for test middleware
|
|
181
|
-
if (options.actor) {
|
|
182
|
-
headers["x-test-actor"] = JSON.stringify(options.actor);
|
|
183
|
-
}
|
|
184
|
-
// Build the request
|
|
185
|
-
const requestInit = {
|
|
186
|
-
method: options.method,
|
|
187
|
-
headers,
|
|
188
|
-
};
|
|
189
|
-
if (options.body) {
|
|
190
|
-
requestInit.body = JSON.stringify(options.body);
|
|
191
|
-
}
|
|
192
|
-
const request = new Request(url, requestInit);
|
|
193
|
-
return request;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Helper to make authenticated requests to the test server
|
|
197
|
-
*/
|
|
198
|
-
export async function makeRequest(server, options) {
|
|
199
|
-
// Create request with actor header (defaults to testActor)
|
|
200
|
-
const request = createMockRequest(server, {
|
|
201
|
-
...options,
|
|
202
|
-
actor: options.actor ?? testActor,
|
|
203
|
-
});
|
|
204
|
-
// Route the request through Hono
|
|
205
|
-
const response = await server.fetch(request);
|
|
206
|
-
return response;
|
|
207
|
-
}
|