@actuate-media/plugin-commerce 0.0.11 → 0.0.12
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/CHANGELOG.md +111 -0
- package/README.md +28 -0
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/admin/CommerceDashboard.d.ts +1 -1
- package/dist/admin/CommerceDashboard.d.ts.map +1 -1
- package/dist/admin/CommerceDashboard.js +25 -9
- package/dist/admin/CommerceDashboard.js.map +1 -1
- package/dist/admin/DiscountManager.d.ts +4 -4
- package/dist/admin/DiscountManager.d.ts.map +1 -1
- package/dist/admin/DiscountManager.js +43 -19
- package/dist/admin/DiscountManager.js.map +1 -1
- package/dist/admin/OrderDetail.d.ts +4 -4
- package/dist/admin/OrderDetail.d.ts.map +1 -1
- package/dist/admin/OrderDetail.js +45 -9
- package/dist/admin/OrderDetail.js.map +1 -1
- package/dist/admin/OrderList.d.ts +2 -2
- package/dist/admin/OrderList.d.ts.map +1 -1
- package/dist/admin/OrderList.js +14 -14
- package/dist/admin/OrderList.js.map +1 -1
- package/dist/admin/ProductEdit.d.ts +3 -3
- package/dist/admin/ProductEdit.d.ts.map +1 -1
- package/dist/admin/ProductEdit.js +23 -13
- package/dist/admin/ProductEdit.js.map +1 -1
- package/dist/admin/ProductList.d.ts +3 -3
- package/dist/admin/ProductList.d.ts.map +1 -1
- package/dist/admin/ProductList.js +20 -10
- package/dist/admin/ProductList.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +11 -10
- package/dist/client.js.map +1 -1
- package/dist/collections.d.ts +1 -1
- package/dist/collections.d.ts.map +1 -1
- package/dist/collections.js +199 -205
- package/dist/collections.js.map +1 -1
- package/dist/fields.d.ts +1 -1
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js.map +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +8 -8
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -14
- package/dist/index.js.map +1 -1
- package/dist/stripe/checkout.d.ts.map +1 -1
- package/dist/stripe/checkout.js +7 -9
- package/dist/stripe/checkout.js.map +1 -1
- package/dist/stripe/customer.d.ts.map +1 -1
- package/dist/stripe/customer.js.map +1 -1
- package/dist/stripe/products.d.ts.map +1 -1
- package/dist/stripe/products.js.map +1 -1
- package/dist/stripe/webhooks.d.ts.map +1 -1
- package/dist/stripe/webhooks.js +13 -13
- package/dist/stripe/webhooks.js.map +1 -1
- package/package.json +5 -3
package/dist/fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAoC,EAAE,
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAoC,EAAE,CAAA"}
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;uBAGG,OAAO,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;uBAGG,OAAO,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC;GA+BrD,CAAA"}
|
package/dist/hooks.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export const commerceHooks = [
|
|
2
2
|
{
|
|
3
|
-
event:
|
|
3
|
+
event: 'afterCreate:orders',
|
|
4
4
|
handler: async (...args) => {
|
|
5
5
|
const [order] = args;
|
|
6
|
-
const orderId = order?.[
|
|
7
|
-
const total = order?.[
|
|
8
|
-
const currency = order?.[
|
|
6
|
+
const orderId = order?.['id'];
|
|
7
|
+
const total = order?.['total'];
|
|
8
|
+
const currency = order?.['currency'] ?? 'USD';
|
|
9
9
|
if (!orderId || total === undefined)
|
|
10
10
|
return;
|
|
11
11
|
// TODO: Integrate with Stripe payment intent creation
|
|
@@ -13,12 +13,12 @@ export const commerceHooks = [
|
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
event:
|
|
16
|
+
event: 'afterUpdate:products',
|
|
17
17
|
handler: async (...args) => {
|
|
18
18
|
const [product] = args;
|
|
19
|
-
const name = product?.[
|
|
20
|
-
const trackInventory = product?.[
|
|
21
|
-
const inventoryCount = product?.[
|
|
19
|
+
const name = product?.['name'];
|
|
20
|
+
const trackInventory = product?.['trackInventory'];
|
|
21
|
+
const inventoryCount = product?.['inventoryCount'];
|
|
22
22
|
if (!trackInventory || inventoryCount === undefined)
|
|
23
23
|
return;
|
|
24
24
|
const LOW_STOCK_THRESHOLD = 5;
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,IAAe,EAAiB,EAAE;YACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAiC,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,IAAe,EAAiB,EAAE;YACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAiC,CAAA;YACjD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,IAAI,CAAuB,CAAA;YACnD,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,OAAO,CAAuB,CAAA;YACpD,MAAM,QAAQ,GAAI,KAAK,EAAE,CAAC,UAAU,CAAY,IAAI,KAAK,CAAA;YAEzD,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAM;YAE3C,sDAAsD;YACtD,OAAO,CAAC,IAAI,CAAC,4BAA4B,OAAO,gBAAgB,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAA;QACtF,CAAC;KACF;IACD;QACE,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,KAAK,EAAE,GAAG,IAAe,EAAiB,EAAE;YACnD,MAAM,CAAC,OAAO,CAAC,GAAG,IAAiC,CAAA;YACnD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,CAAuB,CAAA;YACpD,MAAM,cAAc,GAAG,OAAO,EAAE,CAAC,gBAAgB,CAAwB,CAAA;YACzE,MAAM,cAAc,GAAG,OAAO,EAAE,CAAC,gBAAgB,CAAuB,CAAA;YAExE,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS;gBAAE,OAAM;YAE3D,MAAM,mBAAmB,GAAG,CAAC,CAAA;YAC7B,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;gBAC1C,qDAAqD;gBACrD,OAAO,CAAC,IAAI,CACV,gCAAgC,IAAI,SAAS,cAAc,oBAAoB,CAChF,CAAA;YACH,CAAC;QACH,CAAC;KACF;CACF,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FieldDefinition, CollectionDefinition } from
|
|
1
|
+
import type { FieldDefinition, CollectionDefinition } from '@actuate-media/cms-core';
|
|
2
2
|
export interface CommercePluginConfig {
|
|
3
3
|
stripe?: {
|
|
4
4
|
secretKey: string;
|
|
@@ -29,9 +29,9 @@ interface ActuatePlugin {
|
|
|
29
29
|
/** Creates the Actuate Commerce plugin with optional Stripe, tax, and shipping configuration. */
|
|
30
30
|
export declare function commercePlugin(config?: CommercePluginConfig): ActuatePlugin;
|
|
31
31
|
export type { CommercePluginConfig as CommerceConfig };
|
|
32
|
-
export { commerceFields } from
|
|
33
|
-
export { commerceCollections } from
|
|
34
|
-
export { commerceHooks } from
|
|
35
|
-
export { createCommerceClient } from
|
|
36
|
-
export type { CommerceClient } from
|
|
32
|
+
export { commerceFields } from './fields.js';
|
|
33
|
+
export { commerceCollections } from './collections.js';
|
|
34
|
+
export { commerceHooks } from './hooks.js';
|
|
35
|
+
export { createCommerceClient } from './client.js';
|
|
36
|
+
export type { CommerceClient } from './client.js';
|
|
37
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAKpF,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,GAAG,CAAC,EAAE;QACJ,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;CACF;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IAClD,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;KACtD,CAAC,CAAA;CACH;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,MAAM,GAAE,oBAAyB,GAAG,aAAa,CAiB/E;AAED,YAAY,EAAE,oBAAoB,IAAI,cAAc,EAAE,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { commerceFields } from
|
|
2
|
-
import { commerceCollections } from
|
|
3
|
-
import { commerceHooks } from
|
|
1
|
+
import { commerceFields } from './fields.js';
|
|
2
|
+
import { commerceCollections } from './collections.js';
|
|
3
|
+
import { commerceHooks } from './hooks.js';
|
|
4
4
|
/** Creates the Actuate Commerce plugin with optional Stripe, tax, and shipping configuration. */
|
|
5
5
|
export function commercePlugin(config = {}) {
|
|
6
6
|
return {
|
|
7
|
-
name:
|
|
7
|
+
name: 'commerce',
|
|
8
8
|
fields: commerceFields,
|
|
9
9
|
collections: commerceCollections,
|
|
10
10
|
adminNavItems: [
|
|
11
|
-
{ label:
|
|
12
|
-
{ label:
|
|
13
|
-
{ label:
|
|
11
|
+
{ label: 'Products', icon: 'package', path: '/commerce/products' },
|
|
12
|
+
{ label: 'Orders', icon: 'shopping-cart', path: '/commerce/orders' },
|
|
13
|
+
{ label: 'Discounts', icon: 'percent', path: '/commerce/discounts' },
|
|
14
14
|
{
|
|
15
|
-
label:
|
|
16
|
-
icon:
|
|
17
|
-
path:
|
|
15
|
+
label: 'Commerce Dashboard',
|
|
16
|
+
icon: 'bar-chart',
|
|
17
|
+
path: '/commerce/dashboard',
|
|
18
18
|
},
|
|
19
19
|
],
|
|
20
20
|
hooks: commerceHooks,
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
export { commerceFields } from
|
|
24
|
-
export { commerceCollections } from
|
|
25
|
-
export { commerceHooks } from
|
|
26
|
-
export { createCommerceClient } from
|
|
23
|
+
export { commerceFields } from './fields.js';
|
|
24
|
+
export { commerceCollections } from './collections.js';
|
|
25
|
+
export { commerceHooks } from './hooks.js';
|
|
26
|
+
export { createCommerceClient } from './client.js';
|
|
27
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AA2B1C,iGAAiG;AACjG,MAAM,UAAU,cAAc,CAAC,SAA+B,EAAE;IAC9D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,mBAAmB;QAChC,aAAa,EAAE;YACb,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,oBAAoB,EAAE;YAClE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACpE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACpE;gBACE,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,KAAK,EAAE,aAAa;KACrB,CAAA;AACH,CAAC;AAGD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/stripe/checkout.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/stripe/checkout.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,gBAAgB,EAAE,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,gFAAgF;AAChF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,eAAe,CAAC,CAgD1B"}
|
package/dist/stripe/checkout.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export async function createCheckoutSession(options) {
|
|
3
3
|
const stripeLineItems = options.lineItems.map((item) => ({
|
|
4
4
|
price_data: {
|
|
5
|
-
currency:
|
|
5
|
+
currency: 'usd',
|
|
6
6
|
product_data: {
|
|
7
7
|
name: item.name,
|
|
8
8
|
images: item.image ? [item.image] : [],
|
|
@@ -16,25 +16,23 @@ export async function createCheckoutSession(options) {
|
|
|
16
16
|
quantity: item.quantity,
|
|
17
17
|
}));
|
|
18
18
|
const sessionParams = {
|
|
19
|
-
mode:
|
|
19
|
+
mode: 'payment',
|
|
20
20
|
line_items: stripeLineItems,
|
|
21
21
|
success_url: options.successUrl,
|
|
22
22
|
cancel_url: options.cancelUrl,
|
|
23
|
-
...(options.customerEmail
|
|
24
|
-
? { customer_email: options.customerEmail }
|
|
25
|
-
: {}),
|
|
23
|
+
...(options.customerEmail ? { customer_email: options.customerEmail } : {}),
|
|
26
24
|
};
|
|
27
25
|
if (options.shippingOptions?.length) {
|
|
28
|
-
sessionParams[
|
|
26
|
+
sessionParams['shipping_options'] = options.shippingOptions.map((opt) => ({
|
|
29
27
|
shipping_rate_data: {
|
|
30
28
|
display_name: opt.label,
|
|
31
|
-
type:
|
|
32
|
-
fixed_amount: { amount: Math.round(opt.amount * 100), currency:
|
|
29
|
+
type: 'fixed_amount',
|
|
30
|
+
fixed_amount: { amount: Math.round(opt.amount * 100), currency: 'usd' },
|
|
33
31
|
},
|
|
34
32
|
}));
|
|
35
33
|
}
|
|
36
34
|
if (options.discountCode) {
|
|
37
|
-
sessionParams[
|
|
35
|
+
sessionParams['discounts'] = [{ coupon: options.discountCode }];
|
|
38
36
|
}
|
|
39
37
|
// TODO: Call Stripe SDK — stripe.checkout.sessions.create(sessionParams)
|
|
40
38
|
const expiresAt = new Date();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/stripe/checkout.ts"],"names":[],"mappings":"AA8BA,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA+B;IAE/B,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,UAAU,EAAE;YACV,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtC,QAAQ,EAAE;oBACR,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD;aACF;YACD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;SAC9C;QACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/stripe/checkout.ts"],"names":[],"mappings":"AA8BA,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA+B;IAE/B,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,UAAU,EAAE;YACV,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtC,QAAQ,EAAE;oBACR,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD;aACF;YACD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;SAC9C;QACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC,CAAA;IAEH,MAAM,aAAa,GAA4B;QAC7C,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,OAAO,CAAC,UAAU;QAC/B,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAA;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QACpC,aAAa,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxE,kBAAkB,EAAE;gBAClB,YAAY,EAAE,GAAG,CAAC,KAAK;gBACvB,IAAI,EAAE,cAAc;gBACpB,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;aACxE;SACF,CAAC,CAAC,CAAA;IACL,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACjE,CAAC;IAED,yEAAyE;IACzE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;IAC5B,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAA;IAEjD,OAAO;QACL,EAAE,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE;QAC3B,GAAG,EAAE,2CAA2C,IAAI,CAAC,GAAG,EAAE,EAAE;QAC5D,SAAS;KACV,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/stripe/customer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/stripe/customer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,6EAA6E;AAC7E,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAUzF;AAED,2EAA2E;AAC3E,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAShF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customer.js","sourceRoot":"","sources":["../../src/stripe/customer.ts"],"names":[],"mappings":"AAOA,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,YAAY,
|
|
1
|
+
{"version":3,"file":"customer.js","sourceRoot":"","sources":["../../src/stripe/customer.ts"],"names":[],"mappings":"AAOA,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IAC9D,uEAAuE;IACvE,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAEjD,sFAAsF;IACtF,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE;KAC1D,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAa;IACrD,mDAAmD;IACnD,uFAAuF;IAEvF,OAAO;QACL,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;QAC5B,KAAK;QACL,QAAQ,EAAE,EAAE;KACb,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/stripe/products.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/stripe/products.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,+EAA+E;AAC/E,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAa9E;AAED,oEAAoE;AACpE,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CAWtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/stripe/products.ts"],"names":[],"mappings":"AAuBA,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/stripe/products.ts"],"names":[],"mappings":"AAuBA,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,gEAAgE;IAChE,sDAAsD;IAEtD,OAAO;QACL,EAAE,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE;QAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE;YACR,gBAAgB,EAAE,OAAO,CAAC,EAAE;YAC5B,GAAG,OAAO,CAAC,QAAQ;SACpB;KACF,CAAA;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,MAAc,EACd,QAAgB;IAEhB,4EAA4E;IAC5E,yFAAyF;IAEzF,OAAO;QACL,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE;QAC9B,SAAS;QACT,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACpC,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE;QAChC,MAAM,EAAE,IAAI;KACb,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/stripe/webhooks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/stripe/webhooks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAqCD,6DAA6D;AAC7D,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAiCxB"}
|
package/dist/stripe/webhooks.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
async function handleCheckoutCompleted(session) {
|
|
2
|
-
const customerEmail = session[
|
|
3
|
-
const paymentIntentId = session[
|
|
4
|
-
const amountTotal = session[
|
|
2
|
+
const customerEmail = session['customer_email'];
|
|
3
|
+
const paymentIntentId = session['payment_intent'];
|
|
4
|
+
const amountTotal = session['amount_total'];
|
|
5
5
|
// TODO: Create order record from session data
|
|
6
6
|
console.info(`[commerce:webhook] Checkout completed — email=${customerEmail} payment=${paymentIntentId} total=${amountTotal}`);
|
|
7
7
|
}
|
|
8
8
|
async function handlePaymentSucceeded(paymentIntent) {
|
|
9
|
-
const intentId = paymentIntent[
|
|
10
|
-
const amount = paymentIntent[
|
|
9
|
+
const intentId = paymentIntent['id'];
|
|
10
|
+
const amount = paymentIntent['amount'];
|
|
11
11
|
// TODO: Update payment record status to "succeeded"
|
|
12
12
|
console.info(`[commerce:webhook] Payment succeeded — intent=${intentId} amount=${amount}`);
|
|
13
13
|
}
|
|
14
14
|
async function handleChargeRefunded(charge) {
|
|
15
|
-
const chargeId = charge[
|
|
16
|
-
const amountRefunded = charge[
|
|
17
|
-
const paymentIntentId = charge[
|
|
15
|
+
const chargeId = charge['id'];
|
|
16
|
+
const amountRefunded = charge['amount_refunded'];
|
|
17
|
+
const paymentIntentId = charge['payment_intent'];
|
|
18
18
|
// TODO: Update payment record status to "refunded", adjust order status
|
|
19
19
|
console.info(`[commerce:webhook] Charge refunded — charge=${chargeId} intent=${paymentIntentId} refunded=${amountRefunded}`);
|
|
20
20
|
}
|
|
@@ -24,25 +24,25 @@ export async function handleStripeWebhook(payload, signature, secret) {
|
|
|
24
24
|
try {
|
|
25
25
|
// TODO: Replace with stripe.webhooks.constructEvent(payload, signature, secret)
|
|
26
26
|
if (!signature || !secret) {
|
|
27
|
-
throw new Error(
|
|
27
|
+
throw new Error('Missing webhook signature or secret');
|
|
28
28
|
}
|
|
29
29
|
event = JSON.parse(payload);
|
|
30
30
|
}
|
|
31
31
|
catch (err) {
|
|
32
32
|
return {
|
|
33
33
|
handled: false,
|
|
34
|
-
event:
|
|
34
|
+
event: 'unknown',
|
|
35
35
|
error: `Webhook verification failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
switch (event.type) {
|
|
39
|
-
case
|
|
39
|
+
case 'checkout.session.completed':
|
|
40
40
|
await handleCheckoutCompleted(event.data.object);
|
|
41
41
|
return { handled: true, event: event.type };
|
|
42
|
-
case
|
|
42
|
+
case 'payment_intent.succeeded':
|
|
43
43
|
await handlePaymentSucceeded(event.data.object);
|
|
44
44
|
return { handled: true, event: event.type };
|
|
45
|
-
case
|
|
45
|
+
case 'charge.refunded':
|
|
46
46
|
await handleChargeRefunded(event.data.object);
|
|
47
47
|
return { handled: true, event: event.type };
|
|
48
48
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/stripe/webhooks.ts"],"names":[],"mappings":"AAWA,KAAK,UAAU,uBAAuB,
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/stripe/webhooks.ts"],"names":[],"mappings":"AAWA,KAAK,UAAU,uBAAuB,CAAC,OAAgC;IACrE,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAuB,CAAA;IACrE,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAuB,CAAA;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAuB,CAAA;IAEjE,8CAA8C;IAC9C,OAAO,CAAC,IAAI,CACV,iDAAiD,aAAa,YAAY,eAAe,UAAU,WAAW,EAAE,CACjH,CAAA;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,aAAsC;IAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAuB,CAAA;IAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAuB,CAAA;IAE5D,oDAAoD;IACpD,OAAO,CAAC,IAAI,CAAC,iDAAiD,QAAQ,WAAW,MAAM,EAAE,CAAC,CAAA;AAC5F,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAA+B;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAuB,CAAA;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAuB,CAAA;IACtE,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAuB,CAAA;IAEtE,wEAAwE;IACxE,OAAO,CAAC,IAAI,CACV,+CAA+C,QAAQ,WAAW,eAAe,aAAa,cAAc,EAAE,CAC/G,CAAA;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,SAAiB,EACjB,MAAc;IAEd,IAAI,KAAkB,CAAA;IAEtB,IAAI,CAAC;QACH,gFAAgF;QAChF,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAA;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC1F,CAAA;IACH,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,4BAA4B;YAC/B,MAAM,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QAE7C,KAAK,0BAA0B;YAC7B,MAAM,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QAE7C,KAAK,iBAAiB;YACpB,MAAM,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QAE7C;YACE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IAChD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/plugin-commerce",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/actuatecms/actuatecms.git",
|
|
@@ -20,12 +20,14 @@
|
|
|
20
20
|
"main": "./dist/index.js",
|
|
21
21
|
"types": "./dist/index.d.ts",
|
|
22
22
|
"files": [
|
|
23
|
-
"dist"
|
|
23
|
+
"dist",
|
|
24
|
+
"CHANGELOG.md"
|
|
24
25
|
],
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"@types/react": "^19.0.0",
|
|
27
28
|
"typescript": "^5.7.0",
|
|
28
|
-
"vitest": "^
|
|
29
|
+
"vitest": "^4.1.0",
|
|
30
|
+
"@actuate-media/cms-core": "0.61.0"
|
|
29
31
|
},
|
|
30
32
|
"peerDependencies": {
|
|
31
33
|
"@actuate-media/cms-core": ">=0.1.0",
|