@stateset/acp-client 1.0.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 ADDED
@@ -0,0 +1,160 @@
1
+ # @stateset/acp-client
2
+
3
+ Official Node.js client for the StateSet Agentic Commerce Protocol (ACP) Handler.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @stateset/acp-client
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ### HTTP Client
14
+
15
+ ```typescript
16
+ import { AcpHttpClient } from '@stateset/acp-client';
17
+
18
+ const client = new AcpHttpClient({
19
+ baseUrl: 'http://localhost:8080',
20
+ apiKey: 'your_api_key',
21
+ });
22
+
23
+ // Create a checkout session
24
+ const session = await client.createCheckoutSession({
25
+ items: [
26
+ { id: 'prod_123', quantity: 1 },
27
+ ],
28
+ });
29
+
30
+ // Update with customer info
31
+ await client.updateCheckoutSession(session.id, {
32
+ customer: {
33
+ billing_address: {
34
+ name: 'John Doe',
35
+ email: 'john@example.com',
36
+ line1: '123 Main St',
37
+ city: 'San Francisco',
38
+ region: 'CA',
39
+ postal_code: '94102',
40
+ country: 'US',
41
+ },
42
+ },
43
+ });
44
+
45
+ // Complete checkout
46
+ const result = await client.completeCheckoutSession(session.id, {
47
+ payment: { delegated_token: 'tok_xxx' },
48
+ });
49
+
50
+ console.log('Order ID:', result.order.id);
51
+ ```
52
+
53
+ ### gRPC Client
54
+
55
+ ```typescript
56
+ import { AcpGrpcClient } from '@stateset/acp-client';
57
+
58
+ const client = new AcpGrpcClient({
59
+ grpcAddress: 'localhost:50051',
60
+ apiKey: 'your_api_key',
61
+ });
62
+
63
+ await client.connect();
64
+
65
+ const session = await client.createCheckoutSession({
66
+ items: [{ id: 'prod_123', quantity: 1 }],
67
+ });
68
+
69
+ client.close();
70
+ ```
71
+
72
+ ## API Reference
73
+
74
+ ### AcpHttpClient
75
+
76
+ | Method | Description |
77
+ |--------|-------------|
78
+ | `createCheckoutSession(request)` | Create a new checkout session |
79
+ | `getCheckoutSession(sessionId)` | Get an existing session |
80
+ | `updateCheckoutSession(sessionId, request)` | Update session details |
81
+ | `completeCheckoutSession(sessionId, request)` | Complete with payment |
82
+ | `cancelCheckoutSession(sessionId)` | Cancel a session |
83
+ | `delegatePayment(request)` | Create PSP vault token |
84
+ | `healthCheck()` | Check service health |
85
+
86
+ ### AcpGrpcClient
87
+
88
+ | Method | Description |
89
+ |--------|-------------|
90
+ | `connect()` | Establish gRPC connection |
91
+ | `close()` | Close connection |
92
+ | `createCheckoutSession(request)` | Create a new checkout session |
93
+ | `getCheckoutSession(sessionId)` | Get an existing session |
94
+ | `updateCheckoutSession(request)` | Update session details |
95
+ | `completeCheckoutSession(request)` | Complete with payment |
96
+ | `cancelCheckoutSession(sessionId)` | Cancel a session |
97
+ | `delegatePayment(request)` | Create PSP vault token |
98
+
99
+ ## Configuration
100
+
101
+ ```typescript
102
+ interface AcpClientConfig {
103
+ baseUrl?: string; // HTTP base URL (default: http://localhost:8080)
104
+ grpcAddress?: string; // gRPC address (default: localhost:50051)
105
+ apiKey?: string; // API key for authentication
106
+ timeout?: number; // Request timeout in ms (default: 30000)
107
+ }
108
+ ```
109
+
110
+ ## Error Handling
111
+
112
+ ```typescript
113
+ import { AcpHttpClient, AcpApiError } from '@stateset/acp-client';
114
+
115
+ try {
116
+ await client.createCheckoutSession({ items: [] });
117
+ } catch (error) {
118
+ if (error instanceof AcpApiError) {
119
+ console.error('Type:', error.type);
120
+ console.error('Code:', error.code);
121
+ console.error('Message:', error.message);
122
+ console.error('Param:', error.param);
123
+ console.error('Status:', error.statusCode);
124
+ }
125
+ }
126
+ ```
127
+
128
+ ## Types
129
+
130
+ All TypeScript types are exported from the package:
131
+
132
+ ```typescript
133
+ import {
134
+ CheckoutSession,
135
+ CheckoutSessionStatus,
136
+ LineItem,
137
+ Money,
138
+ Customer,
139
+ Address,
140
+ Order,
141
+ // ... and more
142
+ } from '@stateset/acp-client';
143
+ ```
144
+
145
+ ## Development
146
+
147
+ ```bash
148
+ # Install dependencies
149
+ npm install
150
+
151
+ # Build
152
+ npm run build
153
+
154
+ # Build proto files (for gRPC)
155
+ npm run build:proto
156
+ ```
157
+
158
+ ## License
159
+
160
+ MIT
@@ -0,0 +1,57 @@
1
+ /**
2
+ * StateSet ACP Handler - gRPC Client
3
+ */
4
+ import * as grpc from '@grpc/grpc-js';
5
+ import { AcpClientConfig, CheckoutSession, CheckoutSessionWithOrder, CreateCheckoutSessionRequest, UpdateCheckoutSessionRequest, CompleteCheckoutSessionRequest, DelegatePaymentRequest, DelegatePaymentResponse } from './types';
6
+ export declare class AcpGrpcClient {
7
+ private client;
8
+ private address;
9
+ private apiKey;
10
+ constructor(config?: AcpClientConfig);
11
+ /**
12
+ * Initialize the gRPC client connection
13
+ */
14
+ connect(): Promise<void>;
15
+ /**
16
+ * Get metadata with authentication
17
+ */
18
+ private getMetadata;
19
+ /**
20
+ * Wrap a gRPC call in a Promise
21
+ */
22
+ private promisify;
23
+ /**
24
+ * Create a new checkout session
25
+ */
26
+ createCheckoutSession(request: CreateCheckoutSessionRequest): Promise<CheckoutSession>;
27
+ /**
28
+ * Get an existing checkout session
29
+ */
30
+ getCheckoutSession(sessionId: string): Promise<CheckoutSession>;
31
+ /**
32
+ * Update an existing checkout session
33
+ */
34
+ updateCheckoutSession(request: UpdateCheckoutSessionRequest): Promise<CheckoutSession>;
35
+ /**
36
+ * Complete a checkout session with payment
37
+ */
38
+ completeCheckoutSession(request: CompleteCheckoutSessionRequest): Promise<CheckoutSessionWithOrder>;
39
+ /**
40
+ * Cancel a checkout session
41
+ */
42
+ cancelCheckoutSession(sessionId: string): Promise<CheckoutSession>;
43
+ /**
44
+ * Delegate payment (PSP vault token)
45
+ */
46
+ delegatePayment(request: DelegatePaymentRequest): Promise<DelegatePaymentResponse>;
47
+ /**
48
+ * Close the gRPC connection
49
+ */
50
+ close(): void;
51
+ }
52
+ export declare class AcpGrpcError extends Error {
53
+ readonly code: grpc.status;
54
+ readonly details: string;
55
+ readonly metadata?: grpc.Metadata;
56
+ constructor(error: grpc.ServiceError);
57
+ }
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * StateSet ACP Handler - gRPC Client
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AcpGrpcError = exports.AcpGrpcClient = void 0;
40
+ const grpc = __importStar(require("@grpc/grpc-js"));
41
+ const protoLoader = __importStar(require("@grpc/proto-loader"));
42
+ const path = __importStar(require("path"));
43
+ // Proto loader options
44
+ const PROTO_LOADER_OPTIONS = {
45
+ keepCase: true,
46
+ longs: String,
47
+ enums: String,
48
+ defaults: true,
49
+ oneofs: true,
50
+ };
51
+ class AcpGrpcClient {
52
+ constructor(config = {}) {
53
+ this.address = config.grpcAddress || 'localhost:50051';
54
+ this.apiKey = config.apiKey || '';
55
+ }
56
+ /**
57
+ * Initialize the gRPC client connection
58
+ */
59
+ async connect() {
60
+ const protoPath = path.join(__dirname, '..', 'proto', 'acp_handler', 'v1', 'acp_handler.proto');
61
+ const packageDefinition = await protoLoader.load(protoPath, PROTO_LOADER_OPTIONS);
62
+ const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
63
+ const AcpHandler = protoDescriptor.acp_handler.v1.AcpHandler;
64
+ const credentials = grpc.credentials.createInsecure();
65
+ this.client = new AcpHandler(this.address, credentials);
66
+ }
67
+ /**
68
+ * Get metadata with authentication
69
+ */
70
+ getMetadata() {
71
+ const metadata = new grpc.Metadata();
72
+ if (this.apiKey) {
73
+ metadata.set('authorization', `Bearer ${this.apiKey}`);
74
+ }
75
+ return metadata;
76
+ }
77
+ /**
78
+ * Wrap a gRPC call in a Promise
79
+ */
80
+ promisify(method, request) {
81
+ return new Promise((resolve, reject) => {
82
+ if (!this.client) {
83
+ reject(new Error('Client not connected. Call connect() first.'));
84
+ return;
85
+ }
86
+ this.client[method](request, this.getMetadata(), (err, response) => {
87
+ if (err) {
88
+ reject(new AcpGrpcError(err));
89
+ }
90
+ else {
91
+ resolve(response);
92
+ }
93
+ });
94
+ });
95
+ }
96
+ /**
97
+ * Create a new checkout session
98
+ */
99
+ async createCheckoutSession(request) {
100
+ return this.promisify('CreateCheckoutSession', request);
101
+ }
102
+ /**
103
+ * Get an existing checkout session
104
+ */
105
+ async getCheckoutSession(sessionId) {
106
+ return this.promisify('GetCheckoutSession', { session_id: sessionId });
107
+ }
108
+ /**
109
+ * Update an existing checkout session
110
+ */
111
+ async updateCheckoutSession(request) {
112
+ return this.promisify('UpdateCheckoutSession', request);
113
+ }
114
+ /**
115
+ * Complete a checkout session with payment
116
+ */
117
+ async completeCheckoutSession(request) {
118
+ return this.promisify('CompleteCheckoutSession', request);
119
+ }
120
+ /**
121
+ * Cancel a checkout session
122
+ */
123
+ async cancelCheckoutSession(sessionId) {
124
+ return this.promisify('CancelCheckoutSession', { session_id: sessionId });
125
+ }
126
+ /**
127
+ * Delegate payment (PSP vault token)
128
+ */
129
+ async delegatePayment(request) {
130
+ // Convert metadata object to JSON string for proto
131
+ const protoRequest = {
132
+ ...request,
133
+ metadata_json: request.metadata ? JSON.stringify(request.metadata) : '',
134
+ payment_method: {
135
+ ...request.payment_method,
136
+ metadata_json: request.payment_method.metadata
137
+ ? JSON.stringify(request.payment_method.metadata)
138
+ : '',
139
+ },
140
+ };
141
+ const response = await this.promisify('DelegatePayment', protoRequest);
142
+ // Parse metadata JSON back to object
143
+ return {
144
+ ...response,
145
+ metadata: response.metadata_json ? JSON.parse(response.metadata_json) : undefined,
146
+ };
147
+ }
148
+ /**
149
+ * Close the gRPC connection
150
+ */
151
+ close() {
152
+ if (this.client) {
153
+ grpc.closeClient(this.client);
154
+ }
155
+ }
156
+ }
157
+ exports.AcpGrpcClient = AcpGrpcClient;
158
+ class AcpGrpcError extends Error {
159
+ constructor(error) {
160
+ super(error.message);
161
+ this.name = 'AcpGrpcError';
162
+ this.code = error.code;
163
+ this.details = error.details;
164
+ this.metadata = error.metadata;
165
+ }
166
+ }
167
+ exports.AcpGrpcError = AcpGrpcError;
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JwYy1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ3JwYy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBc0M7QUFDdEMsZ0VBQWtEO0FBQ2xELDJDQUE2QjtBQVk3Qix1QkFBdUI7QUFDdkIsTUFBTSxvQkFBb0IsR0FBd0I7SUFDaEQsUUFBUSxFQUFFLElBQUk7SUFDZCxLQUFLLEVBQUUsTUFBTTtJQUNiLEtBQUssRUFBRSxNQUFNO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFZRixNQUFhLGFBQWE7SUFLeEIsWUFBWSxTQUEwQixFQUFFO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxpQkFBaUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDekIsU0FBUyxFQUNULElBQUksRUFDSixPQUFPLEVBQ1AsYUFBYSxFQUNiLElBQUksRUFDSixtQkFBbUIsQ0FDcEIsQ0FBQztRQUVGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBUSxDQUFDO1FBQzdFLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUU3RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FB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QUMsRUFBRTthQUNQO1NBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBVyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVqRixxQ0FBcUM7UUFDckMsT0FBTztZQUNMLEdBQUcsUUFBUTtZQUNYLFFBQVEsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNsRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE1SkQsc0NBNEpDO0FBRUQsTUFBYSxZQUFhLFNBQVEsS0FBSztJQUtyQyxZQUFZLEtBQXdCO1FBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBWkQsb0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YXRlU2V0IEFDUCBIYW5kbGVyIC0gZ1JQQyBDbGllbnRcbiAqL1xuXG5pbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnO1xuaW1wb3J0ICogYXMgcHJvdG9Mb2FkZXIgZnJvbSAnQGdycGMvcHJvdG8tbG9hZGVyJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBBY3BDbGllbnRDb25maWcsXG4gIENoZWNrb3V0U2Vzc2lvbixcbiAgQ2hlY2tvdXRTZXNzaW9uV2l0aE9yZGVyLFxuICBDcmVhdGVDaGVja291dFNlc3Npb25SZXF1ZXN0LFxuICBVcGRhdGVDaGVja291dFNlc3Npb25SZXF1ZXN0LFxuICBDb21wbGV0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QsXG4gIERlbGVnYXRlUGF5bWVudFJlcXVlc3QsXG4gIERlbGVnYXRlUGF5bWVudFJlc3BvbnNlLFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gUHJvdG8gbG9hZGVyIG9wdGlvbnNcbmNvbnN0IFBST1RPX0xPQURFUl9PUFRJT05TOiBwcm90b0xvYWRlci5PcHRpb25zID0ge1xuICBrZWVwQ2FzZTogdHJ1ZSxcbiAgbG9uZ3M6IFN0cmluZyxcbiAgZW51bXM6IFN0cmluZyxcbiAgZGVmYXVsdHM6IHRydWUsXG4gIG9uZW9mczogdHJ1ZSxcbn07XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBnZW5lcmF0ZWQgZ1JQQyBjbGllbnRcbmludGVyZmFjZSBBY3BIYW5kbGVyQ2xpZW50IHtcbiAgQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uOiBncnBjLkNsaWVudFVuYXJ5Q2FsbDtcbiAgR2V0Q2hlY2tvdXRTZXNzaW9uOiBncnBjLkNsaWVudFVuYXJ5Q2FsbDtcbiAgVXBkYXRlQ2hlY2tvdXRTZXNzaW9uOiBncnBjLkNsaWVudFVuYXJ5Q2FsbDtcbiAgQ29tcGxldGVDaGVja291dFNlc3Npb246IGdycGMuQ2xpZW50VW5hcnlDYWxsO1xuICBDYW5jZWxDaGVja291dFNlc3Npb246IGdycGMuQ2xpZW50VW5hcnlDYWxsO1xuICBEZWxlZ2F0ZVBheW1lbnQ6IGdycGMuQ2xpZW50VW5hcnlDYWxsO1xufVxuXG5leHBvcnQgY2xhc3MgQWNwR3JwY0NsaWVudCB7XG4gIHByaXZhdGUgY2xpZW50OiBhbnk7XG4gIHByaXZhdGUgYWRkcmVzczogc3RyaW5nO1xuICBwcml2YXRlIGFwaUtleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQWNwQ2xpZW50Q29uZmlnID0ge30pIHtcbiAgICB0aGlzLmFkZHJlc3MgPSBjb25maWcuZ3JwY0FkZHJlc3MgfHwgJ2xvY2FsaG9zdDo1MDA1MSc7XG4gICAgdGhpcy5hcGlLZXkgPSBjb25maWcuYXBpS2V5IHx8ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGdSUEMgY2xpZW50IGNvbm5lY3Rpb25cbiAgICovXG4gIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJvdG9QYXRoID0gcGF0aC5qb2luKFxuICAgICAgX19kaXJuYW1lLFxuICAgICAgJy4uJyxcbiAgICAgICdwcm90bycsXG4gICAgICAnYWNwX2hhbmRsZXInLFxuICAgICAgJ3YxJyxcbiAgICAgICdhY3BfaGFuZGxlci5wcm90bydcbiAgICApO1xuXG4gICAgY29uc3QgcGFja2FnZURlZmluaXRpb24gPSBhd2FpdCBwcm90b0xvYWRlci5sb2FkKHByb3RvUGF0aCwgUFJPVE9fTE9BREVSX09QVElPTlMpO1xuICAgIGNvbnN0IHByb3RvRGVzY3JpcHRvciA9IGdycGMubG9hZFBhY2thZ2VEZWZpbml0aW9uKHBhY2thZ2VEZWZpbml0aW9uKSBhcyBhbnk7XG4gICAgY29uc3QgQWNwSGFuZGxlciA9IHByb3RvRGVzY3JpcHRvci5hY3BfaGFuZGxlci52MS5BY3BIYW5kbGVyO1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCk7XG4gICAgdGhpcy5jbGllbnQgPSBuZXcgQWNwSGFuZGxlcih0aGlzLmFkZHJlc3MsIGNyZWRlbnRpYWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbWV0YWRhdGEgd2l0aCBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBnZXRNZXRhZGF0YSgpOiBncnBjLk1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IG5ldyBncnBjLk1ldGFkYXRhKCk7XG4gICAgaWYgKHRoaXMuYXBpS2V5KSB7XG4gICAgICBtZXRhZGF0YS5zZXQoJ2F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dGhpcy5hcGlLZXl9YCk7XG4gICAgfVxuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwIGEgZ1JQQyBjYWxsIGluIGEgUHJvbWlzZVxuICAgKi9cbiAgcHJpdmF0ZSBwcm9taXNpZnk8VFJlcXVlc3QsIFRSZXNwb25zZT4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVxdWVzdDogVFJlcXVlc3RcbiAgKTogUHJvbWlzZTxUUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNsaWVudCkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKCdDbGllbnQgbm90IGNvbm5lY3RlZC4gQ2FsbCBjb25uZWN0KCkgZmlyc3QuJykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xpZW50W21ldGhvZF0ocmVxdWVzdCwgdGhpcy5nZXRNZXRhZGF0YSgpLCAoZXJyOiBncnBjLlNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3BvbnNlOiBUUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChuZXcgQWNwR3JwY0Vycm9yKGVycikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY2hlY2tvdXQgc2Vzc2lvblxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQ2hlY2tvdXRTZXNzaW9uKFxuICAgIHJlcXVlc3Q6IENyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3RcbiAgKTogUHJvbWlzZTxDaGVja291dFNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9taXNpZnk8Q3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdCwgQ2hlY2tvdXRTZXNzaW9uPihcbiAgICAgICdDcmVhdGVDaGVja291dFNlc3Npb24nLFxuICAgICAgcmVxdWVzdFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGV4aXN0aW5nIGNoZWNrb3V0IHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGdldENoZWNrb3V0U2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hlY2tvdXRTZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvbWlzaWZ5PHsgc2Vzc2lvbl9pZDogc3RyaW5nIH0sIENoZWNrb3V0U2Vzc2lvbj4oXG4gICAgICAnR2V0Q2hlY2tvdXRTZXNzaW9uJyxcbiAgICAgIHsgc2Vzc2lvbl9pZDogc2Vzc2lvbklkIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBleGlzdGluZyBjaGVja291dCBzZXNzaW9uXG4gICAqL1xuICBhc3luYyB1cGRhdGVDaGVja291dFNlc3Npb24oXG4gICAgcmVxdWVzdDogVXBkYXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdFxuICApOiBQcm9taXNlPENoZWNrb3V0U2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLnByb21pc2lmeTxVcGRhdGVDaGVja291dFNlc3Npb25SZXF1ZXN0LCBDaGVja291dFNlc3Npb24+KFxuICAgICAgJ1VwZGF0ZUNoZWNrb3V0U2Vzc2lvbicsXG4gICAgICByZXF1ZXN0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIGNoZWNrb3V0IHNlc3Npb24gd2l0aCBwYXltZW50XG4gICAqL1xuICBhc3luYyBjb21wbGV0ZUNoZWNrb3V0U2Vzc2lvbihcbiAgICByZXF1ZXN0OiBDb21wbGV0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3RcbiAgKTogUHJvbWlzZTxDaGVja291dFNlc3Npb25XaXRoT3JkZXI+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9taXNpZnk8Q29tcGxldGVDaGVja291dFNlc3Npb25SZXF1ZXN0LCBDaGVja291dFNlc3Npb25XaXRoT3JkZXI+KFxuICAgICAgJ0NvbXBsZXRlQ2hlY2tvdXRTZXNzaW9uJyxcbiAgICAgIHJlcXVlc3RcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBhIGNoZWNrb3V0IHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGNhbmNlbENoZWNrb3V0U2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hlY2tvdXRTZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvbWlzaWZ5PHsgc2Vzc2lvbl9pZDogc3RyaW5nIH0sIENoZWNrb3V0U2Vzc2lvbj4oXG4gICAgICAnQ2FuY2VsQ2hlY2tvdXRTZXNzaW9uJyxcbiAgICAgIHsgc2Vzc2lvbl9pZDogc2Vzc2lvbklkIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGVnYXRlIHBheW1lbnQgKFBTUCB2YXVsdCB0b2tlbilcbiAgICovXG4gIGFzeW5jIGRlbGVnYXRlUGF5bWVudChcbiAgICByZXF1ZXN0OiBEZWxlZ2F0ZVBheW1lbnRSZXF1ZXN0XG4gICk6IFByb21pc2U8RGVsZWdhdGVQYXltZW50UmVzcG9uc2U+IHtcbiAgICAvLyBDb252ZXJ0IG1ldGFkYXRhIG9iamVjdCB0byBKU09OIHN0cmluZyBmb3IgcHJvdG9cbiAgICBjb25zdCBwcm90b1JlcXVlc3QgPSB7XG4gICAgICAuLi5yZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFfanNvbjogcmVxdWVzdC5tZXRhZGF0YSA/IEpTT04uc3RyaW5naWZ5KHJlcXVlc3QubWV0YWRhdGEpIDogJycsXG4gICAgICBwYXltZW50X21ldGhvZDoge1xuICAgICAgICAuLi5yZXF1ZXN0LnBheW1lbnRfbWV0aG9kLFxuICAgICAgICBtZXRhZGF0YV9qc29uOiByZXF1ZXN0LnBheW1lbnRfbWV0aG9kLm1ldGFkYXRhXG4gICAgICAgICAgPyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0LnBheW1lbnRfbWV0aG9kLm1ldGFkYXRhKVxuICAgICAgICAgIDogJycsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJvbWlzaWZ5PGFueSwgYW55PignRGVsZWdhdGVQYXltZW50JywgcHJvdG9SZXF1ZXN0KTtcblxuICAgIC8vIFBhcnNlIG1ldGFkYXRhIEpTT04gYmFjayB0byBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzcG9uc2UsXG4gICAgICBtZXRhZGF0YTogcmVzcG9uc2UubWV0YWRhdGFfanNvbiA/IEpTT04ucGFyc2UocmVzcG9uc2UubWV0YWRhdGFfanNvbikgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgZ1JQQyBjb25uZWN0aW9uXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGllbnQpIHtcbiAgICAgIGdycGMuY2xvc2VDbGllbnQodGhpcy5jbGllbnQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWNwR3JwY0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgY29kZTogZ3JwYy5zdGF0dXM7XG4gIHB1YmxpYyByZWFkb25seSBkZXRhaWxzOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBtZXRhZGF0YT86IGdycGMuTWV0YWRhdGE7XG5cbiAgY29uc3RydWN0b3IoZXJyb3I6IGdycGMuU2VydmljZUVycm9yKSB7XG4gICAgc3VwZXIoZXJyb3IubWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0FjcEdycGNFcnJvcic7XG4gICAgdGhpcy5jb2RlID0gZXJyb3IuY29kZTtcbiAgICB0aGlzLmRldGFpbHMgPSBlcnJvci5kZXRhaWxzO1xuICAgIHRoaXMubWV0YWRhdGEgPSBlcnJvci5tZXRhZGF0YTtcbiAgfVxufVxuIl19
@@ -0,0 +1,48 @@
1
+ /**
2
+ * StateSet ACP Handler - HTTP REST Client
3
+ */
4
+ import { AcpClientConfig, AcpError, CheckoutSession, CheckoutSessionWithOrder, CreateCheckoutSessionRequest, UpdateCheckoutSessionRequest, CompleteCheckoutSessionRequest, DelegatePaymentRequest, DelegatePaymentResponse } from './types';
5
+ export declare class AcpHttpClient {
6
+ private baseUrl;
7
+ private apiKey;
8
+ private timeout;
9
+ constructor(config?: AcpClientConfig);
10
+ private request;
11
+ /**
12
+ * Create a new checkout session
13
+ */
14
+ createCheckoutSession(request: CreateCheckoutSessionRequest): Promise<CheckoutSession>;
15
+ /**
16
+ * Get an existing checkout session
17
+ */
18
+ getCheckoutSession(sessionId: string): Promise<CheckoutSession>;
19
+ /**
20
+ * Update an existing checkout session
21
+ */
22
+ updateCheckoutSession(sessionId: string, request: Omit<UpdateCheckoutSessionRequest, 'session_id'>): Promise<CheckoutSession>;
23
+ /**
24
+ * Complete a checkout session with payment
25
+ */
26
+ completeCheckoutSession(sessionId: string, request: Omit<CompleteCheckoutSessionRequest, 'session_id'>): Promise<CheckoutSessionWithOrder>;
27
+ /**
28
+ * Cancel a checkout session
29
+ */
30
+ cancelCheckoutSession(sessionId: string): Promise<CheckoutSession>;
31
+ /**
32
+ * Delegate payment (PSP vault token)
33
+ */
34
+ delegatePayment(request: DelegatePaymentRequest): Promise<DelegatePaymentResponse>;
35
+ /**
36
+ * Health check
37
+ */
38
+ healthCheck(): Promise<{
39
+ status: string;
40
+ }>;
41
+ }
42
+ export declare class AcpApiError extends Error {
43
+ readonly type: string;
44
+ readonly code: string;
45
+ readonly param?: string;
46
+ readonly statusCode: number;
47
+ constructor(error: AcpError, statusCode: number);
48
+ }
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ /**
3
+ * StateSet ACP Handler - HTTP REST Client
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AcpApiError = exports.AcpHttpClient = void 0;
40
+ const https = __importStar(require("https"));
41
+ const http = __importStar(require("http"));
42
+ class AcpHttpClient {
43
+ constructor(config = {}) {
44
+ this.baseUrl = config.baseUrl || 'http://localhost:8080';
45
+ this.apiKey = config.apiKey || '';
46
+ this.timeout = config.timeout || 30000;
47
+ }
48
+ async request(method, path, body) {
49
+ const url = new URL(path, this.baseUrl);
50
+ const isHttps = url.protocol === 'https:';
51
+ const httpModule = isHttps ? https : http;
52
+ return new Promise((resolve, reject) => {
53
+ const options = {
54
+ method,
55
+ hostname: url.hostname,
56
+ port: url.port || (isHttps ? 443 : 80),
57
+ path: url.pathname + url.search,
58
+ headers: {
59
+ 'Content-Type': 'application/json',
60
+ ...(this.apiKey && { Authorization: `Bearer ${this.apiKey}` }),
61
+ },
62
+ timeout: this.timeout,
63
+ };
64
+ const req = httpModule.request(options, (res) => {
65
+ let data = '';
66
+ res.on('data', (chunk) => (data += chunk));
67
+ res.on('end', () => {
68
+ try {
69
+ const parsed = data ? JSON.parse(data) : {};
70
+ if (res.statusCode && res.statusCode >= 400) {
71
+ const error = parsed;
72
+ reject(new AcpApiError(error, res.statusCode));
73
+ }
74
+ else {
75
+ resolve(parsed);
76
+ }
77
+ }
78
+ catch (e) {
79
+ reject(new Error(`Failed to parse response: ${data}`));
80
+ }
81
+ });
82
+ });
83
+ req.on('error', reject);
84
+ req.on('timeout', () => {
85
+ req.destroy();
86
+ reject(new Error('Request timeout'));
87
+ });
88
+ if (body) {
89
+ req.write(JSON.stringify(body));
90
+ }
91
+ req.end();
92
+ });
93
+ }
94
+ /**
95
+ * Create a new checkout session
96
+ */
97
+ async createCheckoutSession(request) {
98
+ return this.request('POST', '/checkout_sessions', request);
99
+ }
100
+ /**
101
+ * Get an existing checkout session
102
+ */
103
+ async getCheckoutSession(sessionId) {
104
+ return this.request('GET', `/checkout_sessions/${sessionId}`);
105
+ }
106
+ /**
107
+ * Update an existing checkout session
108
+ */
109
+ async updateCheckoutSession(sessionId, request) {
110
+ return this.request('POST', `/checkout_sessions/${sessionId}`, request);
111
+ }
112
+ /**
113
+ * Complete a checkout session with payment
114
+ */
115
+ async completeCheckoutSession(sessionId, request) {
116
+ return this.request('POST', `/checkout_sessions/${sessionId}/complete`, request);
117
+ }
118
+ /**
119
+ * Cancel a checkout session
120
+ */
121
+ async cancelCheckoutSession(sessionId) {
122
+ return this.request('POST', `/checkout_sessions/${sessionId}/cancel`);
123
+ }
124
+ /**
125
+ * Delegate payment (PSP vault token)
126
+ */
127
+ async delegatePayment(request) {
128
+ return this.request('POST', '/agentic_commerce/delegate_payment', request);
129
+ }
130
+ /**
131
+ * Health check
132
+ */
133
+ async healthCheck() {
134
+ return this.request('GET', '/health');
135
+ }
136
+ }
137
+ exports.AcpHttpClient = AcpHttpClient;
138
+ class AcpApiError extends Error {
139
+ constructor(error, statusCode) {
140
+ super(error.message);
141
+ this.name = 'AcpApiError';
142
+ this.type = error.type;
143
+ this.code = error.code;
144
+ this.param = error.param;
145
+ this.statusCode = statusCode;
146
+ }
147
+ }
148
+ exports.AcpApiError = AcpApiError;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw2Q0FBK0I7QUFDL0IsMkNBQTZCO0FBYTdCLE1BQWEsYUFBYTtJQUt4QixZQUFZLFNBQTBCLEVBQUU7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLHVCQUF1QixDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRU8sS0FBSyxDQUFDLE9BQU8sQ0FDbkIsTUFBYyxFQUNkLElBQVksRUFDWixJQUFjO1FBRWQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQXdCO2dCQUNuQyxNQUFNO2dCQUNOLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtnQkFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFH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QixTQUFTLFdBQVcsRUFDMUMsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBaUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixNQUFNLEVBQ04sc0JBQXNCLFNBQVMsU0FBUyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsT0FBK0I7UUFFL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixNQUFNLEVBQ04sb0NBQW9DLEVBQ3BDLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFdBQVc7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQXFCLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0Y7QUF6SUQsc0NBeUlDO0FBRUQsTUFBYSxXQUFZLFNBQVEsS0FBSztJQU1wQyxZQUFZLEtBQWUsRUFBRSxVQUFrQjtRQUM3QyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQWRELGtDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0ZVNldCBBQ1AgSGFuZGxlciAtIEhUVFAgUkVTVCBDbGllbnRcbiAqL1xuXG5pbXBvcnQgKiBhcyBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IHtcbiAgQWNwQ2xpZW50Q29uZmlnLFxuICBBY3BFcnJvcixcbiAgQ2hlY2tvdXRTZXNzaW9uLFxuICBDaGVja291dFNlc3Npb25XaXRoT3JkZXIsXG4gIENyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QsXG4gIFVwZGF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QsXG4gIENvbXBsZXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdCxcbiAgRGVsZWdhdGVQYXltZW50UmVxdWVzdCxcbiAgRGVsZWdhdGVQYXltZW50UmVzcG9uc2UsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQWNwSHR0cENsaWVudCB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuICBwcml2YXRlIGFwaUtleTogc3RyaW5nO1xuICBwcml2YXRlIHRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFjcENsaWVudENvbmZpZyA9IHt9KSB7XG4gICAgdGhpcy5iYXNlVXJsID0gY29uZmlnLmJhc2VVcmwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MCc7XG4gICAgdGhpcy5hcGlLZXkgPSBjb25maWcuYXBpS2V5IHx8ICcnO1xuICAgIHRoaXMudGltZW91dCA9IGNvbmZpZy50aW1lb3V0IHx8IDMwMDAwO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0PFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBib2R5PzogdW5rbm93blxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHBhdGgsIHRoaXMuYmFzZVVybCk7XG4gICAgY29uc3QgaXNIdHRwcyA9IHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOic7XG4gICAgY29uc3QgaHR0cE1vZHVsZSA9IGlzSHR0cHMgPyBodHRwcyA6IGh0dHA7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uczogaHR0cC5SZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBob3N0bmFtZTogdXJsLmhvc3RuYW1lLFxuICAgICAgICBwb3J0OiB1cmwucG9ydCB8fCAoaXNIdHRwcyA/IDQ0MyA6IDgwKSxcbiAgICAgICAgcGF0aDogdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaCxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgLi4uKHRoaXMuYXBpS2V5ICYmIHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXBpS2V5fWAgfSksXG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlcSA9IGh0dHBNb2R1bGUucmVxdWVzdChvcHRpb25zLCAocmVzKSA9PiB7XG4gICAgICAgIGxldCBkYXRhID0gJyc7XG4gICAgICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICAgICAgcmVzLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IGRhdGEgPyBKU09OLnBhcnNlKGRhdGEpIDoge307XG4gICAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgJiYgcmVzLnN0YXR1c0NvZGUgPj0gNDAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcGFyc2VkIGFzIEFjcEVycm9yO1xuICAgICAgICAgICAgICByZWplY3QobmV3IEFjcEFwaUVycm9yKGVycm9yLCByZXMuc3RhdHVzQ29kZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShwYXJzZWQgYXMgVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlOiAke2RhdGF9YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXEub24oJ3RpbWVvdXQnLCAoKSA9PiB7XG4gICAgICAgIHJlcS5kZXN0cm95KCk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1JlcXVlc3QgdGltZW91dCcpKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICByZXEud3JpdGUoSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuICAgICAgfVxuICAgICAgcmVxLmVuZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBjaGVja291dCBzZXNzaW9uXG4gICAqL1xuICBhc3luYyBjcmVhdGVDaGVja291dFNlc3Npb24oXG4gICAgcmVxdWVzdDogQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdFxuICApOiBQcm9taXNlPENoZWNrb3V0U2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8Q2hlY2tvdXRTZXNzaW9uPignUE9TVCcsICcvY2hlY2tvdXRfc2Vzc2lvbnMnLCByZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZXhpc3RpbmcgY2hlY2tvdXQgc2Vzc2lvblxuICAgKi9cbiAgYXN5bmMgZ2V0Q2hlY2tvdXRTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTxDaGVja291dFNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PENoZWNrb3V0U2Vzc2lvbj4oJ0dFVCcsIGAvY2hlY2tvdXRfc2Vzc2lvbnMvJHtzZXNzaW9uSWR9YCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIGNoZWNrb3V0IHNlc3Npb25cbiAgICovXG4gIGFzeW5jIHVwZGF0ZUNoZWNrb3V0U2Vzc2lvbihcbiAgICBzZXNzaW9uSWQ6IHN0cmluZyxcbiAgICByZXF1ZXN0OiBPbWl0PFVwZGF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QsICdzZXNzaW9uX2lkJz5cbiAgKTogUHJvbWlzZTxDaGVja291dFNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PENoZWNrb3V0U2Vzc2lvbj4oXG4gICAgICAnUE9TVCcsXG4gICAgICBgL2NoZWNrb3V0X3Nlc3Npb25zLyR7c2Vzc2lvbklkfWAsXG4gICAgICByZXF1ZXN0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIGNoZWNrb3V0IHNlc3Npb24gd2l0aCBwYXltZW50XG4gICAqL1xuICBhc3luYyBjb21wbGV0ZUNoZWNrb3V0U2Vzc2lvbihcbiAgICBzZXNzaW9uSWQ6IHN0cmluZyxcbiAgICByZXF1ZXN0OiBPbWl0PENvbXBsZXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdCwgJ3Nlc3Npb25faWQnPlxuICApOiBQcm9taXNlPENoZWNrb3V0U2Vzc2lvbldpdGhPcmRlcj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8Q2hlY2tvdXRTZXNzaW9uV2l0aE9yZGVyPihcbiAgICAgICdQT1NUJyxcbiAgICAgIGAvY2hlY2tvdXRfc2Vzc2lvbnMvJHtzZXNzaW9uSWR9L2NvbXBsZXRlYCxcbiAgICAgIHJlcXVlc3RcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBhIGNoZWNrb3V0IHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGNhbmNlbENoZWNrb3V0U2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hlY2tvdXRTZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxDaGVja291dFNlc3Npb24+KFxuICAgICAgJ1BPU1QnLFxuICAgICAgYC9jaGVja291dF9zZXNzaW9ucy8ke3Nlc3Npb25JZH0vY2FuY2VsYFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZWdhdGUgcGF5bWVudCAoUFNQIHZhdWx0IHRva2VuKVxuICAgKi9cbiAgYXN5bmMgZGVsZWdhdGVQYXltZW50KFxuICAgIHJlcXVlc3Q6IERlbGVnYXRlUGF5bWVudFJlcXVlc3RcbiAgKTogUHJvbWlzZTxEZWxlZ2F0ZVBheW1lbnRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8RGVsZWdhdGVQYXltZW50UmVzcG9uc2U+KFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9hZ2VudGljX2NvbW1lcmNlL2RlbGVnYXRlX3BheW1lbnQnLFxuICAgICAgcmVxdWVzdFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSGVhbHRoIGNoZWNrXG4gICAqL1xuICBhc3luYyBoZWFsdGhDaGVjaygpOiBQcm9taXNlPHsgc3RhdHVzOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8eyBzdGF0dXM6IHN0cmluZyB9PignR0VUJywgJy9oZWFsdGgnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWNwQXBpRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwYXJhbT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihlcnJvcjogQWNwRXJyb3IsIHN0YXR1c0NvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKGVycm9yLm1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdBY3BBcGlFcnJvcic7XG4gICAgdGhpcy50eXBlID0gZXJyb3IudHlwZTtcbiAgICB0aGlzLmNvZGUgPSBlcnJvci5jb2RlO1xuICAgIHRoaXMucGFyYW0gPSBlcnJvci5wYXJhbTtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,37 @@
1
+ /**
2
+ * StateSet ACP Handler - Node.js Client
3
+ *
4
+ * Official Node.js bindings for the StateSet Agentic Commerce Protocol Handler.
5
+ * Supports both HTTP REST and gRPC transports.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { AcpHttpClient, AcpGrpcClient } from '@stateset/acp-client';
10
+ *
11
+ * // HTTP Client
12
+ * const httpClient = new AcpHttpClient({
13
+ * baseUrl: 'http://localhost:8080',
14
+ * apiKey: 'api_key_demo_123',
15
+ * });
16
+ *
17
+ * const session = await httpClient.createCheckoutSession({
18
+ * items: [{ id: 'prod_123', quantity: 1 }],
19
+ * });
20
+ *
21
+ * // gRPC Client
22
+ * const grpcClient = new AcpGrpcClient({
23
+ * grpcAddress: 'localhost:50051',
24
+ * apiKey: 'api_key_demo_123',
25
+ * });
26
+ * await grpcClient.connect();
27
+ *
28
+ * const session = await grpcClient.createCheckoutSession({
29
+ * items: [{ id: 'prod_123', quantity: 1 }],
30
+ * });
31
+ * ```
32
+ */
33
+ export { AcpHttpClient, AcpApiError } from './http-client';
34
+ export { AcpGrpcClient, AcpGrpcError } from './grpc-client';
35
+ export * from './types';
36
+ import { AcpHttpClient } from './http-client';
37
+ export default AcpHttpClient;