@rovela-ai/sdk 0.19.8 → 0.21.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 (148) hide show
  1. package/dist/admin/api/index.d.ts +4 -2
  2. package/dist/admin/api/index.d.ts.map +1 -1
  3. package/dist/admin/api/index.js +4 -2
  4. package/dist/admin/api/index.js.map +1 -1
  5. package/dist/admin/api/integrations.d.ts +60 -0
  6. package/dist/admin/api/integrations.d.ts.map +1 -0
  7. package/dist/admin/api/integrations.js +337 -0
  8. package/dist/admin/api/integrations.js.map +1 -0
  9. package/dist/admin/api/orders.d.ts +49 -0
  10. package/dist/admin/api/orders.d.ts.map +1 -1
  11. package/dist/admin/api/orders.js +293 -30
  12. package/dist/admin/api/orders.js.map +1 -1
  13. package/dist/admin/api/settings.d.ts.map +1 -1
  14. package/dist/admin/api/settings.js +6 -1
  15. package/dist/admin/api/settings.js.map +1 -1
  16. package/dist/admin/api/shipping.d.ts +49 -0
  17. package/dist/admin/api/shipping.d.ts.map +1 -1
  18. package/dist/admin/api/shipping.js +144 -0
  19. package/dist/admin/api/shipping.js.map +1 -1
  20. package/dist/admin/components/AdminNav.d.ts.map +1 -1
  21. package/dist/admin/components/AdminNav.js +3 -1
  22. package/dist/admin/components/AdminNav.js.map +1 -1
  23. package/dist/admin/components/AdminSelect.d.ts.map +1 -1
  24. package/dist/admin/components/AdminSelect.js +2 -0
  25. package/dist/admin/components/AdminSelect.js.map +1 -1
  26. package/dist/admin/components/DiscountsManager.d.ts.map +1 -1
  27. package/dist/admin/components/DiscountsManager.js +2 -2
  28. package/dist/admin/components/DiscountsManager.js.map +1 -1
  29. package/dist/admin/components/IntegrationsManager.d.ts +5 -0
  30. package/dist/admin/components/IntegrationsManager.d.ts.map +1 -0
  31. package/dist/admin/components/IntegrationsManager.js +138 -0
  32. package/dist/admin/components/IntegrationsManager.js.map +1 -0
  33. package/dist/admin/components/OrderDetails.d.ts.map +1 -1
  34. package/dist/admin/components/OrderDetails.js +75 -3
  35. package/dist/admin/components/OrderDetails.js.map +1 -1
  36. package/dist/admin/components/ShippingSettings.d.ts.map +1 -1
  37. package/dist/admin/components/ShippingSettings.js +316 -137
  38. package/dist/admin/components/ShippingSettings.js.map +1 -1
  39. package/dist/admin/components/UsersTable.d.ts.map +1 -1
  40. package/dist/admin/components/UsersTable.js +2 -0
  41. package/dist/admin/components/UsersTable.js.map +1 -1
  42. package/dist/admin/components/VariantManager.d.ts.map +1 -1
  43. package/dist/admin/components/VariantManager.js +8 -2
  44. package/dist/admin/components/VariantManager.js.map +1 -1
  45. package/dist/admin/components/index.d.ts +2 -0
  46. package/dist/admin/components/index.d.ts.map +1 -1
  47. package/dist/admin/components/index.js +1 -0
  48. package/dist/admin/components/index.js.map +1 -1
  49. package/dist/admin/index.d.ts +1 -1
  50. package/dist/admin/index.d.ts.map +1 -1
  51. package/dist/admin/index.js +2 -0
  52. package/dist/admin/index.js.map +1 -1
  53. package/dist/admin/integrations/brevo-logo.d.ts +11 -0
  54. package/dist/admin/integrations/brevo-logo.d.ts.map +1 -0
  55. package/dist/admin/integrations/brevo-logo.js +11 -0
  56. package/dist/admin/integrations/brevo-logo.js.map +1 -0
  57. package/dist/admin/integrations/registry.d.ts +116 -0
  58. package/dist/admin/integrations/registry.d.ts.map +1 -0
  59. package/dist/admin/integrations/registry.js +389 -0
  60. package/dist/admin/integrations/registry.js.map +1 -0
  61. package/dist/admin/types.d.ts +13 -0
  62. package/dist/admin/types.d.ts.map +1 -1
  63. package/dist/checkout/api/colissimo-relays.d.ts +24 -0
  64. package/dist/checkout/api/colissimo-relays.d.ts.map +1 -0
  65. package/dist/checkout/api/colissimo-relays.js +60 -0
  66. package/dist/checkout/api/colissimo-relays.js.map +1 -0
  67. package/dist/checkout/api/manual.d.ts.map +1 -1
  68. package/dist/checkout/api/manual.js +21 -5
  69. package/dist/checkout/api/manual.js.map +1 -1
  70. package/dist/checkout/api/shipping.d.ts.map +1 -1
  71. package/dist/checkout/api/shipping.js +60 -82
  72. package/dist/checkout/api/shipping.js.map +1 -1
  73. package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -1
  74. package/dist/checkout/components/CheckoutFlow.js +141 -3
  75. package/dist/checkout/components/CheckoutFlow.js.map +1 -1
  76. package/dist/checkout/components/ShippingOptions.d.ts +8 -1
  77. package/dist/checkout/components/ShippingOptions.d.ts.map +1 -1
  78. package/dist/checkout/components/ShippingOptions.js +40 -11
  79. package/dist/checkout/components/ShippingOptions.js.map +1 -1
  80. package/dist/checkout/components/colissimo-logo.d.ts +12 -0
  81. package/dist/checkout/components/colissimo-logo.d.ts.map +1 -0
  82. package/dist/checkout/components/colissimo-logo.js +12 -0
  83. package/dist/checkout/components/colissimo-logo.js.map +1 -0
  84. package/dist/checkout/server/create-checkout-session.d.ts.map +1 -1
  85. package/dist/checkout/server/create-checkout-session.js +55 -13
  86. package/dist/checkout/server/create-checkout-session.js.map +1 -1
  87. package/dist/checkout/server/handle-webhook.js +7 -3
  88. package/dist/checkout/server/handle-webhook.js.map +1 -1
  89. package/dist/checkout/server/order-service.d.ts.map +1 -1
  90. package/dist/checkout/server/order-service.js +25 -0
  91. package/dist/checkout/server/order-service.js.map +1 -1
  92. package/dist/checkout/server/pricing.d.ts +20 -0
  93. package/dist/checkout/server/pricing.d.ts.map +1 -1
  94. package/dist/checkout/server/pricing.js +51 -5
  95. package/dist/checkout/server/pricing.js.map +1 -1
  96. package/dist/checkout/types.d.ts +57 -1
  97. package/dist/checkout/types.d.ts.map +1 -1
  98. package/dist/core/db/queries.d.ts +143 -21
  99. package/dist/core/db/queries.d.ts.map +1 -1
  100. package/dist/core/db/queries.js +228 -1
  101. package/dist/core/db/queries.js.map +1 -1
  102. package/dist/core/db/schema.d.ts +323 -5
  103. package/dist/core/db/schema.d.ts.map +1 -1
  104. package/dist/core/db/schema.js +70 -0
  105. package/dist/core/db/schema.js.map +1 -1
  106. package/dist/core/i18n/messages/en.d.ts.map +1 -1
  107. package/dist/core/i18n/messages/en.js +132 -0
  108. package/dist/core/i18n/messages/en.js.map +1 -1
  109. package/dist/core/i18n/messages/fr.d.ts.map +1 -1
  110. package/dist/core/i18n/messages/fr.js +132 -0
  111. package/dist/core/i18n/messages/fr.js.map +1 -1
  112. package/dist/products/api/products.d.ts +3 -1
  113. package/dist/products/api/products.d.ts.map +1 -1
  114. package/dist/products/api/products.js +29 -3
  115. package/dist/products/api/products.js.map +1 -1
  116. package/dist/products/components/VariantSelector.d.ts.map +1 -1
  117. package/dist/products/components/VariantSelector.js +4 -1
  118. package/dist/products/components/VariantSelector.js.map +1 -1
  119. package/dist/products/hooks/useProducts.d.ts +3 -1
  120. package/dist/products/hooks/useProducts.d.ts.map +1 -1
  121. package/dist/products/hooks/useProducts.js +4 -2
  122. package/dist/products/hooks/useProducts.js.map +1 -1
  123. package/dist/shipping/colissimo.d.ts +166 -0
  124. package/dist/shipping/colissimo.d.ts.map +1 -0
  125. package/dist/shipping/colissimo.js +424 -0
  126. package/dist/shipping/colissimo.js.map +1 -0
  127. package/dist/shipping/index.d.ts +4 -1
  128. package/dist/shipping/index.d.ts.map +1 -1
  129. package/dist/shipping/index.js +3 -1
  130. package/dist/shipping/index.js.map +1 -1
  131. package/docs/changelog/epoch-07-shipping-carriers.md +125 -0
  132. package/docs/changelog/epoch-08-integrations.md +125 -0
  133. package/package.json +6 -1
  134. package/templates/store-template/.claude/skills/build-feature/SKILL.md +19 -0
  135. package/templates/store-template/.claude/skills/manage-products/SKILL.md +1 -1
  136. package/templates/store-template/app/admin/(dashboard)/integrations/page.tsx +17 -0
  137. package/templates/store-template/app/api/admin/integrations/route.ts +9 -0
  138. package/templates/store-template/app/api/admin/orders/[id]/colissimo-defaults/route.ts +6 -0
  139. package/templates/store-template/app/api/admin/orders/[id]/label/route.ts +6 -0
  140. package/templates/store-template/app/api/admin/orders/[id]/ship-with-colissimo/route.ts +6 -0
  141. package/templates/store-template/app/api/admin/shipping/colissimo/route.ts +10 -0
  142. package/templates/store-template/app/api/checkout/colissimo-relays/route.ts +4 -0
  143. package/templates/store-template/app/faq/page.tsx +42 -56
  144. package/templates/store-template/app/privacy/page.tsx +65 -105
  145. package/templates/store-template/app/products/[slug]/ProductDetailClient.tsx +6 -3
  146. package/templates/store-template/app/products/page.tsx +63 -1
  147. package/templates/store-template/app/terms/page.tsx +70 -198
  148. package/templates/store-template/package.json +1 -1
@@ -87,7 +87,7 @@ export { POST as bulkProducts } from './products-bulk';
87
87
  export { GET as getProductMetrics } from './products-stats';
88
88
  export { GET as getSetupGuide, POST as markSetupTask, } from './setup-guide';
89
89
  export type { SetupTaskId, SetupTier, SetupTask, SetupGuideResponse } from './setup-guide';
90
- export { GET as getOrders, getOrder, PUT as updateOrder, getShippoRatesForOrder, shipWithShippo, bulkUpdateOrders, } from './orders';
90
+ export { GET as getOrders, getOrder, PUT as updateOrder, getShippoRatesForOrder, shipWithShippo, getColissimoDefaults, shipWithColissimo, downloadOrderLabel, bulkUpdateOrders, } from './orders';
91
91
  export { POST as processRefund } from './refund';
92
92
  export { APPROVE_POST as approveReturn, REJECT_POST as rejectReturn } from './return';
93
93
  export { GET as getStats } from './stats';
@@ -106,8 +106,10 @@ export type { AdminListItem } from './users';
106
106
  export { GET as validateAdminInviteHandler, POST as acceptAdminInviteHandler, } from './accept-invite';
107
107
  export { GET as getMe, PATCH as updateMe, PATCH_PASSWORD as updateMyPassword, } from './me';
108
108
  export { GET as getSettings, PUT as updateSettings } from './settings';
109
+ export { getIntegrations, saveIntegration } from './integrations';
110
+ export type { IntegrationState, IntegrationFieldState } from './integrations';
109
111
  export { GET as getStripeStatus } from './stripe-status';
110
112
  export { getCarriers as getShippingCarriers, createCarrier as createShippingCarrier, getCarrier as getShippingCarrier, updateCarrier as updateShippingCarrier, deleteCarrier as deleteShippingCarrier, } from './shipping';
111
- export { getZones as getShippingZones, createZone as createShippingZone, getZone as getShippingZone, updateZone as updateShippingZone, deleteZone as deleteShippingZone, createRate as createShippingRate, updateRate as updateShippingRate, deleteRate as deleteShippingRate, validateShippoApiKey, saveShippoApiKey, deleteShippoApiKey, } from './shipping';
113
+ export { getZones as getShippingZones, createZone as createShippingZone, getZone as getShippingZone, updateZone as updateShippingZone, deleteZone as deleteShippingZone, createRate as createShippingRate, updateRate as updateShippingRate, deleteRate as deleteShippingRate, validateShippoApiKey, saveShippoApiKey, deleteShippoApiKey, getColissimoConfig, saveColissimoSettings, deleteColissimoSettings, } from './shipping';
112
114
  export { getTaxZones, createTaxZone, getTaxZone, updateTaxZone, deleteTaxZone, } from './tax-zones';
113
115
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"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"}
@@ -91,7 +91,7 @@ export { GET as getProductMetrics } from './products-stats';
91
91
  // Setup guide — orchestrator for the new-store onboarding card on /admin
92
92
  export { GET as getSetupGuide, POST as markSetupTask, } from './setup-guide';
93
93
  // Orders
94
- export { GET as getOrders, getOrder, PUT as updateOrder, getShippoRatesForOrder, shipWithShippo, bulkUpdateOrders, } from './orders';
94
+ export { GET as getOrders, getOrder, PUT as updateOrder, getShippoRatesForOrder, shipWithShippo, getColissimoDefaults, shipWithColissimo, downloadOrderLabel, bulkUpdateOrders, } from './orders';
95
95
  // Refund
96
96
  export { POST as processRefund } from './refund';
97
97
  // Return (approve/reject return requests)
@@ -127,12 +127,14 @@ export { GET as validateAdminInviteHandler, POST as acceptAdminInviteHandler, }
127
127
  export { GET as getMe, PATCH as updateMe, PATCH_PASSWORD as updateMyPassword, } from './me';
128
128
  // Settings
129
129
  export { GET as getSettings, PUT as updateSettings } from './settings';
130
+ // Integrations (/admin/integrations — external-service credentials)
131
+ export { getIntegrations, saveIntegration } from './integrations';
130
132
  // Stripe Status
131
133
  export { GET as getStripeStatus } from './stripe-status';
132
134
  // Shipping Carriers
133
135
  export { getCarriers as getShippingCarriers, createCarrier as createShippingCarrier, getCarrier as getShippingCarrier, updateCarrier as updateShippingCarrier, deleteCarrier as deleteShippingCarrier, } from './shipping';
134
136
  // Shipping Zones & Rates
135
- export { getZones as getShippingZones, createZone as createShippingZone, getZone as getShippingZone, updateZone as updateShippingZone, deleteZone as deleteShippingZone, createRate as createShippingRate, updateRate as updateShippingRate, deleteRate as deleteShippingRate, validateShippoApiKey, saveShippoApiKey, deleteShippoApiKey, } from './shipping';
137
+ export { getZones as getShippingZones, createZone as createShippingZone, getZone as getShippingZone, updateZone as updateShippingZone, deleteZone as deleteShippingZone, createRate as createShippingRate, updateRate as updateShippingRate, deleteRate as deleteShippingRate, validateShippoApiKey, saveShippoApiKey, deleteShippoApiKey, getColissimoConfig, saveColissimoSettings, deleteColissimoSettings, } from './shipping';
136
138
  // Tax Zones
137
139
  export { getTaxZones, createTaxZone, getTaxZone, updateTaxZone, deleteTaxZone, } from './tax-zones';
138
140
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @rovela/sdk/admin/api/integrations
3
+ *
4
+ * API handlers behind /admin/integrations — the one place a merchant manages
5
+ * credentials for external services (see admin/integrations/registry.ts for
6
+ * the registry + presence semantics).
7
+ *
8
+ * SECRETS CONTRACT (do not regress):
9
+ * - GET returns public values verbatim; secret fields come back as
10
+ * `{ hasValue, masked }` only — a secret value NEVER reaches the browser.
11
+ * - PUT is write-only for secrets: an omitted/empty secret keeps the stored
12
+ * value. Clearing a credential is not a thing here — disable the
13
+ * integration instead (removal is a Features Store action).
14
+ * - Providers with a cheap verification endpoint are validated BEFORE
15
+ * persisting — a failing key is never saved.
16
+ *
17
+ * Usage (template):
18
+ * ```typescript
19
+ * // app/api/admin/integrations/route.ts
20
+ * export { getIntegrations as GET, saveIntegration as PUT } from '@rovela-ai/sdk/admin/api'
21
+ * ```
22
+ */
23
+ import { NextRequest, NextResponse } from 'next/server';
24
+ import { type IntegrationField } from '../integrations/registry';
25
+ export interface IntegrationFieldState {
26
+ id: string;
27
+ label: string;
28
+ kind: IntegrationField['kind'];
29
+ required?: boolean;
30
+ placeholder?: string;
31
+ help?: string;
32
+ options?: Array<{
33
+ value: string;
34
+ label: string;
35
+ }>;
36
+ /** Public fields only. */
37
+ value?: string | number | boolean | null;
38
+ /** Secret fields only. */
39
+ hasValue?: boolean;
40
+ masked?: string | null;
41
+ }
42
+ export interface IntegrationState {
43
+ key: string;
44
+ label: string;
45
+ description: string;
46
+ source: 'registry' | 'custom';
47
+ docsUrl?: string;
48
+ /** Brand icon data URI (card tile). */
49
+ logo?: string;
50
+ /** Full wordmark data URI (configure-modal header). */
51
+ logoFull?: string;
52
+ /** All required credentials present. */
53
+ connected: boolean;
54
+ /** Toggle state — null when the integration has no on/off switch. */
55
+ enabled: boolean | null;
56
+ fields: IntegrationFieldState[];
57
+ }
58
+ export declare function getIntegrations(): Promise<NextResponse>;
59
+ export declare function saveIntegration(request: NextRequest): Promise<NextResponse>;
60
+ //# sourceMappingURL=integrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../src/admin/api/integrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAIvD,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAA;AAMjC,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;IACxC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAA;IAClB,qEAAqE;IACrE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,qBAAqB,EAAE,CAAA;CAChC;AAiLD,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAU7D;AAMD,wBAAsB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAyJjF"}
@@ -0,0 +1,337 @@
1
+ /**
2
+ * @rovela/sdk/admin/api/integrations
3
+ *
4
+ * API handlers behind /admin/integrations — the one place a merchant manages
5
+ * credentials for external services (see admin/integrations/registry.ts for
6
+ * the registry + presence semantics).
7
+ *
8
+ * SECRETS CONTRACT (do not regress):
9
+ * - GET returns public values verbatim; secret fields come back as
10
+ * `{ hasValue, masked }` only — a secret value NEVER reaches the browser.
11
+ * - PUT is write-only for secrets: an omitted/empty secret keeps the stored
12
+ * value. Clearing a credential is not a thing here — disable the
13
+ * integration instead (removal is a Features Store action).
14
+ * - Providers with a cheap verification endpoint are validated BEFORE
15
+ * persisting — a failing key is never saved.
16
+ *
17
+ * Usage (template):
18
+ * ```typescript
19
+ * // app/api/admin/integrations/route.ts
20
+ * export { getIntegrations as GET, saveIntegration as PUT } from '@rovela-ai/sdk/admin/api'
21
+ * ```
22
+ */
23
+ import { NextResponse } from 'next/server';
24
+ import { sql } from 'drizzle-orm';
25
+ import { requireAdmin } from '../server/admin-session';
26
+ import { getDb } from '../../core/db/client';
27
+ import { INTEGRATION_REGISTRY, findIntegrationDef, sanitizeCustomDescriptors, descriptorToDef, } from '../integrations/registry';
28
+ // =============================================================================
29
+ // Self-heal — the descriptor column (values live in their own columns)
30
+ // =============================================================================
31
+ let customColumnEnsured = false;
32
+ async function ensureCustomIntegrationsColumn() {
33
+ if (customColumnEnsured)
34
+ return;
35
+ const db = getDb();
36
+ await db.execute(sql `
37
+ ALTER TABLE store_settings
38
+ ADD COLUMN IF NOT EXISTS custom_integrations jsonb NOT NULL DEFAULT '[]'::jsonb
39
+ `);
40
+ customColumnEnsured = true;
41
+ }
42
+ function getPath(obj, path) {
43
+ return path
44
+ .split('.')
45
+ .reduce((acc, k) => (acc && typeof acc === 'object' ? acc[k] : undefined), obj);
46
+ }
47
+ function setPath(obj, path, value) {
48
+ const parts = path.split('.');
49
+ let cur = obj;
50
+ for (let i = 0; i < parts.length - 1; i++) {
51
+ const k = parts[i];
52
+ if (!cur[k] || typeof cur[k] !== 'object')
53
+ cur[k] = {};
54
+ cur = cur[k];
55
+ }
56
+ const last = parts[parts.length - 1];
57
+ if (value === undefined || value === null || value === '')
58
+ delete cur[last];
59
+ else
60
+ cur[last] = value;
61
+ }
62
+ function maskSecret(value) {
63
+ const s = typeof value === 'string' ? value : '';
64
+ if (!s)
65
+ return { hasValue: false, masked: null };
66
+ return { hasValue: true, masked: s.length >= 8 ? `…${s.slice(-4)}` : '••••' };
67
+ }
68
+ /** Cached per-process store_settings column list (additive schema — staleness heals on redeploy or first ALTER). */
69
+ let columnsCache = null;
70
+ async function getSettingsColumns(force = false) {
71
+ if (columnsCache && !force)
72
+ return columnsCache;
73
+ const db = getDb();
74
+ const res = await db.execute(sql `
75
+ SELECT column_name FROM information_schema.columns WHERE table_name = 'store_settings'
76
+ `);
77
+ columnsCache = new Set(res.rows.map((r) => r.column_name));
78
+ return columnsCache;
79
+ }
80
+ function columnsForDef(def) {
81
+ if (def.storage.kind !== 'columns')
82
+ return [];
83
+ const cols = def.fields.map((f) => f.id);
84
+ if (def.enabledColumn)
85
+ cols.push(def.enabledColumn);
86
+ return cols;
87
+ }
88
+ /** Read the single store_settings row, selecting only columns that exist. */
89
+ async function readSettingsRow(wanted, existing) {
90
+ const cols = [...new Set(wanted)].filter((c) => existing.has(c));
91
+ if (cols.length === 0)
92
+ return {};
93
+ const db = getDb();
94
+ const res = await db.execute(sql `SELECT ${sql.join(cols.map((c) => sql.identifier(c)), sql `, `)} FROM store_settings LIMIT 1`);
95
+ return res.rows[0] ?? null;
96
+ }
97
+ function buildFieldStates(def, row, analytics) {
98
+ return def.fields.map((f) => {
99
+ const raw = def.storage.kind === 'columns'
100
+ ? row[f.id]
101
+ : getPath(analytics?.[def.storage.path], f.id);
102
+ const base = {
103
+ id: f.id,
104
+ label: f.label,
105
+ kind: f.kind,
106
+ required: f.required,
107
+ placeholder: f.placeholder,
108
+ help: f.help,
109
+ options: f.options,
110
+ };
111
+ if (f.kind === 'secret')
112
+ return { ...base, ...maskSecret(raw) };
113
+ if (f.kind === 'toggle')
114
+ return { ...base, value: raw === true };
115
+ if (f.kind === 'number')
116
+ return { ...base, value: typeof raw === 'number' ? raw : raw != null ? Number(raw) : null };
117
+ return { ...base, value: typeof raw === 'string' ? raw : raw != null ? String(raw) : null };
118
+ });
119
+ }
120
+ function buildState(def, source, row, analytics, existing) {
121
+ // Presence: the entry renders only when its storage is detectable here.
122
+ if (def.storage.kind === 'columns') {
123
+ if (source === 'registry' && !def.fields.some((f) => existing.has(f.id)))
124
+ return null;
125
+ }
126
+ else {
127
+ const slot = analytics?.[def.storage.path];
128
+ if (!slot || typeof slot !== 'object')
129
+ return null;
130
+ }
131
+ const fields = buildFieldStates(def, row, analytics);
132
+ const connected = def.fields
133
+ .filter((f) => f.required)
134
+ .every((f) => {
135
+ const s = fields.find((x) => x.id === f.id);
136
+ return f.kind === 'secret' ? s.hasValue === true : s.value != null && s.value !== '';
137
+ });
138
+ const enabled = def.storage.kind === 'columns' && def.enabledColumn
139
+ ? row[def.enabledColumn] === true
140
+ : null;
141
+ return {
142
+ key: def.key,
143
+ label: def.label,
144
+ description: def.description,
145
+ source,
146
+ docsUrl: def.docsUrl,
147
+ logo: def.logo,
148
+ logoFull: def.logoFull,
149
+ connected,
150
+ enabled,
151
+ fields,
152
+ };
153
+ }
154
+ async function loadStates() {
155
+ await ensureCustomIntegrationsColumn();
156
+ const existing = await getSettingsColumns(true);
157
+ const descriptorsWanted = ['custom_integrations', ...(existing.has('analytics') ? ['analytics'] : [])];
158
+ const registryColumns = INTEGRATION_REGISTRY.flatMap(columnsForDef);
159
+ const firstPass = await readSettingsRow([...descriptorsWanted, ...registryColumns], existing);
160
+ if (firstPass === null)
161
+ return { states: [], row: {}, analytics: null, existing };
162
+ const analytics = firstPass.analytics && typeof firstPass.analytics === 'object' ? firstPass.analytics : null;
163
+ const descriptors = sanitizeCustomDescriptors(firstPass.custom_integrations);
164
+ // Custom descriptor values may live in columns outside the registry set.
165
+ const customCols = descriptors.flatMap((d) => d.fields.map((f) => f.id)).filter((c) => existing.has(c));
166
+ const row = customCols.length > 0
167
+ ? { ...firstPass, ...((await readSettingsRow(customCols, existing)) ?? {}) }
168
+ : firstPass;
169
+ const states = [];
170
+ for (const def of INTEGRATION_REGISTRY) {
171
+ const s = buildState(def, 'registry', row, analytics, existing);
172
+ if (s)
173
+ states.push(s);
174
+ }
175
+ for (const d of descriptors) {
176
+ const s = buildState(descriptorToDef(d), 'custom', row, analytics, existing);
177
+ if (s)
178
+ states.push(s);
179
+ }
180
+ return { states, row, analytics, existing };
181
+ }
182
+ // =============================================================================
183
+ // GET /api/admin/integrations
184
+ // =============================================================================
185
+ export async function getIntegrations() {
186
+ const guard = await requireAdmin({ permission: 'settings.read' });
187
+ if (!guard.ok)
188
+ return guard.response;
189
+ try {
190
+ const { states } = await loadStates();
191
+ return NextResponse.json({ data: { integrations: states } });
192
+ }
193
+ catch (error) {
194
+ console.error('[Admin Integrations] GET failed:', error);
195
+ return NextResponse.json({ error: 'Failed to load integrations' }, { status: 500 });
196
+ }
197
+ }
198
+ // =============================================================================
199
+ // PUT /api/admin/integrations { key, values }
200
+ // =============================================================================
201
+ export async function saveIntegration(request) {
202
+ const guard = await requireAdmin({ permission: 'settings.write' });
203
+ if (!guard.ok)
204
+ return guard.response;
205
+ try {
206
+ const body = (await request.json().catch(() => null));
207
+ if (!body?.key || !body.values || typeof body.values !== 'object') {
208
+ return NextResponse.json({ error: 'Missing key or values' }, { status: 400 });
209
+ }
210
+ await ensureCustomIntegrationsColumn();
211
+ const existing = await getSettingsColumns(true);
212
+ // Resolve the definition — registry first, else a sanitized descriptor.
213
+ let def = findIntegrationDef(body.key);
214
+ let source = 'registry';
215
+ if (!def) {
216
+ const row = await readSettingsRow(['custom_integrations'], existing);
217
+ const descriptor = sanitizeCustomDescriptors(row?.custom_integrations).find((d) => d.key === body.key);
218
+ if (!descriptor) {
219
+ return NextResponse.json({ error: 'Unknown integration' }, { status: 404 });
220
+ }
221
+ def = descriptorToDef(descriptor);
222
+ source = 'custom';
223
+ }
224
+ // ---- Coerce incoming values against the definition (allowlist). -------
225
+ // The client sends the on/off toggle as `__enabled` (it never learns the
226
+ // column name); map it onto the definition's enabledColumn.
227
+ const editableFields = [...def.fields];
228
+ if (def.storage.kind === 'columns' && def.enabledColumn) {
229
+ editableFields.push({ id: def.enabledColumn, label: 'Enabled', kind: 'toggle' });
230
+ if ('__enabled' in body.values) {
231
+ body.values[def.enabledColumn] = body.values.__enabled === true;
232
+ }
233
+ }
234
+ const updates = new Map();
235
+ for (const f of editableFields) {
236
+ if (!(f.id in body.values))
237
+ continue;
238
+ const raw = body.values[f.id];
239
+ switch (f.kind) {
240
+ case 'secret': {
241
+ const s = typeof raw === 'string' ? raw.trim() : '';
242
+ if (s)
243
+ updates.set(f.id, s); // empty = keep stored
244
+ break;
245
+ }
246
+ case 'number': {
247
+ if (raw === null || raw === '' || raw === undefined)
248
+ updates.set(f.id, null);
249
+ else {
250
+ const n = Number(raw);
251
+ if (!Number.isFinite(n)) {
252
+ return NextResponse.json({ error: `${f.label} must be a number` }, { status: 400 });
253
+ }
254
+ updates.set(f.id, Math.trunc(n));
255
+ }
256
+ break;
257
+ }
258
+ case 'toggle':
259
+ updates.set(f.id, raw === true);
260
+ break;
261
+ case 'select': {
262
+ const s = typeof raw === 'string' ? raw : '';
263
+ if (s && f.options && !f.options.some((o) => o.value === s)) {
264
+ return NextResponse.json({ error: `Invalid value for ${f.label}` }, { status: 400 });
265
+ }
266
+ updates.set(f.id, s || null);
267
+ break;
268
+ }
269
+ default: {
270
+ const s = typeof raw === 'string' ? raw.trim() : '';
271
+ updates.set(f.id, s || null);
272
+ }
273
+ }
274
+ }
275
+ if (updates.size === 0) {
276
+ return NextResponse.json({ error: 'Nothing to save' }, { status: 400 });
277
+ }
278
+ const db = getDb();
279
+ if (def.storage.kind === 'columns') {
280
+ // Custom descriptors write to columns Claude Code ALTERed at install —
281
+ // verify each against the live schema (registry columns are our own
282
+ // constants but get the same check for uniformity).
283
+ for (const col of updates.keys()) {
284
+ if (!existing.has(col)) {
285
+ return NextResponse.json({ error: `Column ${col} does not exist on this store` }, { status: 400 });
286
+ }
287
+ }
288
+ // Merge stored + incoming for validation (secrets may be kept).
289
+ const stored = (await readSettingsRow(columnsForDef(def), existing)) ?? {};
290
+ const merged = { ...stored };
291
+ for (const [k, v] of updates)
292
+ merged[k] = v;
293
+ const credentialChanged = [...updates.keys()].some((k) => k !== def.enabledColumn);
294
+ const enablingOn = def.enabledColumn ? updates.get(def.enabledColumn) === true : false;
295
+ if (def.validate && (credentialChanged || enablingOn)) {
296
+ const message = await def.validate(merged);
297
+ if (message)
298
+ return NextResponse.json({ error: message }, { status: 400 });
299
+ }
300
+ await db.execute(sql `UPDATE store_settings SET ${sql.join([...updates].map(([col, val]) => sql `${sql.identifier(col)} = ${val}`), sql `, `)}`);
301
+ }
302
+ else {
303
+ // analytics-jsonb: merge the stored object with the incoming fields.
304
+ const path = def.storage.path;
305
+ await db.execute(sql `
306
+ ALTER TABLE store_settings ADD COLUMN IF NOT EXISTS analytics jsonb DEFAULT '{}'::jsonb
307
+ `);
308
+ const res = await db.execute(sql `SELECT analytics FROM store_settings LIMIT 1`);
309
+ const analytics = res.rows[0] && typeof res.rows[0].analytics === 'object'
310
+ ? res.rows[0].analytics
311
+ : {};
312
+ const slot = analytics?.[path] && typeof analytics[path] === 'object'
313
+ ? { ...analytics[path] }
314
+ : {};
315
+ for (const [k, v] of updates)
316
+ setPath(slot, k, v);
317
+ if (def.validate) {
318
+ const message = await def.validate(slot);
319
+ if (message)
320
+ return NextResponse.json({ error: message }, { status: 400 });
321
+ }
322
+ await db.execute(sql `
323
+ UPDATE store_settings
324
+ SET analytics = jsonb_set(COALESCE(analytics, '{}'::jsonb), ${`{${path}}`}::text[], ${JSON.stringify(slot)}::jsonb)
325
+ `);
326
+ }
327
+ // Return the fresh state so the UI updates masked displays in place.
328
+ const { states } = await loadStates();
329
+ const integration = states.find((s) => s.key === def.key) ?? null;
330
+ return NextResponse.json({ data: { saved: true, integration, source } });
331
+ }
332
+ catch (error) {
333
+ console.error('[Admin Integrations] PUT failed:', error);
334
+ return NextResponse.json({ error: 'Failed to save the integration' }, { status: 500 });
335
+ }
336
+ }
337
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../../src/admin/api/integrations.ts"],"names":[],"mappings":"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"}
@@ -116,4 +116,53 @@ export declare function shipWithShippo(request: NextRequest, { params }: {
116
116
  trackingNumber?: string;
117
117
  labelUrl?: string;
118
118
  } | AdminApiError>>;
119
+ /**
120
+ * GET /api/admin/orders/[id]/colissimo-defaults
121
+ *
122
+ * Pre-fill data for the "Ship with Colissimo" card: whether Colissimo is
123
+ * configured, the suggested parcel weight (sum of item weight metafields ×
124
+ * qty with the store default as fallback), and relay context. The card
125
+ * renders only when `enabled` is true.
126
+ */
127
+ export declare function getColissimoDefaults(_request: NextRequest, { params }: {
128
+ params: Promise<{
129
+ id: string;
130
+ }>;
131
+ }): Promise<NextResponse<Record<string, unknown> | AdminApiError>>;
132
+ /**
133
+ * POST /api/admin/orders/[id]/ship-with-colissimo
134
+ *
135
+ * Generate a Colissimo label for a paid order and mark it shipped.
136
+ * Mirrors shipWithShippo, with two Colissimo specifics: the label BYTES are
137
+ * persisted (Colissimo can't re-serve a label — regenerating mints a new
138
+ * parcel number) and served through the admin-gated label route, and relay
139
+ * orders route to the pickup-point product (A2P/BPR) with the point id.
140
+ *
141
+ * Body:
142
+ * - weightKg?: number (override; defaults to the computed suggestion)
143
+ * - signature?: boolean (home delivery only: DOS instead of DOM)
144
+ * - format?: 'PDF_A4_300dpi' | 'PDF_10x15_300dpi'
145
+ * - notifyCustomer?: boolean (default true)
146
+ */
147
+ export declare function shipWithColissimo(request: NextRequest, { params }: {
148
+ params: Promise<{
149
+ id: string;
150
+ }>;
151
+ }): Promise<NextResponse<{
152
+ success: boolean;
153
+ trackingNumber?: string;
154
+ labelUrl?: string;
155
+ carrier?: string;
156
+ } | AdminApiError>>;
157
+ /**
158
+ * GET /api/admin/orders/[id]/label
159
+ *
160
+ * Stream the stored carrier label (admin-gated — labels carry customer PII,
161
+ * they are never served from a public URL). orders.labelUrl points here.
162
+ */
163
+ export declare function downloadOrderLabel(_request: NextRequest, { params }: {
164
+ params: Promise<{
165
+ id: string;
166
+ }>;
167
+ }): Promise<NextResponse>;
119
168
  //# sourceMappingURL=orders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/admin/api/orders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAevD,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,UAAU,CAAA;AASzD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAehE;;;;;;;;;;;GAWG;AACH,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CACR,YAAY,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,aAAa,CAAC,CAChF,CAuDA;AAMD;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,WAAW,EACrB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CA0B1D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CA6E7E;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,WAAW,GACnB,OAAO,CACR,YAAY,CACV;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GAAG,aAAa,CACjF,CACF,CAmGA;AAwND;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,WAAW,EACrB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC;IAAE,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CAkFhE;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CAqGzG"}
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/admin/api/orders.ts"],"names":[],"mappings":"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"}