@porulle/core 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/auth/middleware.d.ts.map +1 -1
  2. package/dist/auth/middleware.js +26 -7
  3. package/dist/auth/setup.d.ts.map +1 -1
  4. package/dist/auth/setup.js +7 -5
  5. package/dist/config/defaults.d.ts.map +1 -1
  6. package/dist/config/defaults.js +2 -0
  7. package/dist/config/types.d.ts +9 -0
  8. package/dist/config/types.d.ts.map +1 -1
  9. package/dist/hooks/checkout-completion.d.ts.map +1 -1
  10. package/dist/hooks/checkout-completion.js +2 -2
  11. package/dist/hooks/checkout.d.ts.map +1 -1
  12. package/dist/hooks/checkout.js +1 -1
  13. package/dist/interfaces/rest/routes/admin/staff.d.ts.map +1 -1
  14. package/dist/interfaces/rest/routes/admin/staff.js +37 -3
  15. package/dist/interfaces/rest/routes/checkout.d.ts +9 -0
  16. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -1
  17. package/dist/interfaces/rest/routes/checkout.js +81 -22
  18. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -1
  19. package/dist/interfaces/rest/routes/inventory.js +13 -0
  20. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
  21. package/dist/interfaces/rest/routes/orders.js +13 -0
  22. package/dist/interfaces/rest/schemas/orders.js +2 -2
  23. package/dist/interfaces/rest/schemas/responses.d.ts +34 -0
  24. package/dist/interfaces/rest/schemas/responses.d.ts.map +1 -1
  25. package/dist/kernel/database/scoped-db.d.ts +2 -1
  26. package/dist/kernel/database/scoped-db.d.ts.map +1 -1
  27. package/dist/kernel/database/scoped-db.js +62 -1
  28. package/dist/kernel/plugin/manifest.d.ts +3 -0
  29. package/dist/kernel/plugin/manifest.d.ts.map +1 -1
  30. package/dist/modules/analytics/drizzle-adapter.d.ts.map +1 -1
  31. package/dist/modules/analytics/drizzle-adapter.js +16 -3
  32. package/dist/modules/cart/service.d.ts.map +1 -1
  33. package/dist/modules/cart/service.js +3 -2
  34. package/dist/modules/catalog/entity-service.d.ts.map +1 -1
  35. package/dist/modules/catalog/entity-service.js +34 -2
  36. package/dist/modules/customers/service.d.ts.map +1 -1
  37. package/dist/modules/customers/service.js +6 -0
  38. package/dist/modules/orders/schema.d.ts +17 -0
  39. package/dist/modules/orders/schema.d.ts.map +1 -1
  40. package/dist/modules/orders/schema.js +4 -0
  41. package/dist/modules/orders/service.d.ts +16 -2
  42. package/dist/modules/orders/service.d.ts.map +1 -1
  43. package/dist/modules/orders/service.js +223 -26
  44. package/dist/modules/orders/stale-order-cleanup.d.ts.map +1 -1
  45. package/dist/modules/orders/stale-order-cleanup.js +13 -1
  46. package/dist/modules/pricing/service.d.ts.map +1 -1
  47. package/dist/modules/pricing/service.js +5 -5
  48. package/dist/test-utils/create-test-config.d.ts.map +1 -1
  49. package/dist/test-utils/create-test-config.js +2 -0
  50. package/dist/test-utils/order-test-helpers.d.ts +12 -0
  51. package/dist/test-utils/order-test-helpers.d.ts.map +1 -0
  52. package/dist/test-utils/order-test-helpers.js +18 -0
  53. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -1
  54. package/dist/test-utils/rest-api-test-utils.js +1 -0
  55. package/dist/test-utils/test-actors.js +1 -1
  56. package/dist/testing.d.ts +1 -0
  57. package/dist/testing.d.ts.map +1 -1
  58. package/dist/testing.js +1 -0
  59. package/package.json +1 -1
  60. package/src/auth/middleware.ts +26 -7
  61. package/src/auth/setup.ts +10 -4
  62. package/src/config/defaults.ts +2 -0
  63. package/src/config/types.ts +9 -0
  64. package/src/hooks/checkout-completion.ts +22 -16
  65. package/src/hooks/checkout.ts +11 -8
  66. package/src/interfaces/rest/routes/admin/staff.ts +45 -3
  67. package/src/interfaces/rest/routes/checkout.ts +93 -28
  68. package/src/interfaces/rest/routes/inventory.ts +14 -0
  69. package/src/interfaces/rest/routes/orders.ts +11 -0
  70. package/src/interfaces/rest/schemas/orders.ts +2 -2
  71. package/src/kernel/database/scoped-db.ts +70 -1
  72. package/src/kernel/plugin/manifest.ts +3 -0
  73. package/src/modules/analytics/drizzle-adapter.ts +19 -3
  74. package/src/modules/cart/service.ts +3 -2
  75. package/src/modules/catalog/entity-service.ts +28 -1
  76. package/src/modules/customers/service.ts +6 -0
  77. package/src/modules/orders/schema.ts +4 -0
  78. package/src/modules/orders/service.ts +408 -64
  79. package/src/modules/orders/stale-order-cleanup.ts +18 -4
  80. package/src/modules/pricing/service.ts +5 -6
  81. package/src/test-utils/create-test-config.ts +2 -0
  82. package/src/test-utils/order-test-helpers.ts +26 -0
  83. package/src/test-utils/rest-api-test-utils.ts +1 -0
  84. package/src/test-utils/test-actors.ts +1 -1
  85. package/src/testing.ts +1 -0
@@ -64,6 +64,7 @@ export async function createTestConfig(
64
64
  provider: "postgresql",
65
65
  },
66
66
  auth: {
67
+ allowTestActor: true,
67
68
  defaultOrganizationId: "org_default",
68
69
  requireEmailVerification: false,
69
70
  apiKeys: { enabled: true, defaultPermissions: ["catalog:read"] },
@@ -81,6 +82,7 @@ export async function createTestConfig(
81
82
  "orders:create",
82
83
  "orders:read",
83
84
  "orders:update",
85
+ "orders:manage",
84
86
  "cart:create",
85
87
  "cart:update",
86
88
  "customers:update:self",
@@ -0,0 +1,26 @@
1
+ import { eq } from "drizzle-orm";
2
+ import { orders } from "../modules/orders/schema.js";
3
+ import type { Kernel } from "../runtime/kernel.js";
4
+ import type { DrizzleDatabase } from "../kernel/database/drizzle-db.js";
5
+
6
+ /**
7
+ * Mark an order as paid (captured) for tests.
8
+ *
9
+ * Refund and return flows require a paid order — a refund moves collected money,
10
+ * and the order primitive rejects refunds on unpaid/pending orders. There is no
11
+ * public "set captured amount" service (capture() needs a live payment intent),
12
+ * so tests set the column here through a single typed helper rather than
13
+ * scattering raw SQL / `as any` casts across test files.
14
+ */
15
+ export async function markOrderPaidForTest(
16
+ kernel: Kernel,
17
+ orderId: string,
18
+ amountCaptured: number,
19
+ paymentIntentId?: string,
20
+ ): Promise<void> {
21
+ const db = kernel.database.db as DrizzleDatabase;
22
+ await db
23
+ .update(orders)
24
+ .set({ amountCaptured, ...(paymentIntentId ? { paymentIntentId } : {}) })
25
+ .where(eq(orders.id, orderId));
26
+ }
@@ -163,6 +163,7 @@ export const testActor: Actor = {
163
163
  "orders:create",
164
164
  "orders:read",
165
165
  "orders:update",
166
+ "orders:manage",
166
167
  "cart:create",
167
168
  "cart:update",
168
169
  "cart:read",
@@ -32,7 +32,7 @@ export const testStaffActor: Actor = {
32
32
  role: "staff",
33
33
  permissions: [
34
34
  "catalog:read", "catalog:create", "catalog:update",
35
- "inventory:adjust", "orders:read", "orders:create", "orders:update",
35
+ "inventory:adjust", "orders:read", "orders:create", "orders:update", "orders:manage",
36
36
  ],
37
37
  };
38
38
 
package/src/testing.ts CHANGED
@@ -16,6 +16,7 @@ export {
16
16
  jsonHeaders,
17
17
  } from "./test-utils/test-actors.js";
18
18
  export { beforeHook, afterHook } from "./test-utils/typed-hooks.js";
19
+ export { markOrderPaidForTest } from "./test-utils/order-test-helpers.js";
19
20
 
20
21
  // Actor type re-export for plugin tests that build custom test actors.
21
22
  export type { Actor } from "./auth/types.js";