openxiangda-nest 2.0.0-alpha.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.
Files changed (50) hide show
  1. package/README.md +25 -0
  2. package/dist/application-credentials.d.ts +19 -0
  3. package/dist/application-credentials.d.ts.map +1 -0
  4. package/dist/application-credentials.js +158 -0
  5. package/dist/application-credentials.js.map +1 -0
  6. package/dist/assignee-provider.d.ts +34 -0
  7. package/dist/assignee-provider.d.ts.map +1 -0
  8. package/dist/assignee-provider.js +216 -0
  9. package/dist/assignee-provider.js.map +1 -0
  10. package/dist/authz.d.ts +17 -0
  11. package/dist/authz.d.ts.map +1 -0
  12. package/dist/authz.js +129 -0
  13. package/dist/authz.js.map +1 -0
  14. package/dist/data-api.d.ts +61 -0
  15. package/dist/data-api.d.ts.map +1 -0
  16. package/dist/data-api.js +122 -0
  17. package/dist/data-api.js.map +1 -0
  18. package/dist/events.d.ts +46 -0
  19. package/dist/events.d.ts.map +1 -0
  20. package/dist/events.js +359 -0
  21. package/dist/events.js.map +1 -0
  22. package/dist/health.d.ts +24 -0
  23. package/dist/health.d.ts.map +1 -0
  24. package/dist/health.js +81 -0
  25. package/dist/health.js.map +1 -0
  26. package/dist/index.d.ts +12 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +12 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/module.d.ts +6 -0
  31. package/dist/module.d.ts.map +1 -0
  32. package/dist/module.js +106 -0
  33. package/dist/module.js.map +1 -0
  34. package/dist/platform-client.d.ts +101 -0
  35. package/dist/platform-client.d.ts.map +1 -0
  36. package/dist/platform-client.js +250 -0
  37. package/dist/platform-client.js.map +1 -0
  38. package/dist/tokens.d.ts +4 -0
  39. package/dist/tokens.d.ts.map +1 -0
  40. package/dist/tokens.js +4 -0
  41. package/dist/tokens.js.map +1 -0
  42. package/dist/types.d.ts +71 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +2 -0
  45. package/dist/types.js.map +1 -0
  46. package/dist/workflow.d.ts +59 -0
  47. package/dist/workflow.d.ts.map +1 -0
  48. package/dist/workflow.js +84 -0
  49. package/dist/workflow.js.map +1 -0
  50. package/package.json +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz.js","sourceRoot":"","sources":["../src/authz.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { DataPage, DataAggregatePage, DataAggregateQuery, DataAuditPage, DataFileRef, DataFileUploadPlan, DataQuery, DataRecord, DataTransactionRequest, DataTransactionResult } from 'openxiangda-contracts';
2
+ import { OpenXiangdaApplicationCredentials } from './application-credentials.js';
3
+ import { OpenXiangdaPlatformClient } from './platform-client.js';
4
+ import type { OpenXiangdaHttpRequest } from './types.js';
5
+ export declare class OpenXiangdaDataApiService {
6
+ private readonly request;
7
+ private readonly platform;
8
+ constructor(request: OpenXiangdaHttpRequest, platform: OpenXiangdaPlatformClient);
9
+ query<T extends Record<string, unknown>>(resourceCode: string, query: DataQuery): Promise<DataPage<T>>;
10
+ get<T extends Record<string, unknown>>(resourceCode: string, id: string): Promise<DataRecord<T>>;
11
+ aggregate<T extends Record<string, unknown>>(resourceCode: string, query: DataAggregateQuery): Promise<DataAggregatePage<T>>;
12
+ audit(resourceCode: string, id: string, input?: {
13
+ limit?: number;
14
+ offset?: number;
15
+ }): Promise<DataAuditPage>;
16
+ initiateFileUpload(resourceCode: string, input: {
17
+ fieldCode: string;
18
+ fileName: string;
19
+ fileSize: number;
20
+ contentType?: string;
21
+ recordId?: string;
22
+ }): Promise<DataFileUploadPlan>;
23
+ completeFileUpload(resourceCode: string, fileId: string): Promise<DataFileRef>;
24
+ create<T extends Record<string, unknown>>(resourceCode: string, data: Record<string, unknown>): Promise<DataRecord<T>>;
25
+ update<T extends Record<string, unknown>>(resourceCode: string, id: string, input: {
26
+ expectedRevision: number;
27
+ data: Record<string, unknown>;
28
+ }): Promise<DataRecord<T>>;
29
+ delete<T extends Record<string, unknown>>(resourceCode: string, id: string, expectedRevision: number): Promise<DataRecord<T>>;
30
+ transaction(transaction: DataTransactionRequest): Promise<DataTransactionResult>;
31
+ private context;
32
+ }
33
+ /** Data API facade for Worker/Scheduler and other work without an HTTP request. */
34
+ export declare class OpenXiangdaApplicationDataApiService {
35
+ private readonly platform;
36
+ private readonly credentials;
37
+ constructor(platform: OpenXiangdaPlatformClient, credentials: OpenXiangdaApplicationCredentials);
38
+ query<T extends Record<string, unknown>>(resourceCode: string, query: DataQuery): Promise<DataPage<T>>;
39
+ get<T extends Record<string, unknown>>(resourceCode: string, id: string): Promise<DataRecord<T>>;
40
+ aggregate<T extends Record<string, unknown>>(resourceCode: string, query: DataAggregateQuery): Promise<DataAggregatePage<T>>;
41
+ audit(resourceCode: string, id: string, input?: {
42
+ limit?: number;
43
+ offset?: number;
44
+ }): Promise<DataAuditPage>;
45
+ initiateFileUpload(resourceCode: string, input: {
46
+ fieldCode: string;
47
+ fileName: string;
48
+ fileSize: number;
49
+ contentType?: string;
50
+ recordId?: string;
51
+ }): Promise<DataFileUploadPlan>;
52
+ completeFileUpload(resourceCode: string, fileId: string): Promise<DataFileRef>;
53
+ create<T extends Record<string, unknown>>(resourceCode: string, data: Record<string, unknown>): Promise<DataRecord<T>>;
54
+ update<T extends Record<string, unknown>>(resourceCode: string, id: string, input: {
55
+ expectedRevision: number;
56
+ data: Record<string, unknown>;
57
+ }): Promise<DataRecord<T>>;
58
+ delete<T extends Record<string, unknown>>(resourceCode: string, id: string, expectedRevision: number): Promise<DataRecord<T>>;
59
+ transaction(transaction: DataTransactionRequest): Promise<DataTransactionResult>;
60
+ }
61
+ //# sourceMappingURL=data-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-api.d.ts","sourceRoot":"","sources":["../src/data-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Inject, Injectable, Scope, UnauthorizedException } from '@nestjs/common';
14
+ import { REQUEST } from '@nestjs/core';
15
+ import { OpenXiangdaApplicationCredentials } from './application-credentials.js';
16
+ import { OpenXiangdaPlatformClient } from './platform-client.js';
17
+ let OpenXiangdaDataApiService = class OpenXiangdaDataApiService {
18
+ request;
19
+ platform;
20
+ constructor(request, platform) {
21
+ this.request = request;
22
+ this.platform = platform;
23
+ }
24
+ async query(resourceCode, query) {
25
+ const context = this.context();
26
+ return await this.platform.queryData(context.authorization, context.roleSessionId, resourceCode, query);
27
+ }
28
+ async get(resourceCode, id) {
29
+ const context = this.context();
30
+ return await this.platform.getData(context.authorization, context.roleSessionId, resourceCode, id);
31
+ }
32
+ async aggregate(resourceCode, query) {
33
+ const context = this.context();
34
+ return await this.platform.aggregateData(context.authorization, context.roleSessionId, resourceCode, query);
35
+ }
36
+ async audit(resourceCode, id, input = {}) {
37
+ const context = this.context();
38
+ return await this.platform.dataAudit(context.authorization, context.roleSessionId, resourceCode, id, input);
39
+ }
40
+ async initiateFileUpload(resourceCode, input) {
41
+ const context = this.context();
42
+ return await this.platform.initiateDataFileUpload(context.authorization, context.roleSessionId, resourceCode, input);
43
+ }
44
+ async completeFileUpload(resourceCode, fileId) {
45
+ const context = this.context();
46
+ return await this.platform.completeDataFileUpload(context.authorization, context.roleSessionId, resourceCode, fileId);
47
+ }
48
+ async create(resourceCode, data) {
49
+ const context = this.context();
50
+ return await this.platform.createData(context.authorization, context.roleSessionId, resourceCode, data);
51
+ }
52
+ async update(resourceCode, id, input) {
53
+ const context = this.context();
54
+ return await this.platform.updateData(context.authorization, context.roleSessionId, resourceCode, id, input);
55
+ }
56
+ async delete(resourceCode, id, expectedRevision) {
57
+ const context = this.context();
58
+ return await this.platform.deleteData(context.authorization, context.roleSessionId, resourceCode, id, expectedRevision);
59
+ }
60
+ async transaction(transaction) {
61
+ const context = this.context();
62
+ return await this.platform.transactData(context.authorization, context.roleSessionId, transaction);
63
+ }
64
+ context() {
65
+ if (!this.request.openxiangda) {
66
+ throw new UnauthorizedException('OPENXIANGDA_CONTEXT_NOT_VERIFIED');
67
+ }
68
+ return this.request.openxiangda;
69
+ }
70
+ };
71
+ OpenXiangdaDataApiService = __decorate([
72
+ Injectable({ scope: Scope.REQUEST }),
73
+ __param(0, Inject(REQUEST)),
74
+ __metadata("design:paramtypes", [Object, OpenXiangdaPlatformClient])
75
+ ], OpenXiangdaDataApiService);
76
+ export { OpenXiangdaDataApiService };
77
+ /** Data API facade for Worker/Scheduler and other work without an HTTP request. */
78
+ let OpenXiangdaApplicationDataApiService = class OpenXiangdaApplicationDataApiService {
79
+ platform;
80
+ credentials;
81
+ constructor(platform, credentials) {
82
+ this.platform = platform;
83
+ this.credentials = credentials;
84
+ }
85
+ async query(resourceCode, query) {
86
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.queryData(authorization, null, resourceCode, query));
87
+ }
88
+ async get(resourceCode, id) {
89
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.getData(authorization, null, resourceCode, id));
90
+ }
91
+ async aggregate(resourceCode, query) {
92
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.aggregateData(authorization, null, resourceCode, query));
93
+ }
94
+ async audit(resourceCode, id, input = {}) {
95
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.dataAudit(authorization, null, resourceCode, id, input));
96
+ }
97
+ async initiateFileUpload(resourceCode, input) {
98
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.initiateDataFileUpload(authorization, null, resourceCode, input));
99
+ }
100
+ async completeFileUpload(resourceCode, fileId) {
101
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.completeDataFileUpload(authorization, null, resourceCode, fileId));
102
+ }
103
+ async create(resourceCode, data) {
104
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.createData(authorization, null, resourceCode, data));
105
+ }
106
+ async update(resourceCode, id, input) {
107
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.updateData(authorization, null, resourceCode, id, input));
108
+ }
109
+ async delete(resourceCode, id, expectedRevision) {
110
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.deleteData(authorization, null, resourceCode, id, expectedRevision));
111
+ }
112
+ async transaction(transaction) {
113
+ return await this.credentials.withAuthorization(async (authorization) => this.platform.transactData(authorization, null, transaction));
114
+ }
115
+ };
116
+ OpenXiangdaApplicationDataApiService = __decorate([
117
+ Injectable(),
118
+ __metadata("design:paramtypes", [OpenXiangdaPlatformClient,
119
+ OpenXiangdaApplicationCredentials])
120
+ ], OpenXiangdaApplicationDataApiService);
121
+ export { OpenXiangdaApplicationDataApiService };
122
+ //# sourceMappingURL=data-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-api.js","sourceRoot":"","sources":["../src/data-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type CloudEvent } from 'openxiangda-contracts';
2
+ import type { OpenXiangdaEventReceiptContext, OpenXiangdaEventReceiptStore, OpenXiangdaModuleOptions } from './types.js';
3
+ export interface OpenXiangdaEventAcceptResult<T = unknown> {
4
+ accepted: true;
5
+ duplicate: boolean;
6
+ eventId: string;
7
+ result?: T;
8
+ }
9
+ export declare class InMemoryOpenXiangdaEventReceiptStore implements OpenXiangdaEventReceiptStore {
10
+ private readonly receipts;
11
+ claim(receipt: OpenXiangdaEventReceiptContext): Promise<'claimed' | 'duplicate' | 'busy'>;
12
+ complete(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
13
+ release(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
14
+ private key;
15
+ }
16
+ /**
17
+ * Production receipt store backed by the OpenXiangda platform database.
18
+ * The event subscription secret authenticates every command; no app OAuth
19
+ * credential or local database is required.
20
+ */
21
+ export declare class PlatformOpenXiangdaEventReceiptStore implements OpenXiangdaEventReceiptStore {
22
+ private readonly options;
23
+ private readonly claimTokens;
24
+ constructor(options: OpenXiangdaModuleOptions);
25
+ claim(receipt: OpenXiangdaEventReceiptContext): Promise<'claimed' | 'duplicate' | 'busy'>;
26
+ complete(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
27
+ release(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
28
+ private finish;
29
+ private delay;
30
+ private execute;
31
+ private signatureContent;
32
+ private receiptUrl;
33
+ private signingSecrets;
34
+ private key;
35
+ }
36
+ export declare class OpenXiangdaEventReceiver {
37
+ private readonly options;
38
+ private readonly receipts;
39
+ constructor(options: OpenXiangdaModuleOptions, receipts: OpenXiangdaEventReceiptStore);
40
+ accept<T>(headers: Record<string, string | string[] | undefined>, rawBody: Buffer | string, handler: (event: CloudEvent) => Promise<T> | T): Promise<OpenXiangdaEventAcceptResult<T>>;
41
+ private parseEvent;
42
+ private assertTimestamp;
43
+ private assertSignature;
44
+ private header;
45
+ }
46
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EACV,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,4BAA4B,CAAC,CAAC,GAAG,OAAO;IACvD,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ;AAED,qBACa,oCAAqC,YAAW,4BAA4B;IACvF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiD;IAEpE,KAAK,CACT,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IAStC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,OAAO,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,OAAO,CAAC,GAAG;CAGZ;AAED;;;;GAIG;AACH,qBACa,oCACX,YAAW,4BAA4B;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;gBAE5B,OAAO,EAAE,wBAAwB;IAExD,KAAK,CACT,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IAiBtC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,OAAO,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;YAQvD,MAAM;YA2CN,KAAK;YAKL,OAAO;IAgFrB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,GAAG;CAGZ;AAED,qBACa,wBAAwB;IAGjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,OAAO,EAAE,wBAAwB,EAEjC,QAAQ,EAAE,4BAA4B;IAGnD,MAAM,CAAC,CAAC,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7C,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;IA0E3C,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,MAAM;CAWf"}
package/dist/events.js ADDED
@@ -0,0 +1,359 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { createHmac, timingSafeEqual } from 'node:crypto';
14
+ import { BadRequestException, Inject, Injectable, ServiceUnavailableException, UnauthorizedException } from '@nestjs/common';
15
+ import { SCHEMA_VERSIONS, } from 'openxiangda-contracts';
16
+ import { OPENXIANGDA_EVENT_RECEIPT_STORE, OPENXIANGDA_MODULE_OPTIONS } from './tokens.js';
17
+ let InMemoryOpenXiangdaEventReceiptStore = class InMemoryOpenXiangdaEventReceiptStore {
18
+ receipts = new Map();
19
+ async claim(receipt) {
20
+ const key = this.key(receipt);
21
+ const current = this.receipts.get(key);
22
+ if (current === 'processing')
23
+ return 'busy';
24
+ if (current === 'succeeded')
25
+ return 'duplicate';
26
+ this.receipts.set(key, 'processing');
27
+ return 'claimed';
28
+ }
29
+ async complete(receipt) {
30
+ this.receipts.set(this.key(receipt), 'succeeded');
31
+ }
32
+ async release(receipt) {
33
+ const key = this.key(receipt);
34
+ if (this.receipts.get(key) === 'processing')
35
+ this.receipts.delete(key);
36
+ }
37
+ key(receipt) {
38
+ return `${receipt.tenantId}:${receipt.appCode}:${receipt.environmentKey}:${receipt.subscriptionCode}:${receipt.eventId}`;
39
+ }
40
+ };
41
+ InMemoryOpenXiangdaEventReceiptStore = __decorate([
42
+ Injectable()
43
+ ], InMemoryOpenXiangdaEventReceiptStore);
44
+ export { InMemoryOpenXiangdaEventReceiptStore };
45
+ /**
46
+ * Production receipt store backed by the OpenXiangda platform database.
47
+ * The event subscription secret authenticates every command; no app OAuth
48
+ * credential or local database is required.
49
+ */
50
+ let PlatformOpenXiangdaEventReceiptStore = class PlatformOpenXiangdaEventReceiptStore {
51
+ options;
52
+ claimTokens = new Map();
53
+ constructor(options) {
54
+ this.options = options;
55
+ }
56
+ async claim(receipt) {
57
+ const result = await this.execute(receipt, 'claim');
58
+ if (result.outcome === 'claimed' && result.claimToken) {
59
+ this.claimTokens.set(this.key(receipt), result.claimToken);
60
+ return 'claimed';
61
+ }
62
+ if (result.outcome === 'duplicate' && result.status === 'succeeded') {
63
+ return 'duplicate';
64
+ }
65
+ if (result.outcome === 'duplicate' && result.status === 'processing') {
66
+ return 'busy';
67
+ }
68
+ throw new ServiceUnavailableException('平台返回了不一致的事件回执领取状态');
69
+ }
70
+ async complete(receipt) {
71
+ await this.finish(receipt, 'complete');
72
+ this.claimTokens.delete(this.key(receipt));
73
+ }
74
+ async release(receipt) {
75
+ try {
76
+ await this.finish(receipt, 'release');
77
+ }
78
+ finally {
79
+ this.claimTokens.delete(this.key(receipt));
80
+ }
81
+ }
82
+ async finish(receipt, action) {
83
+ const key = this.key(receipt);
84
+ const claimToken = this.claimTokens.get(key);
85
+ if (!claimToken) {
86
+ throw new ServiceUnavailableException('当前事件缺少平台回执 claimToken');
87
+ }
88
+ const maxAttempts = Math.max(1, Math.min(5, Math.floor(this.options.eventReceiptMaxAttempts || 3)));
89
+ const baseDelay = Math.max(0, Math.min(2_000, Math.floor(this.options.eventReceiptRetryDelayMs ?? 150)));
90
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
91
+ try {
92
+ const result = await this.execute(receipt, action, claimToken);
93
+ const expectedOutcome = action === 'complete' ? 'completed' : 'released';
94
+ if (result.outcome !== expectedOutcome &&
95
+ !(action === 'release' && result.outcome === 'completed')) {
96
+ throw new ServiceUnavailableException(`平台事件回执 ${action} 返回状态不一致`);
97
+ }
98
+ return;
99
+ }
100
+ catch (error) {
101
+ if (!(error instanceof ServiceUnavailableException) ||
102
+ attempt >= maxAttempts) {
103
+ throw error;
104
+ }
105
+ await this.delay(baseDelay * 2 ** (attempt - 1));
106
+ }
107
+ }
108
+ }
109
+ async delay(milliseconds) {
110
+ if (milliseconds <= 0)
111
+ return;
112
+ await new Promise(resolve => setTimeout(resolve, milliseconds));
113
+ }
114
+ async execute(receipt, action, claimToken) {
115
+ const secret = this.signingSecrets(receipt.subscriptionCode)[0];
116
+ if (!secret) {
117
+ throw new UnauthorizedException('事件订阅签名密钥未配置');
118
+ }
119
+ const command = {
120
+ schemaVersion: SCHEMA_VERSIONS.eventReceiptCommand,
121
+ action,
122
+ ...receipt,
123
+ ...(claimToken ? { claimToken } : {}),
124
+ };
125
+ const timestamp = String(Math.floor(Date.now() / 1000));
126
+ const signature = createHmac('sha256', secret)
127
+ .update(this.signatureContent(command, timestamp))
128
+ .digest('hex');
129
+ const controller = new AbortController();
130
+ const timeout = setTimeout(() => controller.abort(), Math.max(1_000, this.options.requestTimeoutMs || 10_000));
131
+ let response;
132
+ try {
133
+ const fetcher = this.options.fetch || globalThis.fetch;
134
+ response = await fetcher(this.receiptUrl(), {
135
+ method: 'POST',
136
+ headers: {
137
+ 'Content-Type': 'application/json',
138
+ 'X-OpenXiangda-Timestamp': timestamp,
139
+ 'X-OpenXiangda-Signature': `v1=${signature}`,
140
+ },
141
+ body: JSON.stringify(command),
142
+ signal: controller.signal,
143
+ });
144
+ }
145
+ catch (error) {
146
+ throw new ServiceUnavailableException(error instanceof Error && error.name === 'AbortError'
147
+ ? '平台事件回执请求超时'
148
+ : '平台事件回执请求失败');
149
+ }
150
+ finally {
151
+ clearTimeout(timeout);
152
+ }
153
+ let envelope;
154
+ try {
155
+ envelope = (await response.json());
156
+ }
157
+ catch {
158
+ throw new ServiceUnavailableException('平台事件回执返回的不是有效 JSON');
159
+ }
160
+ const code = Number(envelope.code ?? response.status);
161
+ if (!response.ok || code >= 400) {
162
+ const message = String(envelope.errorCode || envelope.message || '').trim() ||
163
+ `平台事件回执请求失败 (${response.status})`;
164
+ if (response.status === 401 || response.status === 403) {
165
+ throw new UnauthorizedException(message);
166
+ }
167
+ throw new ServiceUnavailableException(message);
168
+ }
169
+ const result = envelope.data;
170
+ if (!result ||
171
+ result.schemaVersion !== SCHEMA_VERSIONS.eventReceiptResult ||
172
+ result.eventId !== receipt.eventId ||
173
+ result.deliveryId !== receipt.deliveryId ||
174
+ !Number.isInteger(result.attempts)) {
175
+ throw new ServiceUnavailableException('平台事件回执响应不符合 v2 协议');
176
+ }
177
+ return result;
178
+ }
179
+ signatureContent(command, timestamp) {
180
+ return [
181
+ SCHEMA_VERSIONS.eventReceiptCommand,
182
+ timestamp,
183
+ command.action,
184
+ command.tenantId,
185
+ command.appCode,
186
+ command.environmentKey,
187
+ command.subscriptionCode,
188
+ command.eventId,
189
+ command.deliveryId,
190
+ command.claimToken || '',
191
+ ].join('\n');
192
+ }
193
+ receiptUrl() {
194
+ return new URL('openxiangda-api/v2/event-receipts', this.options.platformBaseUrl.endsWith('/')
195
+ ? this.options.platformBaseUrl
196
+ : `${this.options.platformBaseUrl}/`).toString();
197
+ }
198
+ signingSecrets(subscriptionCode) {
199
+ const configured = this.options.eventSigningSecrets?.[subscriptionCode] ||
200
+ this.options.eventSigningSecret;
201
+ return (Array.isArray(configured) ? configured : [configured])
202
+ .map(secret => String(secret || '').trim())
203
+ .filter(Boolean);
204
+ }
205
+ key(receipt) {
206
+ return `${receipt.tenantId}:${receipt.appCode}:${receipt.environmentKey}:${receipt.subscriptionCode}:${receipt.eventId}`;
207
+ }
208
+ };
209
+ PlatformOpenXiangdaEventReceiptStore = __decorate([
210
+ Injectable(),
211
+ __metadata("design:paramtypes", [Object])
212
+ ], PlatformOpenXiangdaEventReceiptStore);
213
+ export { PlatformOpenXiangdaEventReceiptStore };
214
+ let OpenXiangdaEventReceiver = class OpenXiangdaEventReceiver {
215
+ options;
216
+ receipts;
217
+ constructor(options, receipts) {
218
+ this.options = options;
219
+ this.receipts = receipts;
220
+ }
221
+ async accept(headers, rawBody, handler) {
222
+ const body = Buffer.isBuffer(rawBody)
223
+ ? rawBody.toString('utf8')
224
+ : String(rawBody || '');
225
+ if (!body)
226
+ throw new BadRequestException('事件 raw body 不能为空');
227
+ const event = this.parseEvent(body);
228
+ const subscriptionCode = this.header(headers, 'x-openxiangda-subscription-code');
229
+ const timestamp = this.header(headers, 'x-openxiangda-timestamp');
230
+ const signature = this.header(headers, 'x-openxiangda-signature');
231
+ const deliveryId = this.header(headers, 'x-openxiangda-delivery-id');
232
+ this.assertTimestamp(timestamp);
233
+ this.assertSignature(subscriptionCode, timestamp, signature, body);
234
+ if (event.appcode !== this.options.appCode) {
235
+ throw new UnauthorizedException('事件 appCode 与当前应用不一致');
236
+ }
237
+ if (event.environment !== this.options.environmentId) {
238
+ throw new UnauthorizedException('事件 environment 与当前环境不一致');
239
+ }
240
+ const receipt = {
241
+ tenantId: event.tenantid,
242
+ appCode: event.appcode,
243
+ environmentKey: event.environment,
244
+ subscriptionCode,
245
+ eventId: event.id,
246
+ deliveryId,
247
+ };
248
+ const claim = await this.receipts.claim(receipt);
249
+ if (claim === 'duplicate') {
250
+ return { accepted: true, duplicate: true, eventId: event.id };
251
+ }
252
+ if (claim === 'busy') {
253
+ throw new ServiceUnavailableException('事件已由另一个实例处理中,请稍后重试');
254
+ }
255
+ let result;
256
+ try {
257
+ result = await handler(event);
258
+ }
259
+ catch (handlerError) {
260
+ try {
261
+ await this.receipts.release(receipt);
262
+ }
263
+ catch (receiptError) {
264
+ const combined = new ServiceUnavailableException({
265
+ status: 'event_receipt_release_failed',
266
+ message: '业务处理失败,且平台事件回执释放失败',
267
+ handlerError: handlerError instanceof Error
268
+ ? handlerError.message
269
+ : String(handlerError),
270
+ receiptError: receiptError instanceof Error
271
+ ? receiptError.message
272
+ : String(receiptError),
273
+ });
274
+ combined.cause = handlerError;
275
+ throw combined;
276
+ }
277
+ throw handlerError;
278
+ }
279
+ // The handler has already committed its side effects. Completion is
280
+ // idempotent and retried by the receipt store; never release here, or a
281
+ // transient acknowledgement failure would invite immediate re-execution.
282
+ await this.receipts.complete(receipt);
283
+ return {
284
+ accepted: true,
285
+ duplicate: false,
286
+ eventId: event.id,
287
+ ...(result === undefined ? {} : { result })
288
+ };
289
+ }
290
+ parseEvent(body) {
291
+ let value;
292
+ try {
293
+ value = JSON.parse(body);
294
+ }
295
+ catch {
296
+ throw new BadRequestException('事件 body 不是有效 JSON');
297
+ }
298
+ const event = value;
299
+ if (!event ||
300
+ event.specversion !== '1.0' ||
301
+ !String(event.id || '').trim() ||
302
+ !String(event.type || '').trim() ||
303
+ !String(event.source || '').trim() ||
304
+ !String(event.tenantid || '').trim() ||
305
+ !String(event.appcode || '').trim() ||
306
+ !String(event.environment || '').trim() ||
307
+ !event.data ||
308
+ typeof event.data !== 'object') {
309
+ throw new BadRequestException('事件不符合 CloudEvents 1.0 协议');
310
+ }
311
+ return event;
312
+ }
313
+ assertTimestamp(value) {
314
+ const timestamp = Number(value);
315
+ const maxAgeSeconds = Math.max(30, this.options.eventMaxAgeSeconds || 300);
316
+ if (!Number.isSafeInteger(timestamp) ||
317
+ Math.abs(Math.floor(Date.now() / 1000) - timestamp) > maxAgeSeconds) {
318
+ throw new UnauthorizedException('事件签名时间戳无效或已过期');
319
+ }
320
+ }
321
+ assertSignature(subscriptionCode, timestamp, value, body) {
322
+ const configured = this.options.eventSigningSecrets?.[subscriptionCode] ||
323
+ this.options.eventSigningSecret;
324
+ const secrets = (Array.isArray(configured) ? configured : [configured])
325
+ .map(secret => String(secret || '').trim())
326
+ .filter(Boolean);
327
+ if (!secrets.length) {
328
+ throw new UnauthorizedException('事件订阅签名密钥未配置');
329
+ }
330
+ const actual = value.startsWith('v1=') ? value.slice(3) : '';
331
+ const actualBuffer = Buffer.from(actual, 'hex');
332
+ const valid = secrets.some(secret => {
333
+ const expectedBuffer = Buffer.from(createHmac('sha256', secret)
334
+ .update(`${timestamp}.${body}`)
335
+ .digest('hex'), 'hex');
336
+ return (actualBuffer.length === expectedBuffer.length &&
337
+ timingSafeEqual(actualBuffer, expectedBuffer));
338
+ });
339
+ if (!valid) {
340
+ throw new UnauthorizedException('事件签名无效');
341
+ }
342
+ }
343
+ header(headers, name) {
344
+ const value = headers[name] ?? headers[name.toLowerCase()];
345
+ const normalized = Array.isArray(value) ? value[0] : value;
346
+ if (!String(normalized || '').trim()) {
347
+ throw new UnauthorizedException(`缺少事件头 ${name}`);
348
+ }
349
+ return String(normalized).trim();
350
+ }
351
+ };
352
+ OpenXiangdaEventReceiver = __decorate([
353
+ Injectable(),
354
+ __param(0, Inject(OPENXIANGDA_MODULE_OPTIONS)),
355
+ __param(1, Inject(OPENXIANGDA_EVENT_RECEIPT_STORE)),
356
+ __metadata("design:paramtypes", [Object, Object])
357
+ ], OpenXiangdaEventReceiver);
358
+ export { OpenXiangdaEventReceiver };
359
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}