@bates-solutions/squareup 1.5.2 → 1.7.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.
package/README.md CHANGED
@@ -142,6 +142,38 @@ export async function POST(request: Request) {
142
142
  }
143
143
  ```
144
144
 
145
+ ### Typed Webhook Payloads
146
+
147
+ ```typescript
148
+ import type { PaymentWebhookEvent } from '@bates-solutions/squareup/server';
149
+ import { getOrderId, getCustomerId } from '@bates-solutions/squareup/server';
150
+
151
+ // Cast to typed event for full payload types — no `as any` needed
152
+ const event = webhookHandler.verifyAndParse(req) as PaymentWebhookEvent;
153
+ const payment = event.data.object.payment;
154
+ console.log(payment.status, payment.amount_money);
155
+
156
+ // Or use helpers to extract entity IDs from any event type
157
+ const orderId = getOrderId(event); // works on payment, order, and refund events
158
+ const customerId = getCustomerId(event); // works on payment and customer events
159
+ ```
160
+
161
+ ### Webhook Handling (AWS Lambda)
162
+
163
+ ```typescript
164
+ import { createLambdaWebhookHandler } from '@bates-solutions/squareup/server';
165
+
166
+ export const handler = createLambdaWebhookHandler({
167
+ signatureKey: process.env.SQUARE_WEBHOOK_SIGNATURE_KEY!,
168
+ handlers: {
169
+ 'payment.completed': async (event, context) => {
170
+ // context.orderId, context.customerId auto-extracted
171
+ await processPayment(event.data.id, context.orderId!);
172
+ },
173
+ },
174
+ });
175
+ ```
176
+
145
177
  ## Available Services
146
178
 
147
179
  | Service | Description |
@@ -36,8 +36,9 @@
36
36
  * }));
37
37
  * ```
38
38
  */
39
- export type { WebhookEventType, PaymentEventType, RefundEventType, OrderEventType, CustomerEventType, SubscriptionEventType, InvoiceEventType, LoyaltyEventType, CatalogEventType, InventoryEventType, TeamEventType, LaborEventType, WebhookEvent, WebhookHandler, WebhookHandlers, WebhookConfig, WebhookVerificationResult, ParsedWebhookRequest, } from './types.js';
40
- export { SIGNATURE_HEADER, verifySignature, parseWebhookEvent, parseAndVerifyWebhook, processWebhookEvent, createWebhookProcessor, } from './webhook.js';
39
+ export type { WebhookEventType, PaymentEventType, RefundEventType, OrderEventType, CustomerEventType, SubscriptionEventType, InvoiceEventType, LoyaltyEventType, CatalogEventType, InventoryEventType, TeamEventType, LaborEventType, WebhookEvent, WebhookHandler, WebhookHandlers, WebhookConfig, WebhookVerificationResult, ParsedWebhookRequest, PaymentWebhookObject, OrderWebhookObject, RefundWebhookObject, CustomerWebhookObject, PaymentWebhookEvent, OrderWebhookEvent, RefundWebhookEvent, CustomerWebhookEvent, } from './types.js';
40
+ export { SIGNATURE_HEADER, verifySignature, parseWebhookEvent, parseAndVerifyWebhook, processWebhookEvent, createWebhookProcessor, getPaymentId, getOrderId, getCustomerId, } from './webhook.js';
41
41
  export { createExpressWebhookHandler, rawBodyMiddleware, type SquareWebhookRequest, type ExpressWebhookOptions, } from './middleware/express.js';
42
42
  export { createNextWebhookHandler, createNextPagesWebhookHandler, parseNextWebhook, type WebhookResponse, } from './middleware/nextjs.js';
43
+ export { createLambdaWebhookHandler, type LambdaProxyEvent, type LambdaProxyResult, type LambdaWebhookConfig, type LambdaWebhookHandler, type LambdaWebhookHandlers, type WebhookEventContext, } from './middleware/lambda.js';
43
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,0BAA0B,EAC1B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,wBAAwB,CAAC"}
@@ -37,9 +37,11 @@
37
37
  * ```
38
38
  */
39
39
  // Core webhook utilities
40
- export { SIGNATURE_HEADER, verifySignature, parseWebhookEvent, parseAndVerifyWebhook, processWebhookEvent, createWebhookProcessor, } from './webhook.js';
40
+ export { SIGNATURE_HEADER, verifySignature, parseWebhookEvent, parseAndVerifyWebhook, processWebhookEvent, createWebhookProcessor, getPaymentId, getOrderId, getCustomerId, } from './webhook.js';
41
41
  // Express middleware
42
42
  export { createExpressWebhookHandler, rawBodyMiddleware, } from './middleware/express.js';
43
43
  // Next.js handlers
44
44
  export { createNextWebhookHandler, createNextPagesWebhookHandler, parseNextWebhook, } from './middleware/nextjs.js';
45
+ // Lambda handler
46
+ export { createLambdaWebhookHandler, } from './middleware/lambda.js';
45
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAwBH,yBAAyB;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,qBAAqB;AACrB,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,GAGlB,MAAM,yBAAyB,CAAC;AAEjC,mBAAmB;AACnB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAgCH,yBAAyB;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,qBAAqB;AACrB,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,GAGlB,MAAM,yBAAyB,CAAC;AAEjC,mBAAmB;AACnB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAEhC,iBAAiB;AACjB,OAAO,EACL,0BAA0B,GAO3B,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { WebhookEvent } from '../types.js';
2
+ /**
3
+ * Minimal API Gateway proxy event shape (avoids aws-lambda dependency)
4
+ */
5
+ export interface LambdaProxyEvent {
6
+ httpMethod: string;
7
+ headers?: Record<string, string | undefined> | null;
8
+ body: string | null;
9
+ isBase64Encoded?: boolean;
10
+ }
11
+ /**
12
+ * API Gateway proxy result shape
13
+ */
14
+ export interface LambdaProxyResult {
15
+ statusCode: number;
16
+ headers: Record<string, string>;
17
+ body: string;
18
+ }
19
+ /**
20
+ * Context passed to Lambda webhook handlers with auto-extracted entity IDs
21
+ */
22
+ export interface WebhookEventContext {
23
+ paymentId?: string;
24
+ orderId?: string;
25
+ customerId?: string;
26
+ }
27
+ /**
28
+ * Handler function for Lambda webhook events
29
+ */
30
+ export type LambdaWebhookHandler<T = unknown> = (event: WebhookEvent<T>, context: WebhookEventContext) => void | Promise<void>;
31
+ /**
32
+ * Map of event types to their Lambda handlers
33
+ */
34
+ export type LambdaWebhookHandlers = {
35
+ [K in import('../types.js').WebhookEventType]?: LambdaWebhookHandler;
36
+ };
37
+ /**
38
+ * Configuration for Lambda webhook handling
39
+ */
40
+ export interface LambdaWebhookConfig {
41
+ /** Square webhook signature key */
42
+ signatureKey: string;
43
+ /** Event handlers by type */
44
+ handlers: LambdaWebhookHandlers;
45
+ /** URL where webhooks are received (for signature verification) */
46
+ notificationUrl?: string;
47
+ /** Custom CORS headers (merged with defaults) */
48
+ corsHeaders?: Record<string, string>;
49
+ }
50
+ /**
51
+ * Create an AWS Lambda handler for Square webhooks
52
+ *
53
+ * Handles CORS preflight, signature verification, event parsing,
54
+ * routing to handlers, and entity ID extraction.
55
+ *
56
+ * @param config - Lambda webhook configuration
57
+ * @returns Lambda handler function
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * import { createLambdaWebhookHandler } from '@bates-solutions/squareup/server';
62
+ *
63
+ * export const handler = createLambdaWebhookHandler({
64
+ * signatureKey: process.env.SQUARE_WEBHOOK_SIGNATURE_KEY!,
65
+ * handlers: {
66
+ * 'payment.completed': async (event, context) => {
67
+ * await processPayment(event.data.id, context.orderId);
68
+ * },
69
+ * },
70
+ * });
71
+ * ```
72
+ */
73
+ export declare function createLambdaWebhookHandler(config: LambdaWebhookConfig): (proxyEvent: LambdaProxyEvent) => Promise<LambdaProxyResult>;
74
+ //# sourceMappingURL=lambda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.d.ts","sourceRoot":"","sources":["../../../src/server/middleware/lambda.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IACpD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,GAAG,OAAO,IAAI,CAC9C,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,mBAAmB,KACzB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;KACjC,CAAC,IAAI,OAAO,aAAa,EAAE,gBAAgB,CAAC,CAAC,EAAE,oBAAoB;CACrE,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAoBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,IAGtD,YAAY,gBAAgB,KAAG,OAAO,CAAC,iBAAiB,CAAC,CAqFxE"}
@@ -0,0 +1,115 @@
1
+ import { verifySignature, parseWebhookEvent, getPaymentId, getOrderId, getCustomerId, SIGNATURE_HEADER, } from '../webhook.js';
2
+ const DEFAULT_CORS_HEADERS = {
3
+ 'Access-Control-Allow-Origin': '*',
4
+ 'Access-Control-Allow-Methods': 'POST, OPTIONS',
5
+ 'Access-Control-Allow-Headers': 'Content-Type, ' + SIGNATURE_HEADER,
6
+ };
7
+ function normalizeHeaders(headers) {
8
+ const normalized = {};
9
+ for (const [key, value] of Object.entries(headers)) {
10
+ if (value !== undefined) {
11
+ normalized[key.toLowerCase()] = value;
12
+ }
13
+ }
14
+ return normalized;
15
+ }
16
+ /**
17
+ * Create an AWS Lambda handler for Square webhooks
18
+ *
19
+ * Handles CORS preflight, signature verification, event parsing,
20
+ * routing to handlers, and entity ID extraction.
21
+ *
22
+ * @param config - Lambda webhook configuration
23
+ * @returns Lambda handler function
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * import { createLambdaWebhookHandler } from '@bates-solutions/squareup/server';
28
+ *
29
+ * export const handler = createLambdaWebhookHandler({
30
+ * signatureKey: process.env.SQUARE_WEBHOOK_SIGNATURE_KEY!,
31
+ * handlers: {
32
+ * 'payment.completed': async (event, context) => {
33
+ * await processPayment(event.data.id, context.orderId);
34
+ * },
35
+ * },
36
+ * });
37
+ * ```
38
+ */
39
+ export function createLambdaWebhookHandler(config) {
40
+ const corsHeaders = { ...DEFAULT_CORS_HEADERS, ...config.corsHeaders };
41
+ return async (proxyEvent) => {
42
+ // Handle CORS preflight
43
+ if (proxyEvent.httpMethod === 'OPTIONS') {
44
+ return { statusCode: 204, headers: corsHeaders, body: '' };
45
+ }
46
+ const headers = normalizeHeaders(proxyEvent.headers ?? {});
47
+ const signature = headers[SIGNATURE_HEADER];
48
+ const rawBody = proxyEvent.isBase64Encoded && proxyEvent.body
49
+ ? Buffer.from(proxyEvent.body, 'base64').toString('utf-8')
50
+ : proxyEvent.body;
51
+ if (!rawBody) {
52
+ return {
53
+ statusCode: 400,
54
+ headers: corsHeaders,
55
+ body: JSON.stringify({ error: 'Missing request body' }),
56
+ };
57
+ }
58
+ if (!signature) {
59
+ return {
60
+ statusCode: 401,
61
+ headers: corsHeaders,
62
+ body: JSON.stringify({ error: 'Missing signature header' }),
63
+ };
64
+ }
65
+ const verification = verifySignature(rawBody, signature, config.signatureKey, config.notificationUrl);
66
+ if (!verification.valid) {
67
+ return {
68
+ statusCode: 401,
69
+ headers: corsHeaders,
70
+ body: JSON.stringify({ error: verification.error }),
71
+ };
72
+ }
73
+ let event;
74
+ try {
75
+ event = parseWebhookEvent(rawBody);
76
+ }
77
+ catch (error) {
78
+ return {
79
+ statusCode: 400,
80
+ headers: corsHeaders,
81
+ body: JSON.stringify({
82
+ error: error instanceof Error ? error.message : 'Invalid webhook payload',
83
+ }),
84
+ };
85
+ }
86
+ try {
87
+ const context = {
88
+ paymentId: getPaymentId(event),
89
+ orderId: getOrderId(event),
90
+ customerId: getCustomerId(event),
91
+ };
92
+ const handler = config.handlers[event.type];
93
+ if (handler) {
94
+ await handler(event, context);
95
+ }
96
+ return {
97
+ statusCode: 200,
98
+ headers: corsHeaders,
99
+ body: JSON.stringify({ success: true, eventId: event.event_id, ...context }),
100
+ };
101
+ }
102
+ catch (error) {
103
+ // Return 200 on handler errors — Square retries on 5xx
104
+ return {
105
+ statusCode: 200,
106
+ headers: corsHeaders,
107
+ body: JSON.stringify({
108
+ success: false,
109
+ error: error instanceof Error ? error.message : 'Unknown error',
110
+ }),
111
+ };
112
+ }
113
+ };
114
+ }
115
+ //# sourceMappingURL=lambda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/server/middleware/lambda.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @see https://developer.squareup.com/reference/square/webhooks
5
5
  */
6
- export type PaymentEventType = 'payment.created' | 'payment.updated';
6
+ export type PaymentEventType = 'payment.created' | 'payment.updated' | 'payment.completed';
7
7
  export type RefundEventType = 'refund.created' | 'refund.updated';
8
8
  export type OrderEventType = 'order.created' | 'order.updated' | 'order.fulfillment.updated';
9
9
  export type CustomerEventType = 'customer.created' | 'customer.updated' | 'customer.deleted';
@@ -86,4 +86,75 @@ export interface ParsedWebhookRequest {
86
86
  /** Parsed event data */
87
87
  event: WebhookEvent;
88
88
  }
89
+ /**
90
+ * Payment object in a webhook event payload
91
+ */
92
+ export interface PaymentWebhookObject {
93
+ payment: {
94
+ id: string;
95
+ order_id?: string;
96
+ customer_id?: string;
97
+ amount_money?: {
98
+ amount: number;
99
+ currency: string;
100
+ };
101
+ status: string;
102
+ source_type?: string;
103
+ location_id?: string;
104
+ created_at?: string;
105
+ updated_at?: string;
106
+ };
107
+ }
108
+ /**
109
+ * Order update object in a webhook event payload
110
+ */
111
+ export interface OrderWebhookObject {
112
+ order_update?: {
113
+ order_id: string;
114
+ state: string;
115
+ version: number;
116
+ };
117
+ }
118
+ /**
119
+ * Refund object in a webhook event payload
120
+ */
121
+ export interface RefundWebhookObject {
122
+ refund: {
123
+ id: string;
124
+ payment_id: string;
125
+ order_id?: string;
126
+ amount_money?: {
127
+ amount: number;
128
+ currency: string;
129
+ };
130
+ status: string;
131
+ };
132
+ }
133
+ /**
134
+ * Customer object in a webhook event payload
135
+ */
136
+ export interface CustomerWebhookObject {
137
+ customer?: {
138
+ id: string;
139
+ given_name?: string;
140
+ family_name?: string;
141
+ email_address?: string;
142
+ phone_number?: string;
143
+ };
144
+ }
145
+ /**
146
+ * Typed webhook events for common event types
147
+ */
148
+ export type PaymentWebhookEvent = WebhookEvent<PaymentWebhookObject> & {
149
+ type: PaymentEventType;
150
+ };
151
+ export type OrderWebhookEvent = WebhookEvent<OrderWebhookObject> & {
152
+ type: OrderEventType;
153
+ };
154
+ export type RefundWebhookEvent = WebhookEvent<RefundWebhookObject> & {
155
+ type: RefundEventType;
156
+ };
157
+ export type CustomerWebhookEvent = WebhookEvent<CustomerWebhookObject> & {
158
+ type: CustomerEventType;
159
+ };
89
160
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAGrE,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAGlE,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,eAAe,GACf,2BAA2B,CAAC;AAGhC,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,CAAC;AAGvB,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AAGpF,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,kBAAkB,CAAC;AAGvB,MAAM,MAAM,gBAAgB,GACxB,yBAAyB,GACzB,yBAAyB,GACzB,yBAAyB,GACzB,2BAA2B,CAAC;AAGhC,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAGzD,MAAM,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAG3D,MAAM,MAAM,aAAa,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAG1E,MAAM,MAAM,cAAc,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAEjF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,iBAAiB,GACjB,qBAAqB,GACrB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,aAAa,GACb,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,IAAI,EAAE;QACJ,kCAAkC;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,8BAA8B;QAC9B,EAAE,EAAE,MAAM,CAAC;QACX,6BAA6B;QAC7B,MAAM,EAAE,CAAC,CAAC;KACX,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,CACxC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KACnB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,cAAc;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,QAAQ,EAAE,eAAe,CAAC;IAC1B,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,KAAK,EAAE,YAAY,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
@@ -111,4 +111,16 @@ export declare function createWebhookProcessor(config: WebhookConfig): (rawBody:
111
111
  event?: WebhookEvent;
112
112
  error?: string;
113
113
  }>;
114
+ /**
115
+ * Extract the payment ID from a webhook event
116
+ */
117
+ export declare function getPaymentId(event: WebhookEvent): string | undefined;
118
+ /**
119
+ * Extract the order ID from a webhook event
120
+ */
121
+ export declare function getOrderId(event: WebhookEvent): string | undefined;
122
+ /**
123
+ * Extract the customer ID from a webhook event
124
+ */
125
+ export declare function getCustomerId(event: WebhookEvent): string | undefined;
114
126
  //# sourceMappingURL=webhook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,yBAAyB,CA6C3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAM/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,oBAAoB,CActB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,IAExD,SAAS,MAAM,EACf,WAAW,MAAM,KAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BvE"}
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,oBAAoB,EAGrB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,yBAAyB,CA6C3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAM/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,oBAAoB,CActB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,IAExD,SAAS,MAAM,EACf,WAAW,MAAM,KAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CASpE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAalE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CASrE"}
@@ -187,4 +187,47 @@ export function createWebhookProcessor(config) {
187
187
  }
188
188
  };
189
189
  }
190
+ /**
191
+ * Extract the payment ID from a webhook event
192
+ */
193
+ export function getPaymentId(event) {
194
+ if (event.type.startsWith('payment.')) {
195
+ return event.data.id;
196
+ }
197
+ if (event.type.startsWith('refund.')) {
198
+ const obj = event.data.object;
199
+ return obj.refund?.payment_id;
200
+ }
201
+ return undefined;
202
+ }
203
+ /**
204
+ * Extract the order ID from a webhook event
205
+ */
206
+ export function getOrderId(event) {
207
+ if (event.type.startsWith('payment.')) {
208
+ const obj = event.data.object;
209
+ return obj.payment?.order_id;
210
+ }
211
+ if (event.type.startsWith('order.')) {
212
+ return event.data.id;
213
+ }
214
+ if (event.type.startsWith('refund.')) {
215
+ const obj = event.data.object;
216
+ return obj.refund?.order_id;
217
+ }
218
+ return undefined;
219
+ }
220
+ /**
221
+ * Extract the customer ID from a webhook event
222
+ */
223
+ export function getCustomerId(event) {
224
+ if (event.type.startsWith('payment.')) {
225
+ const obj = event.data.object;
226
+ return obj.payment?.customer_id;
227
+ }
228
+ if (event.type.startsWith('customer.')) {
229
+ return event.data.id;
230
+ }
231
+ return undefined;
232
+ }
190
233
  //# sourceMappingURL=webhook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bates-solutions/squareup",
3
- "version": "1.5.2",
3
+ "version": "1.7.0",
4
4
  "description": "TypeScript wrapper for Square API with webhook support for Node.js backends",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",