@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,358 +0,0 @@
|
|
|
1
|
-
import { sql } from "drizzle-orm";
|
|
2
|
-
import { CommerceValidationError } from "../../kernel/errors.js";
|
|
3
|
-
import { Err, Ok } from "../../kernel/result.js";
|
|
4
|
-
// ─── Date Range Parsing ──────────────────────────────────────────────────────
|
|
5
|
-
function parseDateRange(range) {
|
|
6
|
-
if (Array.isArray(range)) {
|
|
7
|
-
const start = new Date(range[0]);
|
|
8
|
-
const end = new Date(range[1]);
|
|
9
|
-
if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime()))
|
|
10
|
-
return null;
|
|
11
|
-
return [start, end];
|
|
12
|
-
}
|
|
13
|
-
if (typeof range !== "string")
|
|
14
|
-
return null;
|
|
15
|
-
const now = new Date();
|
|
16
|
-
const lower = range.toLowerCase();
|
|
17
|
-
if (lower === "last month") {
|
|
18
|
-
return [
|
|
19
|
-
new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() - 1, 1)),
|
|
20
|
-
new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 0, 23, 59, 59, 999)),
|
|
21
|
-
];
|
|
22
|
-
}
|
|
23
|
-
if (lower === "this month") {
|
|
24
|
-
return [
|
|
25
|
-
new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1)),
|
|
26
|
-
new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() + 1, 0, 23, 59, 59, 999)),
|
|
27
|
-
];
|
|
28
|
-
}
|
|
29
|
-
const qMatch = range.match(/^Q([1-4])\s+(\d{4})$/i);
|
|
30
|
-
if (qMatch) {
|
|
31
|
-
const quarter = Number(qMatch[1]);
|
|
32
|
-
const year = Number(qMatch[2]);
|
|
33
|
-
const monthStart = (quarter - 1) * 3;
|
|
34
|
-
return [
|
|
35
|
-
new Date(Date.UTC(year, monthStart, 1)),
|
|
36
|
-
new Date(Date.UTC(year, monthStart + 3, 0, 23, 59, 59, 999)),
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
function pickCube(params) {
|
|
42
|
-
const first = [
|
|
43
|
-
...(params.measures ?? []),
|
|
44
|
-
...(params.dimensions ?? []),
|
|
45
|
-
...(params.timeDimensions ?? []).map((td) => td.dimension),
|
|
46
|
-
...(params.filters ?? []).map((f) => f.member),
|
|
47
|
-
][0];
|
|
48
|
-
if (!first)
|
|
49
|
-
return "Orders";
|
|
50
|
-
return first.split(".")[0] ?? "Orders";
|
|
51
|
-
}
|
|
52
|
-
// ─── Granularity to TO_CHAR format ───────────────────────────────────────────
|
|
53
|
-
const GRANULARITY_FORMAT = {
|
|
54
|
-
day: "YYYY-MM-DD",
|
|
55
|
-
week: "IYYY-\"W\"IW",
|
|
56
|
-
month: "YYYY-MM",
|
|
57
|
-
year: "YYYY",
|
|
58
|
-
};
|
|
59
|
-
// ─── SQL Compilation Helpers ─────────────────────────────────────────────────
|
|
60
|
-
function compileMeasure(cube, measureName) {
|
|
61
|
-
const shortName = measureName.split(".")[1];
|
|
62
|
-
const def = cube.measures[shortName];
|
|
63
|
-
if (!def)
|
|
64
|
-
return sql `0`;
|
|
65
|
-
switch (def.type) {
|
|
66
|
-
case "count":
|
|
67
|
-
if (def.filter) {
|
|
68
|
-
return sql.raw(`COUNT(CASE WHEN ${def.filter} THEN 1 END)`);
|
|
69
|
-
}
|
|
70
|
-
return sql `COUNT(*)`;
|
|
71
|
-
case "sum":
|
|
72
|
-
return sql.raw(`COALESCE(SUM(${def.sql}), 0)`);
|
|
73
|
-
case "avg":
|
|
74
|
-
return sql.raw(`COALESCE(ROUND(AVG(${def.sql})), 0)`);
|
|
75
|
-
case "min":
|
|
76
|
-
return sql.raw(`MIN(${def.sql})`);
|
|
77
|
-
case "max":
|
|
78
|
-
return sql.raw(`MAX(${def.sql})`);
|
|
79
|
-
case "countDistinct":
|
|
80
|
-
return sql.raw(`COUNT(DISTINCT ${def.sql})`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
function compileTimeDimensionSelect(cube, td) {
|
|
84
|
-
const shortName = td.dimension.split(".")[1];
|
|
85
|
-
const dimDef = cube.dimensions[shortName];
|
|
86
|
-
if (!dimDef)
|
|
87
|
-
return sql `NULL`;
|
|
88
|
-
const gran = td.granularity ?? "day";
|
|
89
|
-
// Validate granularity against whitelist to prevent SQL injection
|
|
90
|
-
if (!(gran in GRANULARITY_FORMAT)) {
|
|
91
|
-
return sql `NULL`;
|
|
92
|
-
}
|
|
93
|
-
const format = GRANULARITY_FORMAT[gran];
|
|
94
|
-
return sql.raw(`TO_CHAR(DATE_TRUNC('${gran}', ${dimDef.sql}), '${format}')`);
|
|
95
|
-
}
|
|
96
|
-
function compileFilter(cube, filter) {
|
|
97
|
-
const shortName = filter.member.split(".")[1];
|
|
98
|
-
const dimDef = cube.dimensions[shortName];
|
|
99
|
-
if (!dimDef)
|
|
100
|
-
return null;
|
|
101
|
-
const col = dimDef.sql;
|
|
102
|
-
const values = filter.values ?? [];
|
|
103
|
-
if (values.length === 0)
|
|
104
|
-
return null;
|
|
105
|
-
switch (filter.operator) {
|
|
106
|
-
case "equals":
|
|
107
|
-
return sql `${sql.raw(col)} = ${values[0]}`;
|
|
108
|
-
case "notEquals":
|
|
109
|
-
return sql `${sql.raw(col)} != ${values[0]}`;
|
|
110
|
-
case "contains":
|
|
111
|
-
return sql `${sql.raw(col)} ILIKE ${"%" + values[0] + "%"}`;
|
|
112
|
-
case "in":
|
|
113
|
-
return sql `${sql.raw(col)} IN (${sql.join(values.map((v) => sql `${v}`), sql `, `)})`;
|
|
114
|
-
case "notIn":
|
|
115
|
-
return sql `${sql.raw(col)} NOT IN (${sql.join(values.map((v) => sql `${v}`), sql `, `)})`;
|
|
116
|
-
case "gt":
|
|
117
|
-
return sql `${sql.raw(col)} > ${Number(values[0])}`;
|
|
118
|
-
case "gte":
|
|
119
|
-
return sql `${sql.raw(col)} >= ${Number(values[0])}`;
|
|
120
|
-
case "lt":
|
|
121
|
-
return sql `${sql.raw(col)} < ${Number(values[0])}`;
|
|
122
|
-
case "lte":
|
|
123
|
-
return sql `${sql.raw(col)} <= ${Number(values[0])}`;
|
|
124
|
-
case "beforeDate":
|
|
125
|
-
return sql `${sql.raw(col)} <= ${values[0]}::timestamptz`;
|
|
126
|
-
case "afterDate":
|
|
127
|
-
return sql `${sql.raw(col)} >= ${values[0]}::timestamptz`;
|
|
128
|
-
case "inDateRange":
|
|
129
|
-
if (values.length >= 2) {
|
|
130
|
-
return sql `${sql.raw(col)} BETWEEN ${values[0]}::timestamptz AND ${values[1]}::timestamptz`;
|
|
131
|
-
}
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// ─── DrizzleAnalyticsAdapter ─────────────────────────────────────────────────
|
|
136
|
-
export class DrizzleAnalyticsAdapter {
|
|
137
|
-
db;
|
|
138
|
-
models = new Map();
|
|
139
|
-
constructor(db) {
|
|
140
|
-
this.db = db;
|
|
141
|
-
}
|
|
142
|
-
registerModel(model) {
|
|
143
|
-
this.models.set(model.name, model);
|
|
144
|
-
}
|
|
145
|
-
async query(params, scope) {
|
|
146
|
-
if (!params.measures || params.measures.length === 0) {
|
|
147
|
-
return Err(new CommerceValidationError("analytics.query requires at least one measure."));
|
|
148
|
-
}
|
|
149
|
-
const cubeName = pickCube(params);
|
|
150
|
-
// Validate all members are from the same cube
|
|
151
|
-
const allMembers = [
|
|
152
|
-
...params.measures,
|
|
153
|
-
...(params.dimensions ?? []),
|
|
154
|
-
...(params.timeDimensions ?? []).map((td) => td.dimension),
|
|
155
|
-
];
|
|
156
|
-
const wrongCube = allMembers.find((m) => m.split(".")[0] !== cubeName);
|
|
157
|
-
if (wrongCube) {
|
|
158
|
-
return Err(new CommerceValidationError(`analytics.query currently requires measures from a single cube. Found "${wrongCube}" in "${cubeName}" query.`));
|
|
159
|
-
}
|
|
160
|
-
const cube = this.models.get(cubeName);
|
|
161
|
-
if (!cube) {
|
|
162
|
-
const available = [...this.models.keys()].join(", ");
|
|
163
|
-
return Err(new CommerceValidationError(`Unknown analytics cube: "${cubeName}". Available cubes: ${available}`));
|
|
164
|
-
}
|
|
165
|
-
// Validate that requested measures exist in the cube
|
|
166
|
-
for (const measure of params.measures) {
|
|
167
|
-
const shortName = measure.split(".")[1];
|
|
168
|
-
if (shortName && !cube.measures[shortName]) {
|
|
169
|
-
const available = Object.keys(cube.measures).map((m) => `${cubeName}.${m}`).join(", ");
|
|
170
|
-
return Err(new CommerceValidationError(`Unknown measure: "${measure}". Available measures for ${cubeName}: ${available}`));
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
// Validate that requested dimensions exist in the cube
|
|
174
|
-
for (const dim of params.dimensions ?? []) {
|
|
175
|
-
const shortName = dim.split(".")[1];
|
|
176
|
-
if (shortName && !cube.dimensions[shortName]) {
|
|
177
|
-
const available = Object.keys(cube.dimensions).map((d) => `${cubeName}.${d}`).join(", ");
|
|
178
|
-
return Err(new CommerceValidationError(`Unknown dimension: "${dim}". Available dimensions for ${cubeName}: ${available}`));
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
try {
|
|
182
|
-
const rows = await this.executeQuery(cube, params, scope);
|
|
183
|
-
return Ok({
|
|
184
|
-
query: params,
|
|
185
|
-
rows,
|
|
186
|
-
source: cubeName,
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
catch (error) {
|
|
190
|
-
return Err(new CommerceValidationError(`Analytics query failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
async getMeta(_scope) {
|
|
194
|
-
const models = [];
|
|
195
|
-
for (const cube of this.models.values()) {
|
|
196
|
-
models.push({
|
|
197
|
-
name: cube.name,
|
|
198
|
-
source: "builtin",
|
|
199
|
-
measures: Object.keys(cube.measures).map((m) => `${cube.name}.${m}`),
|
|
200
|
-
dimensions: Object.keys(cube.dimensions).map((d) => `${cube.name}.${d}`),
|
|
201
|
-
segments: cube.segments
|
|
202
|
-
? Object.keys(cube.segments).map((s) => `${cube.name}.${s}`)
|
|
203
|
-
: [],
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
return Ok({
|
|
207
|
-
models,
|
|
208
|
-
measures: models.flatMap((m) => m.measures),
|
|
209
|
-
dimensions: models.flatMap((m) => m.dimensions),
|
|
210
|
-
segments: models.flatMap((m) => m.segments ?? []),
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
// ─── SQL Query Builder ───────────────────────────────────────────────────
|
|
214
|
-
async executeQuery(cube, params, scope) {
|
|
215
|
-
const selectParts = [];
|
|
216
|
-
const groupByParts = [];
|
|
217
|
-
const whereParts = [];
|
|
218
|
-
// ── Scope-based filtering (always applied) ───────────────────────
|
|
219
|
-
//
|
|
220
|
-
// Security model (hardened by default):
|
|
221
|
-
// admin/staff → no filter (full access)
|
|
222
|
-
// vendor/customer → MUST have a matching scopeRule, or blocked
|
|
223
|
-
// public → always blocked
|
|
224
|
-
//
|
|
225
|
-
// Scope is REQUIRED — there is no unscoped code path.
|
|
226
|
-
{
|
|
227
|
-
if (scope.role === "public") {
|
|
228
|
-
whereParts.push(sql.raw("1 = 0"));
|
|
229
|
-
}
|
|
230
|
-
else if (scope.role !== "admin" && scope.role !== "staff") {
|
|
231
|
-
// Vendor or customer: look for a matching scope rule
|
|
232
|
-
let scopeApplied = false;
|
|
233
|
-
if (cube.scopeRules) {
|
|
234
|
-
for (const rule of cube.scopeRules) {
|
|
235
|
-
if (rule.role === scope.role) {
|
|
236
|
-
// Use parameterized SQL for scope values to prevent injection.
|
|
237
|
-
// The filter template uses :vendorId / :customerId placeholders.
|
|
238
|
-
// We split the filter on placeholders and build a parameterized
|
|
239
|
-
// sql`` template instead of using sql.raw() with string interpolation.
|
|
240
|
-
let filterSql = rule.filter;
|
|
241
|
-
if (scope.vendorId && filterSql.includes(":vendorId")) {
|
|
242
|
-
// Replace placeholder with parameterized value
|
|
243
|
-
const parts = filterSql.split(":vendorId");
|
|
244
|
-
const fragments = parts.map((part, i) => i < parts.length - 1
|
|
245
|
-
? sql `${sql.raw(part)}${scope.vendorId}`
|
|
246
|
-
: sql.raw(part));
|
|
247
|
-
whereParts.push(sql.join(fragments, sql ``));
|
|
248
|
-
scopeApplied = true;
|
|
249
|
-
continue;
|
|
250
|
-
}
|
|
251
|
-
if (scope.customerId && filterSql.includes(":customerId")) {
|
|
252
|
-
const parts = filterSql.split(":customerId");
|
|
253
|
-
const fragments = parts.map((part, i) => i < parts.length - 1
|
|
254
|
-
? sql `${sql.raw(part)}${scope.customerId}`
|
|
255
|
-
: sql.raw(part));
|
|
256
|
-
whereParts.push(sql.join(fragments, sql ``));
|
|
257
|
-
scopeApplied = true;
|
|
258
|
-
continue;
|
|
259
|
-
}
|
|
260
|
-
// No placeholder found — use raw (trusted scope rule SQL)
|
|
261
|
-
whereParts.push(sql.raw(filterSql));
|
|
262
|
-
scopeApplied = true;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
// Deny-by-default: if no scope rule matched, block access
|
|
267
|
-
if (!scopeApplied) {
|
|
268
|
-
whereParts.push(sql.raw("1 = 0"));
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// admin/staff: no filter applied — full access
|
|
272
|
-
}
|
|
273
|
-
// Dimensions → SELECT + GROUP BY
|
|
274
|
-
for (const dim of params.dimensions ?? []) {
|
|
275
|
-
const shortName = dim.split(".")[1];
|
|
276
|
-
const dimDef = cube.dimensions[shortName];
|
|
277
|
-
if (!dimDef)
|
|
278
|
-
continue;
|
|
279
|
-
selectParts.push(sql.raw(`${dimDef.sql} AS "${dim}"`));
|
|
280
|
-
groupByParts.push(sql.raw(dimDef.sql));
|
|
281
|
-
}
|
|
282
|
-
// Time dimensions → SELECT + GROUP BY + WHERE (dateRange)
|
|
283
|
-
for (const td of params.timeDimensions ?? []) {
|
|
284
|
-
const selectExpr = compileTimeDimensionSelect(cube, td);
|
|
285
|
-
selectParts.push(sql `${selectExpr} AS ${sql.raw(`"${td.dimension}"`)}`);
|
|
286
|
-
groupByParts.push(selectExpr);
|
|
287
|
-
// Date range filter
|
|
288
|
-
if (td.dateRange) {
|
|
289
|
-
const range = parseDateRange(td.dateRange);
|
|
290
|
-
if (range) {
|
|
291
|
-
const shortName = td.dimension.split(".")[1];
|
|
292
|
-
const dimDef = cube.dimensions[shortName];
|
|
293
|
-
if (dimDef) {
|
|
294
|
-
whereParts.push(sql `${sql.raw(dimDef.sql)} >= ${range[0].toISOString()}::timestamptz AND ${sql.raw(dimDef.sql)} < ${range[1].toISOString()}::timestamptz`);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
// Measures → SELECT
|
|
300
|
-
for (const measure of params.measures) {
|
|
301
|
-
selectParts.push(sql `${compileMeasure(cube, measure)} AS ${sql.raw(`"${measure}"`)}`);
|
|
302
|
-
}
|
|
303
|
-
// If no select parts (shouldn't happen with validation), bail
|
|
304
|
-
if (selectParts.length === 0) {
|
|
305
|
-
return [];
|
|
306
|
-
}
|
|
307
|
-
// FROM + JOINs
|
|
308
|
-
let fromFragment = sql.raw(cube.table);
|
|
309
|
-
for (const join of cube.joins ?? []) {
|
|
310
|
-
const joinType = join.type === "inner" ? "INNER JOIN" : "LEFT JOIN";
|
|
311
|
-
fromFragment = sql `${fromFragment} ${sql.raw(joinType)} ${sql.raw(join.table)} ON ${sql.raw(join.on)}`;
|
|
312
|
-
}
|
|
313
|
-
// Filters → WHERE
|
|
314
|
-
for (const filter of params.filters ?? []) {
|
|
315
|
-
const compiled = compileFilter(cube, filter);
|
|
316
|
-
if (compiled)
|
|
317
|
-
whereParts.push(compiled);
|
|
318
|
-
}
|
|
319
|
-
// ORDER BY — validate member names against the cube's registered measures/dimensions
|
|
320
|
-
const validMeasures = new Set(Object.keys(cube.measures).map((m) => `${cube.name}.${m}`));
|
|
321
|
-
const validDimensions = new Set(Object.keys(cube.dimensions).map((d) => `${cube.name}.${d}`));
|
|
322
|
-
const orderParts = [];
|
|
323
|
-
for (const [member, dir] of Object.entries(params.order ?? {})) {
|
|
324
|
-
if (!validMeasures.has(member) && !validDimensions.has(member)) {
|
|
325
|
-
continue; // skip unknown members to prevent SQL injection via sql.raw()
|
|
326
|
-
}
|
|
327
|
-
const normalizedDir = dir.toUpperCase() === "DESC" ? "DESC" : "ASC";
|
|
328
|
-
orderParts.push(sql.raw(`"${member}" ${normalizedDir}`));
|
|
329
|
-
}
|
|
330
|
-
// LIMIT
|
|
331
|
-
const limit = Math.max(1, Math.min(params.limit ?? 100, 1000));
|
|
332
|
-
// Assemble the full query
|
|
333
|
-
const selectClause = sql.join(selectParts, sql `, `);
|
|
334
|
-
const whereClause = whereParts.length > 0
|
|
335
|
-
? sql `WHERE ${sql.join(whereParts, sql ` AND `)}`
|
|
336
|
-
: sql ``;
|
|
337
|
-
const groupByClause = groupByParts.length > 0
|
|
338
|
-
? sql `GROUP BY ${sql.join(groupByParts, sql `, `)}`
|
|
339
|
-
: sql ``;
|
|
340
|
-
const orderClause = orderParts.length > 0
|
|
341
|
-
? sql `ORDER BY ${sql.join(orderParts, sql `, `)}`
|
|
342
|
-
: sql ``;
|
|
343
|
-
const fullQuery = sql `SELECT ${selectClause} FROM ${fromFragment} ${whereClause} ${groupByClause} ${orderClause} LIMIT ${limit}`;
|
|
344
|
-
const result = await this.db.execute(fullQuery);
|
|
345
|
-
// Map results: convert bigint to number, preserve column aliases
|
|
346
|
-
// db.execute() returns different shapes per driver — normalize to array of rows
|
|
347
|
-
const rawRows = Array.isArray(result)
|
|
348
|
-
? result
|
|
349
|
-
: result.rows ?? [];
|
|
350
|
-
return rawRows.map((row) => {
|
|
351
|
-
const mapped = {};
|
|
352
|
-
for (const [key, value] of Object.entries(row)) {
|
|
353
|
-
mapped[key] = typeof value === "bigint" ? Number(value) : value;
|
|
354
|
-
}
|
|
355
|
-
return mapped;
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
/**
|
|
3
|
-
* Analytics hooks — RFC-006
|
|
4
|
-
*
|
|
5
|
-
* The in-memory event recording hooks (recordOrderAnalyticsEvent,
|
|
6
|
-
* recordInventoryAnalyticsEvent) have been removed. The source tables
|
|
7
|
-
* (orders, inventory_levels, customers) ARE the source of truth.
|
|
8
|
-
* The DrizzleAnalyticsAdapter queries them directly via SQL.
|
|
9
|
-
*
|
|
10
|
-
* These empty exports preserve backwards compatibility for any code
|
|
11
|
-
* that imports from this module.
|
|
12
|
-
*/
|
|
13
|
-
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/analytics/hooks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
/**
|
|
3
|
-
* Analytics hooks — RFC-006
|
|
4
|
-
*
|
|
5
|
-
* The in-memory event recording hooks (recordOrderAnalyticsEvent,
|
|
6
|
-
* recordInventoryAnalyticsEvent) have been removed. The source tables
|
|
7
|
-
* (orders, inventory_levels, customers) ARE the source of truth.
|
|
8
|
-
* The DrizzleAnalyticsAdapter queries them directly via SQL.
|
|
9
|
-
*
|
|
10
|
-
* These empty exports preserve backwards compatibility for any code
|
|
11
|
-
* that imports from this module.
|
|
12
|
-
*/
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { AnalyticsModel } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Built-in analytics model definitions for the 4 core tables.
|
|
4
|
-
*
|
|
5
|
-
* Each model maps semantic names (e.g., "Orders.revenue") to PostgreSQL
|
|
6
|
-
* columns and aggregations. The DrizzleAnalyticsAdapter compiles these
|
|
7
|
-
* into parameterized SQL queries at runtime.
|
|
8
|
-
*/
|
|
9
|
-
export declare const ORDERS_MODEL: AnalyticsModel;
|
|
10
|
-
export declare const ORDER_LINE_ITEMS_MODEL: AnalyticsModel;
|
|
11
|
-
export declare const INVENTORY_MODEL: AnalyticsModel;
|
|
12
|
-
export declare const CUSTOMERS_MODEL: AnalyticsModel;
|
|
13
|
-
export declare const BUILTIN_ANALYTICS_MODELS: AnalyticsModel[];
|
|
14
|
-
//# sourceMappingURL=models.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/modules/analytics/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AAEH,eAAO,MAAM,YAAY,EAAE,cAwB1B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cA2BpC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cA0B7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAwB7B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,EAKpD,CAAC"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Built-in analytics model definitions for the 4 core tables.
|
|
3
|
-
*
|
|
4
|
-
* Each model maps semantic names (e.g., "Orders.revenue") to PostgreSQL
|
|
5
|
-
* columns and aggregations. The DrizzleAnalyticsAdapter compiles these
|
|
6
|
-
* into parameterized SQL queries at runtime.
|
|
7
|
-
*/
|
|
8
|
-
export const ORDERS_MODEL = {
|
|
9
|
-
name: "Orders",
|
|
10
|
-
table: "orders",
|
|
11
|
-
scopeRules: [
|
|
12
|
-
{ role: "vendor", filter: "id IN (SELECT order_id FROM marketplace_vendor_sub_orders WHERE vendor_id = :vendorId)" },
|
|
13
|
-
{ role: "customer", filter: "customer_id = :customerId" },
|
|
14
|
-
],
|
|
15
|
-
measures: {
|
|
16
|
-
count: { type: "count" },
|
|
17
|
-
revenue: { sql: "grand_total", type: "sum" },
|
|
18
|
-
averageOrderValue: { sql: "grand_total", type: "avg" },
|
|
19
|
-
subtotalRevenue: { sql: "subtotal", type: "sum" },
|
|
20
|
-
taxCollected: { sql: "tax_total", type: "sum" },
|
|
21
|
-
shippingRevenue: { sql: "shipping_total", type: "sum" },
|
|
22
|
-
discountsGiven: { sql: "discount_total", type: "sum" },
|
|
23
|
-
uniqueCustomers: { sql: "customer_id", type: "countDistinct" },
|
|
24
|
-
},
|
|
25
|
-
dimensions: {
|
|
26
|
-
id: { sql: "id", type: "string" },
|
|
27
|
-
orderNumber: { sql: "order_number", type: "string" },
|
|
28
|
-
status: { sql: "status", type: "string" },
|
|
29
|
-
currency: { sql: "currency", type: "string" },
|
|
30
|
-
placedAt: { sql: "placed_at", type: "time" },
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
export const ORDER_LINE_ITEMS_MODEL = {
|
|
34
|
-
name: "OrderLineItems",
|
|
35
|
-
table: "order_line_items",
|
|
36
|
-
scopeRules: [
|
|
37
|
-
{ role: "vendor", filter: "order_id IN (SELECT order_id FROM marketplace_vendor_sub_orders WHERE vendor_id = :vendorId)" },
|
|
38
|
-
{ role: "customer", filter: "order_id IN (SELECT id FROM orders WHERE customer_id = :customerId)" },
|
|
39
|
-
],
|
|
40
|
-
joins: [
|
|
41
|
-
{
|
|
42
|
-
table: "orders",
|
|
43
|
-
type: "left",
|
|
44
|
-
on: "order_line_items.order_id = orders.id",
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
measures: {
|
|
48
|
-
count: { type: "count" },
|
|
49
|
-
itemsSold: { sql: "order_line_items.quantity", type: "sum" },
|
|
50
|
-
lineItemRevenue: { sql: "order_line_items.total_price", type: "sum" },
|
|
51
|
-
averageUnitPrice: { sql: "order_line_items.unit_price", type: "avg" },
|
|
52
|
-
},
|
|
53
|
-
dimensions: {
|
|
54
|
-
id: { sql: "order_line_items.id", type: "string" },
|
|
55
|
-
entityType: { sql: "order_line_items.entity_type", type: "string" },
|
|
56
|
-
sku: { sql: "order_line_items.sku", type: "string" },
|
|
57
|
-
title: { sql: "order_line_items.title", type: "string" },
|
|
58
|
-
fulfillmentStatus: { sql: "order_line_items.fulfillment_status", type: "string" },
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
export const INVENTORY_MODEL = {
|
|
62
|
-
name: "Inventory",
|
|
63
|
-
table: "inventory_levels",
|
|
64
|
-
scopeRules: [
|
|
65
|
-
{ role: "vendor", filter: "entity_id IN (SELECT entity_id FROM marketplace_vendor_entities WHERE vendor_id = :vendorId)" },
|
|
66
|
-
],
|
|
67
|
-
measures: {
|
|
68
|
-
totalOnHand: { sql: "quantity_on_hand", type: "sum" },
|
|
69
|
-
totalReserved: { sql: "quantity_reserved", type: "sum" },
|
|
70
|
-
totalAvailable: { sql: "(quantity_on_hand - quantity_reserved)", type: "sum" },
|
|
71
|
-
inventoryValue: { sql: "(quantity_on_hand * COALESCE(unit_cost, 0))", type: "sum" },
|
|
72
|
-
lowStockCount: {
|
|
73
|
-
type: "count",
|
|
74
|
-
filter: "reorder_threshold IS NOT NULL AND (quantity_on_hand - quantity_reserved) <= reorder_threshold",
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
dimensions: {
|
|
78
|
-
entityId: { sql: "entity_id", type: "string" },
|
|
79
|
-
warehouseId: { sql: "warehouse_id", type: "string" },
|
|
80
|
-
lastRestockedAt: { sql: "last_restocked_at", type: "time" },
|
|
81
|
-
},
|
|
82
|
-
segments: {
|
|
83
|
-
lowStock: {
|
|
84
|
-
sql: "reorder_threshold IS NOT NULL AND (quantity_on_hand - quantity_reserved) <= reorder_threshold",
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
export const CUSTOMERS_MODEL = {
|
|
89
|
-
name: "Customers",
|
|
90
|
-
table: "customers",
|
|
91
|
-
scopeRules: [
|
|
92
|
-
{ role: "vendor", filter: "id IN (SELECT DISTINCT customer_id FROM orders WHERE id IN (SELECT order_id FROM marketplace_vendor_sub_orders WHERE vendor_id = :vendorId) AND customer_id IS NOT NULL)" },
|
|
93
|
-
{ role: "customer", filter: "id = :customerId" },
|
|
94
|
-
],
|
|
95
|
-
measures: {
|
|
96
|
-
customerCount: { type: "count" },
|
|
97
|
-
newCustomers: { type: "count" },
|
|
98
|
-
returningCustomers: {
|
|
99
|
-
type: "count",
|
|
100
|
-
filter: "(SELECT COUNT(*) FROM orders WHERE orders.customer_id = customers.id) > 1",
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
dimensions: {
|
|
104
|
-
createdAt: { sql: "created_at", type: "time" },
|
|
105
|
-
customerGroup: { sql: "COALESCE(metadata->>'customerGroup', 'default')", type: "string" },
|
|
106
|
-
},
|
|
107
|
-
segments: {
|
|
108
|
-
returning: {
|
|
109
|
-
sql: "(SELECT COUNT(*) FROM orders WHERE orders.customer_id = customers.id) > 1",
|
|
110
|
-
},
|
|
111
|
-
},
|
|
112
|
-
};
|
|
113
|
-
export const BUILTIN_ANALYTICS_MODELS = [
|
|
114
|
-
ORDERS_MODEL,
|
|
115
|
-
ORDER_LINE_ITEMS_MODEL,
|
|
116
|
-
INVENTORY_MODEL,
|
|
117
|
-
CUSTOMERS_MODEL,
|
|
118
|
-
];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/analytics/repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAElC,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AnalyticsService — thin delegation layer over AnalyticsAdapter.
|
|
3
|
-
*
|
|
4
|
-
* The service manages plugin model registration, custom schema loading,
|
|
5
|
-
* and delegates all query execution to the configured adapter
|
|
6
|
-
* (DrizzleAnalyticsAdapter — always on, built into core).
|
|
7
|
-
*/
|
|
8
|
-
import type { CommerceConfig } from "../../config/types.js";
|
|
9
|
-
import { type Result } from "../../kernel/result.js";
|
|
10
|
-
import type { AnalyticsAdapter, AnalyticsMeta, AnalyticsQueryParams, AnalyticsQueryResult, AnalyticsScope } from "./types.js";
|
|
11
|
-
export type { AnalyticsTimeDimension, AnalyticsFilter, AnalyticsQueryParams, AnalyticsModelDefinition, AnalyticsMeta, } from "./types.js";
|
|
12
|
-
export interface AnalyticsServiceDeps {
|
|
13
|
-
adapter: AnalyticsAdapter;
|
|
14
|
-
config: CommerceConfig;
|
|
15
|
-
}
|
|
16
|
-
export declare class AnalyticsService {
|
|
17
|
-
private deps;
|
|
18
|
-
private pluginModels;
|
|
19
|
-
private customSchemaModels;
|
|
20
|
-
private customModelsLoaded;
|
|
21
|
-
constructor(deps: AnalyticsServiceDeps);
|
|
22
|
-
/**
|
|
23
|
-
* Register a plugin-contributed analytics model.
|
|
24
|
-
*
|
|
25
|
-
* If the model includes a `table` field and structured measures/dimensions,
|
|
26
|
-
* it is also registered as an AnalyticsModel on the adapter for SQL queries.
|
|
27
|
-
* Otherwise, it appears in getMeta() but queries return zero-value rows.
|
|
28
|
-
*/
|
|
29
|
-
registerModel(model: unknown): void;
|
|
30
|
-
/**
|
|
31
|
-
* Query analytics with scope-based filtering.
|
|
32
|
-
* Scope is REQUIRED — use buildAnalyticsScope(actor) to construct it.
|
|
33
|
-
*/
|
|
34
|
-
query(params: AnalyticsQueryParams, scope: AnalyticsScope): Promise<Result<AnalyticsQueryResult>>;
|
|
35
|
-
getDashboard(name: string, scope: AnalyticsScope): Promise<Result<AnalyticsQueryResult>>;
|
|
36
|
-
getMeta(): Promise<Result<AnalyticsMeta>>;
|
|
37
|
-
meta(): Promise<Result<{
|
|
38
|
-
measures: string[];
|
|
39
|
-
dimensions: string[];
|
|
40
|
-
segments: string[];
|
|
41
|
-
}>>;
|
|
42
|
-
private tryRegisterModel;
|
|
43
|
-
private ensureCustomSchemaModelsLoaded;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/analytics/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EAGb,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,qBAAa,gBAAgB;IAKf,OAAO,CAAC,IAAI;IAJxB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,kBAAkB,CAAS;gBAEf,IAAI,EAAE,oBAAoB;IAE9C;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAiCnC;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAIjG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IA4BxF,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAsBzC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAY/F,OAAO,CAAC,gBAAgB;YA0CV,8BAA8B;CAkD7C"}
|